From 36a818bb3a80f450e718bb59a633b88046e5210f Mon Sep 17 00:00:00 2001 From: Matthew Zeitlin <37011898+mzeitlin11@users.noreply.github.com> Date: Thu, 16 Sep 2021 18:59:27 -0400 Subject: [PATCH 1/3] Backport PR #43608: REGR: spearman corr raising on 32-bit --- doc/source/whatsnew/v1.3.4.rst | 2 ++ pandas/tests/frame/methods/test_cov_corr.py | 3 --- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/doc/source/whatsnew/v1.3.4.rst b/doc/source/whatsnew/v1.3.4.rst index 519a3ea711f54..4bbd44b395a35 100644 --- a/doc/source/whatsnew/v1.3.4.rst +++ b/doc/source/whatsnew/v1.3.4.rst @@ -15,6 +15,8 @@ including other versions of pandas. Fixed regressions ~~~~~~~~~~~~~~~~~ - Fixed regression in :meth:`merge` with integer and ``NaN`` keys failing with ``outer`` merge (:issue:`43550`) +- Fixed performance regression in :meth:`MultiIndex.equals` (:issue:`43549`) +- Fixed regression in :meth:`DataFrame.corr` raising ``ValueError`` with ``method="spearman`` on 32-bit platforms (:issue:`43588`) - .. --------------------------------------------------------------------------- diff --git a/pandas/tests/frame/methods/test_cov_corr.py b/pandas/tests/frame/methods/test_cov_corr.py index c259902ec2498..3dbf49df72558 100644 --- a/pandas/tests/frame/methods/test_cov_corr.py +++ b/pandas/tests/frame/methods/test_cov_corr.py @@ -100,7 +100,6 @@ def test_corr_scipy_method(self, float_frame, method): # --------------------------------------------------------------------- - @td.skip_if_no_scipy def test_corr_non_numeric(self, float_string_frame): # exclude non-numeric types result = float_string_frame.corr() @@ -125,11 +124,9 @@ def test_corr_nooverlap(self, meth): assert rs.loc["B", "B"] == 1 assert isna(rs.loc["C", "C"]) - @td.skip_if_no_scipy @pytest.mark.parametrize("meth", ["pearson", "spearman"]) def test_corr_constant(self, meth): # constant --> all NA - df = DataFrame( { "A": [1, 1, 1, np.nan, np.nan, np.nan], From 87a99b0ca4ecd14477588e0a4a1243ccba161c57 Mon Sep 17 00:00:00 2001 From: Matthew Zeitlin Date: Thu, 16 Sep 2021 19:24:43 -0400 Subject: [PATCH 2/3] int64 -> intp --- pandas/_libs/algos.pyx | 6 +- pandas/_libs/sparse.html | 10324 ++++++++ pandas/_libs/sparse_op_helper.html | 33878 +++++++++++++++++++++++++++ 3 files changed, 44205 insertions(+), 3 deletions(-) create mode 100644 pandas/_libs/sparse.html create mode 100644 pandas/_libs/sparse_op_helper.html diff --git a/pandas/_libs/algos.pyx b/pandas/_libs/algos.pyx index f619f09f85e66..d574df772d7e2 100644 --- a/pandas/_libs/algos.pyx +++ b/pandas/_libs/algos.pyx @@ -389,11 +389,11 @@ def nancorr_spearman(ndarray[float64_t, ndim=2] mat, Py_ssize_t minp=1) -> ndarr int64_t nobs = 0 bint no_nans float64_t vx, vy, sumx, sumxx, sumyy, mean, divisor - const int64_t[:] labels_n, labels_nobs + const intp_t[:] labels_n, labels_nobs N, K = (mat).shape # For compatibility when calling rank_1d - labels_n = np.zeros(N, dtype=np.int64) + labels_n = np.zeros(N, dtype=np.intp) # Handle the edge case where we know all results will be nan # to keep conditional logic inside loop simpler @@ -451,7 +451,7 @@ def nancorr_spearman(ndarray[float64_t, ndim=2] mat, Py_ssize_t minp=1) -> ndarr with gil: # We need to slice back to nobs because rank_1d will # require arrays of nobs length - labels_nobs = np.zeros(nobs, dtype=np.int64) + labels_nobs = np.zeros(nobs, dtype=np.intp) rankedx = rank_1d(np.array(maskedx)[:nobs], labels=labels_nobs) rankedy = rank_1d(np.array(maskedy)[:nobs], diff --git a/pandas/_libs/sparse.html b/pandas/_libs/sparse.html new file mode 100644 index 0000000000000..e027abde9657e --- /dev/null +++ b/pandas/_libs/sparse.html @@ -0,0 +1,10324 @@ + + + + + + Cython: sparse.pyx + + + +

Generated by Cython 0.29.24

+

+ Yellow lines hint at Python interaction.
+ Click on a line that starts with a "+" to see the C code that Cython generated for it. +

+

Raw output: sparse.c

+
+001: import cython
+
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+002: import numpy as np
+
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
 003: 
+
 004: cimport numpy as cnp
+
 005: from numpy cimport (
+
 006:     float32_t,
+
 007:     float64_t,
+
 008:     int8_t,
+
 009:     int16_t,
+
 010:     int32_t,
+
 011:     int64_t,
+
 012:     ndarray,
+
 013:     uint8_t,
+
 014: )
+
 015: 
+
+016: cnp.import_array()
+
  __pyx_t_2 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 16, __pyx_L1_error)
+
 017: 
+
 018: 
+
 019: # -----------------------------------------------------------------------------
+
 020: # Preamble stuff
+
 021: 
+
+022: cdef float64_t NaN = <float64_t>np.NaN
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_NaN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 22, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_4 == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 22, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_6pandas_5_libs_6sparse_NaN = ((__pyx_t_5numpy_float64_t)__pyx_t_4);
+
+023: cdef float64_t INF = <float64_t>np.inf
+
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_inf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_4 == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 23, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_6pandas_5_libs_6sparse_INF = ((__pyx_t_5numpy_float64_t)__pyx_t_4);
+
 024: 
+
 025: # -----------------------------------------------------------------------------
+
 026: 
+
 027: 
+
+028: cdef class SparseIndex:
+
struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex {
+  PyObject_HEAD
+};
+
+
 029:     """
+
 030:     Abstract superclass for sparse index types.
+
 031:     """
+
 032: 
+
+033:     def __init__(self):
+
/* Python wrapper */
+static int __pyx_pw_6pandas_5_libs_6sparse_11SparseIndex_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_6pandas_5_libs_6sparse_11SparseIndex_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
+    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
+  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_11SparseIndex___init__(((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_6pandas_5_libs_6sparse_11SparseIndex___init__(CYTHON_UNUSED struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_self) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.SparseIndex.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+034:         raise NotImplementedError
+
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+  __PYX_ERR(0, 34, __pyx_L1_error)
+
 035: 
+
 036: 
+
+037: cdef class IntIndex(SparseIndex):
+
struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex {
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex __pyx_base;
+  struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *__pyx_vtab;
+  Py_ssize_t length;
+  Py_ssize_t npoints;
+  PyArrayObject *indices;
+};
+/* … */
+struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *(*intersect)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *, int __pyx_skip_dispatch);
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *(*make_union)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *, int __pyx_skip_dispatch);
+  __pyx_t_5numpy_int32_t (*lookup)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, Py_ssize_t, int __pyx_skip_dispatch);
+  PyArrayObject *(*lookup_array)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, PyArrayObject *, int __pyx_skip_dispatch);
+  PyArrayObject *(*reindex)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, PyArrayObject *, __pyx_t_5numpy_float64_t, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *, int __pyx_skip_dispatch);
+  PyObject *(*put)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, PyArrayObject *, PyArrayObject *, PyObject *, int __pyx_skip_dispatch);
+  PyObject *(*take)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, PyArrayObject *, PyArrayObject *, int __pyx_skip_dispatch);
+};
+static struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *__pyx_vtabptr_6pandas_5_libs_6sparse_IntIndex;
+
+
 038:     """
+
 039:     Object for holding exact integer sparse indexing information
+
 040: 
+
 041:     Parameters
+
 042:     ----------
+
 043:     length : integer
+
 044:     indices : array-like
+
 045:         Contains integers corresponding to the indices.
+
 046:     check_integrity : bool, default=True
+
 047:         Check integrity of the input.
+
 048:     """
+
 049: 
+
 050:     cdef readonly:
+
+051:         Py_ssize_t length, npoints
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_6length_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_6length_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_6length___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_6length___get__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.length.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_7npoints_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_7npoints_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_7npoints___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_7npoints___get__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.npoints.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+052:         ndarray indices
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_7indices_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_7indices_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_7indices___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_7indices___get__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->indices));
+  __pyx_r = ((PyObject *)__pyx_v_self->indices);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 053: 
+
+054:     def __init__(self, Py_ssize_t length, indices, bint check_integrity=True):
+
/* Python wrapper */
+static int __pyx_pw_6pandas_5_libs_6sparse_8IntIndex_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_6pandas_5_libs_6sparse_8IntIndex_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  Py_ssize_t __pyx_v_length;
+  PyObject *__pyx_v_indices = 0;
+  int __pyx_v_check_integrity;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_length,&__pyx_n_s_indices,&__pyx_n_s_check_integrity,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_length)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_indices)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); __PYX_ERR(0, 54, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (kw_args > 0) {
+          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_check_integrity);
+          if (value) { values[2] = value; kw_args--; }
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 54, __pyx_L3_error)
+      }
+    } else {
+      switch (PyTuple_GET_SIZE(__pyx_args)) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        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_length = __Pyx_PyIndex_AsSsize_t(values[0]); if (unlikely((__pyx_v_length == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 54, __pyx_L3_error)
+    __pyx_v_indices = values[1];
+    if (values[2]) {
+      __pyx_v_check_integrity = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_check_integrity == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 54, __pyx_L3_error)
+    } else {
+      __pyx_v_check_integrity = ((int)1);
+    }
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 54, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex___init__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), __pyx_v_length, __pyx_v_indices, __pyx_v_check_integrity);
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_6pandas_5_libs_6sparse_8IntIndex___init__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, Py_ssize_t __pyx_v_length, PyObject *__pyx_v_indices, int __pyx_v_check_integrity) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+055:         self.length = length
+
  __pyx_v_self->length = __pyx_v_length;
+
+056:         self.indices = np.ascontiguousarray(indices, dtype=np.int32)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_indices);
+  __Pyx_GIVEREF(__pyx_v_indices);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_indices);
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 56, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_5);
+  __Pyx_GOTREF(__pyx_v_self->indices);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->indices));
+  __pyx_v_self->indices = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
+057:         self.npoints = len(self.indices)
+
  __pyx_t_5 = ((PyObject *)__pyx_v_self->indices);
+  __Pyx_INCREF(__pyx_t_5);
+  __pyx_t_6 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 57, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_v_self->npoints = __pyx_t_6;
+
 058: 
+
+059:         if check_integrity:
+
  __pyx_t_7 = (__pyx_v_check_integrity != 0);
+  if (__pyx_t_7) {
+/* … */
+  }
+
+060:             self.check_integrity()
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_check_integrity); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_1 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_1)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_1);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 60, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+
 061: 
+
+062:     def __reduce__(self):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_3__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_3__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_2__reduce__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_2__reduce__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
+  PyObject *__pyx_v_args = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__reduce__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_args);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+063:         args = (self.length, self.indices)
+
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->indices));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->indices));
+  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->indices));
+  __pyx_t_1 = 0;
+  __pyx_v_args = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+064:         return IntIndex, args
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 64, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_IntIndex));
+  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_IntIndex));
+  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_IntIndex));
+  __Pyx_INCREF(__pyx_v_args);
+  __Pyx_GIVEREF(__pyx_v_args);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_args);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
 065: 
+
+066:     def __repr__(self) -> str:
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_5__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_5__repr__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_4__repr__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_4__repr__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
+  PyObject *__pyx_v_output = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__repr__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_output);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+067:         output = 'IntIndex\n'
+
  __Pyx_INCREF(__pyx_n_u_IntIndex);
+  __pyx_v_output = __pyx_n_u_IntIndex;
+
+068:         output += f'Indices: {repr(self.indices)}\n'
+
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 127;
+  __Pyx_INCREF(__pyx_kp_u_Indices);
+  __pyx_t_2 += 9;
+  __Pyx_GIVEREF(__pyx_kp_u_Indices);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Indices);
+  __pyx_t_4 = ((PyObject *)__pyx_v_self->indices);
+  __Pyx_INCREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_Repr(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 68, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3;
+  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
+  __pyx_t_4 = 0;
+  __Pyx_INCREF(__pyx_kp_u_);
+  __pyx_t_2 += 1;
+  __Pyx_GIVEREF(__pyx_kp_u_);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_);
+  __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_v_output, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF_SET(__pyx_v_output, ((PyObject*)__pyx_t_1));
+  __pyx_t_1 = 0;
+
+069:         return output
+
  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_output);
+  __pyx_r = __pyx_v_output;
+  goto __pyx_L0;
+
 070: 
+
 071:     @property
+
+072:     def nbytes(self) -> int:
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_6nbytes_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_6nbytes_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_6nbytes___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_6nbytes___get__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.nbytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+073:         return self.indices.nbytes
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->indices), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 074: 
+
+075:     def check_integrity(self):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_7check_integrity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_6pandas_5_libs_6sparse_8IntIndex_6check_integrity[] = "\n        Checks the following:\n\n        - Indices are strictly ascending\n        - Number of indices is at most self.length\n        - Indices are at least 0 and at most the total length less one\n\n        A ValueError is raised if any of these conditions is violated.\n        ";
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_7check_integrity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("check_integrity (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_6check_integrity(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_6check_integrity(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
+  PyObject *__pyx_v_monotonic = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("check_integrity", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.check_integrity", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_monotonic);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 076:         """
+
 077:         Checks the following:
+
 078: 
+
 079:         - Indices are strictly ascending
+
 080:         - Number of indices is at most self.length
+
 081:         - Indices are at least 0 and at most the total length less one
+
 082: 
+
 083:         A ValueError is raised if any of these conditions is violated.
+
 084:         """
+
 085: 
+
+086:         if self.npoints > self.length:
+
  __pyx_t_1 = ((__pyx_v_self->npoints > __pyx_v_self->length) != 0);
+  if (unlikely(__pyx_t_1)) {
+/* … */
+  }
+
+087:             raise ValueError(
+
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __PYX_ERR(0, 87, __pyx_L1_error)
+
+088:                 f"Too many indices. Expected {self.length} but found {self.npoints}"
+
    __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 88, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __pyx_t_3 = 0;
+    __pyx_t_4 = 127;
+    __Pyx_INCREF(__pyx_kp_u_Too_many_indices_Expected);
+    __pyx_t_3 += 27;
+    __Pyx_GIVEREF(__pyx_kp_u_Too_many_indices_Expected);
+    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_Too_many_indices_Expected);
+    __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_self->length, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 88, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
+    __Pyx_GIVEREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
+    __pyx_t_5 = 0;
+    __Pyx_INCREF(__pyx_kp_u_but_found);
+    __pyx_t_3 += 11;
+    __Pyx_GIVEREF(__pyx_kp_u_but_found);
+    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_but_found);
+    __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_self->npoints, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 88, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
+    __Pyx_GIVEREF(__pyx_t_5);
+    PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
+    __pyx_t_5 = 0;
+    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 88, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
 089:             )
+
 090: 
+
 091:         # Indices are vacuously ordered and non-negative
+
 092:         # if the sequence of indices is empty.
+
+093:         if self.npoints == 0:
+
  __pyx_t_1 = ((__pyx_v_self->npoints == 0) != 0);
+  if (__pyx_t_1) {
+/* … */
+  }
+
+094:             return
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+    goto __pyx_L0;
+
 095: 
+
+096:         if self.indices.min() < 0:
+
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->indices), __pyx_n_s_min); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 96, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
+    }
+  }
+  __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 96, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 96, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  if (unlikely(__pyx_t_1)) {
+/* … */
+  }
+
+097:             raise ValueError("No index can be less than zero")
+
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __PYX_ERR(0, 97, __pyx_L1_error)
+/* … */
+  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_u_No_index_can_be_less_than_zero); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 97, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__2);
+  __Pyx_GIVEREF(__pyx_tuple__2);
+
 098: 
+
+099:         if self.indices.max() >= self.length:
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->indices), __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_6 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 99, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  if (unlikely(__pyx_t_1)) {
+/* … */
+  }
+
+100:             raise ValueError("All indices must be less than the length")
+
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 100, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __PYX_ERR(0, 100, __pyx_L1_error)
+/* … */
+  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_u_All_indices_must_be_less_than_th); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 100, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__3);
+  __Pyx_GIVEREF(__pyx_tuple__3);
+
 101: 
+
+102:         monotonic = np.all(self.indices[:-1] < self.indices[1:])
+
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_all); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->indices), 0, -1L, NULL, NULL, &__pyx_slice__4, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+/* … */
+  __pyx_slice__4 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(0, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__4);
+  __Pyx_GIVEREF(__pyx_slice__4);
+  __pyx_t_7 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->indices), 1, 0, NULL, NULL, &__pyx_slice__5, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_8 = PyObject_RichCompare(__pyx_t_2, __pyx_t_7, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 102, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __pyx_t_7 = NULL;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_7)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_7);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
+    }
+  }
+  __pyx_t_6 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8);
+  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_v_monotonic = __pyx_t_6;
+  __pyx_t_6 = 0;
+  __pyx_slice__5 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__5)) __PYX_ERR(0, 102, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__5);
+  __Pyx_GIVEREF(__pyx_slice__5);
+
+103:         if not monotonic:
+
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_monotonic); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 103, __pyx_L1_error)
+  __pyx_t_9 = ((!__pyx_t_1) != 0);
+  if (unlikely(__pyx_t_9)) {
+/* … */
+  }
+
+104:             raise ValueError("Indices must be strictly increasing")
+
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 104, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __PYX_ERR(0, 104, __pyx_L1_error)
+/* … */
+  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Indices_must_be_strictly_increas); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 104, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__6);
+  __Pyx_GIVEREF(__pyx_tuple__6);
+
 105: 
+
+106:     def equals(self, other: object) -> bool:
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_9equals(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_9equals(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("equals (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_8equals(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_8equals(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyObject *__pyx_v_other) {
+  PyObject *__pyx_v_same_length = NULL;
+  PyObject *__pyx_v_same_indices = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("equals", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_8);
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.equals", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_same_length);
+  __Pyx_XDECREF(__pyx_v_same_indices);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+107:         if not isinstance(other, IntIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+108:             return False
+
    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_False);
+    __pyx_r = Py_False;
+    goto __pyx_L0;
+
 109: 
+
+110:         if self is other:
+
  __pyx_t_2 = (((PyObject *)__pyx_v_self) == __pyx_v_other);
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (__pyx_t_1) {
+/* … */
+  }
+
+111:             return True
+
    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_True);
+    __pyx_r = Py_True;
+    goto __pyx_L0;
+
 112: 
+
+113:         same_length = self.length == other.length
+
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_length); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 113, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_v_same_length = __pyx_t_5;
+  __pyx_t_5 = 0;
+
+114:         same_indices = np.array_equal(self.indices, other.indices)
+
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array_equal); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 114, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_6 = NULL;
+  __pyx_t_7 = 0;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_6)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_6);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+      __pyx_t_7 = 1;
+    }
+  }
+  #if CYTHON_FAST_PYCALL
+  if (PyFunction_Check(__pyx_t_3)) {
+    PyObject *__pyx_temp[3] = {__pyx_t_6, ((PyObject *)__pyx_v_self->indices), __pyx_t_4};
+    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 114, __pyx_L1_error)
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else
+  #endif
+  #if CYTHON_FAST_PYCCALL
+  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+    PyObject *__pyx_temp[3] = {__pyx_t_6, ((PyObject *)__pyx_v_self->indices), __pyx_t_4};
+    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 114, __pyx_L1_error)
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else
+  #endif
+  {
+    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 114, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    if (__pyx_t_6) {
+      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
+    }
+    __Pyx_INCREF(((PyObject *)__pyx_v_self->indices));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_self->indices));
+    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, ((PyObject *)__pyx_v_self->indices));
+    __Pyx_GIVEREF(__pyx_t_4);
+    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4);
+    __pyx_t_4 = 0;
+    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 114, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_v_same_indices = __pyx_t_5;
+  __pyx_t_5 = 0;
+
+115:         return same_length and same_indices
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_same_length); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 115, __pyx_L1_error)
+  if (__pyx_t_1) {
+  } else {
+    __Pyx_INCREF(__pyx_v_same_length);
+    __pyx_t_5 = __pyx_v_same_length;
+    goto __pyx_L5_bool_binop_done;
+  }
+  __Pyx_INCREF(__pyx_v_same_indices);
+  __pyx_t_5 = __pyx_v_same_indices;
+  __pyx_L5_bool_binop_done:;
+  __pyx_r = __pyx_t_5;
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
 116: 
+
 117:     @property
+
+118:     def ngaps(self) -> int:
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_5ngaps_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_5ngaps_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_5ngaps___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_5ngaps___get__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.ngaps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+119:         return self.length - self.npoints
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_self->length - __pyx_v_self->npoints)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 120: 
+
+121:     def to_int_index(self):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_11to_int_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_11to_int_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("to_int_index (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_10to_int_index(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_10to_int_index(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("to_int_index", 0);
+/* … */
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+122:         return self
+
  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self));
+  __pyx_r = ((PyObject *)__pyx_v_self);
+  goto __pyx_L0;
+
 123: 
+
+124:     def to_block_index(self):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_13to_block_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_13to_block_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("to_block_index (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_12to_block_index(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_12to_block_index(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
+  PyObject *__pyx_v_locs = NULL;
+  PyObject *__pyx_v_lens = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("to_block_index", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.to_block_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_locs);
+  __Pyx_XDECREF(__pyx_v_lens);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+125:         locs, lens = get_blocks(self.indices)
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->indices);
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_2 = __pyx_f_6pandas_5_libs_6sparse_get_blocks(((PyArrayObject *)__pyx_t_1), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
+    PyObject* sequence = __pyx_t_2;
+    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
+    if (unlikely(size != 2)) {
+      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
+      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
+      __PYX_ERR(0, 125, __pyx_L1_error)
+    }
+    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
+    if (likely(PyTuple_CheckExact(sequence))) {
+      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
+    } else {
+      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
+      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
+    }
+    __Pyx_INCREF(__pyx_t_1);
+    __Pyx_INCREF(__pyx_t_3);
+    #else
+    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    #endif
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  } else {
+    Py_ssize_t index = -1;
+    __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 125, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
+    index = 0; __pyx_t_1 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_1);
+    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
+    __Pyx_GOTREF(__pyx_t_3);
+    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 125, __pyx_L1_error)
+    __pyx_t_5 = NULL;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    goto __pyx_L4_unpacking_done;
+    __pyx_L3_unpacking_failed:;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_t_5 = NULL;
+    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
+    __PYX_ERR(0, 125, __pyx_L1_error)
+    __pyx_L4_unpacking_done:;
+  }
+  __pyx_v_locs = __pyx_t_1;
+  __pyx_t_1 = 0;
+  __pyx_v_lens = __pyx_t_3;
+  __pyx_t_3 = 0;
+
+126:         return BlockIndex(self.length, locs, lens)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 126, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
+  __Pyx_INCREF(__pyx_v_locs);
+  __Pyx_GIVEREF(__pyx_v_locs);
+  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_locs);
+  __Pyx_INCREF(__pyx_v_lens);
+  __Pyx_GIVEREF(__pyx_v_lens);
+  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_lens);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockIndex), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
 127: 
+
+128:     cpdef IntIndex intersect(self, SparseIndex y_):
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_15intersect(PyObject *__pyx_v_self, PyObject *__pyx_v_y_); /*proto*/
+static struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_f_6pandas_5_libs_6sparse_8IntIndex_intersect(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_y_, int __pyx_skip_dispatch) {
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_result_indexer;
+  __pyx_t_5numpy_int32_t __pyx_v_xind;
+  PyArrayObject *__pyx_v_xindices = 0;
+  PyArrayObject *__pyx_v_yindices = 0;
+  PyArrayObject *__pyx_v_new_indices = 0;
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_y = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_new_indices;
+  __Pyx_Buffer __pyx_pybuffer_new_indices;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_xindices;
+  __Pyx_Buffer __pyx_pybuffer_xindices;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_yindices;
+  __Pyx_Buffer __pyx_pybuffer_yindices;
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("intersect", 0);
+  __pyx_pybuffer_xindices.pybuffer.buf = NULL;
+  __pyx_pybuffer_xindices.refcount = 0;
+  __pyx_pybuffernd_xindices.data = NULL;
+  __pyx_pybuffernd_xindices.rcbuffer = &__pyx_pybuffer_xindices;
+  __pyx_pybuffer_yindices.pybuffer.buf = NULL;
+  __pyx_pybuffer_yindices.refcount = 0;
+  __pyx_pybuffernd_yindices.data = NULL;
+  __pyx_pybuffernd_yindices.rcbuffer = &__pyx_pybuffer_yindices;
+  __pyx_pybuffer_new_indices.pybuffer.buf = NULL;
+  __pyx_pybuffer_new_indices.refcount = 0;
+  __pyx_pybuffernd_new_indices.data = NULL;
+  __pyx_pybuffernd_new_indices.rcbuffer = &__pyx_pybuffer_new_indices;
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_intersect); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 128, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_15intersect)) {
+        __Pyx_XDECREF(((PyObject *)__pyx_r));
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+          if (likely(__pyx_t_4)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+            __Pyx_INCREF(__pyx_t_4);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_3, function);
+          }
+        }
+        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_y_)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_y_));
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 128, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(0, 128, __pyx_L1_error)
+        __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_2);
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_13);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xindices.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yindices.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.intersect", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xindices.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yindices.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_xindices);
+  __Pyx_XDECREF((PyObject *)__pyx_v_yindices);
+  __Pyx_XDECREF((PyObject *)__pyx_v_new_indices);
+  __Pyx_XDECREF((PyObject *)__pyx_v_y);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_15intersect(PyObject *__pyx_v_self, PyObject *__pyx_v_y_); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_15intersect(PyObject *__pyx_v_self, PyObject *__pyx_v_y_) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("intersect (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "y_", 0))) __PYX_ERR(0, 128, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_14intersect(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_y_));
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_14intersect(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_y_) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("intersect", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_8IntIndex_intersect(__pyx_v_self, __pyx_v_y_, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 128, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.intersect", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 129:         cdef:
+
+130:             Py_ssize_t out_length, xi, yi = 0, result_indexer = 0
+
  __pyx_v_yi = 0;
+  __pyx_v_result_indexer = 0;
+
 131:             int32_t xind
+
 132:             ndarray[int32_t, ndim=1] xindices, yindices, new_indices
+
 133:             IntIndex y
+
 134: 
+
 135:         # if is one already, returns self
+
+136:         y = y_.to_int_index()
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_y_), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 136, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(0, 136, __pyx_L1_error)
+  __pyx_v_y = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
 137: 
+
+138:         if self.length != y.length:
+
  __pyx_t_5 = ((__pyx_v_self->length != __pyx_v_y->length) != 0);
+  if (unlikely(__pyx_t_5)) {
+/* … */
+  }
+
+139:             raise Exception('Indices must reference same underlying length')
+
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(0, 139, __pyx_L1_error)
+/* … */
+  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_Indices_must_reference_same_unde); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__7);
+  __Pyx_GIVEREF(__pyx_tuple__7);
+
 140: 
+
+141:         xindices = self.indices
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->indices);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xindices.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xindices.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xindices.rcbuffer->pybuffer, (PyObject*)__pyx_v_xindices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+      }
+      __pyx_t_7 = __pyx_t_8 = __pyx_t_9 = 0;
+    }
+    __pyx_pybuffernd_xindices.diminfo[0].strides = __pyx_pybuffernd_xindices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xindices.diminfo[0].shape = __pyx_pybuffernd_xindices.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 141, __pyx_L1_error)
+  }
+  __pyx_v_xindices = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+142:         yindices = y.indices
+
  __pyx_t_1 = ((PyObject *)__pyx_v_y->indices);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yindices.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yindices.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yindices.rcbuffer->pybuffer, (PyObject*)__pyx_v_yindices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
+      }
+      __pyx_t_9 = __pyx_t_8 = __pyx_t_7 = 0;
+    }
+    __pyx_pybuffernd_yindices.diminfo[0].strides = __pyx_pybuffernd_yindices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_yindices.diminfo[0].shape = __pyx_pybuffernd_yindices.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 142, __pyx_L1_error)
+  }
+  __pyx_v_yindices = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+143:         new_indices = np.empty(min(
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+/* … */
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+/* … */
+  __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 143, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 143, __pyx_L1_error)
+  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_new_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+      }
+      __pyx_t_7 = __pyx_t_8 = __pyx_t_9 = 0;
+    }
+    __pyx_pybuffernd_new_indices.diminfo[0].strides = __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_new_indices.diminfo[0].shape = __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 143, __pyx_L1_error)
+  }
+  __pyx_t_14 = 0;
+  __pyx_v_new_indices = ((PyArrayObject *)__pyx_t_13);
+  __pyx_t_13 = 0;
+
+144:             len(xindices), len(yindices)), dtype=np.int32)
+
  __pyx_t_10 = PyObject_Length(((PyObject *)__pyx_v_yindices)); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 144, __pyx_L1_error)
+  __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_xindices)); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 144, __pyx_L1_error)
+  if (((__pyx_t_10 < __pyx_t_11) != 0)) {
+    __pyx_t_12 = __pyx_t_10;
+  } else {
+    __pyx_t_12 = __pyx_t_11;
+  }
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+/* … */
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 144, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_13) < 0) __PYX_ERR(0, 144, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+
 145: 
+
+146:         for xi in range(self.npoints):
+
  __pyx_t_12 = __pyx_v_self->npoints;
+  __pyx_t_10 = __pyx_t_12;
+  for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
+    __pyx_v_xi = __pyx_t_11;
+
+147:             xind = xindices[xi]
+
    __pyx_t_15 = __pyx_v_xi;
+    __pyx_t_6 = -1;
+    if (__pyx_t_15 < 0) {
+      __pyx_t_15 += __pyx_pybuffernd_xindices.diminfo[0].shape;
+      if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
+    } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_xindices.diminfo[0].shape)) __pyx_t_6 = 0;
+    if (unlikely(__pyx_t_6 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_6);
+      __PYX_ERR(0, 147, __pyx_L1_error)
+    }
+    __pyx_v_xind = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xindices.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_xindices.diminfo[0].strides));
+
 148: 
+
+149:             while yi < y.npoints and yindices[yi] < xind:
+
    while (1) {
+      __pyx_t_16 = ((__pyx_v_yi < __pyx_v_y->npoints) != 0);
+      if (__pyx_t_16) {
+      } else {
+        __pyx_t_5 = __pyx_t_16;
+        goto __pyx_L8_bool_binop_done;
+      }
+      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_6 = -1;
+      if (__pyx_t_15 < 0) {
+        __pyx_t_15 += __pyx_pybuffernd_yindices.diminfo[0].shape;
+        if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_yindices.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 149, __pyx_L1_error)
+      }
+      __pyx_t_16 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yindices.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_yindices.diminfo[0].strides)) < __pyx_v_xind) != 0);
+      __pyx_t_5 = __pyx_t_16;
+      __pyx_L8_bool_binop_done:;
+      if (!__pyx_t_5) break;
+
+150:                 yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+
 151: 
+
+152:             if yi >= y.npoints:
+
    __pyx_t_5 = ((__pyx_v_yi >= __pyx_v_y->npoints) != 0);
+    if (__pyx_t_5) {
+/* … */
+    }
+
+153:                 break
+
      goto __pyx_L5_break;
+
 154: 
+
 155:             # TODO: would a two-pass algorithm be faster?
+
+156:             if yindices[yi] == xind:
+
    __pyx_t_15 = __pyx_v_yi;
+    __pyx_t_6 = -1;
+    if (__pyx_t_15 < 0) {
+      __pyx_t_15 += __pyx_pybuffernd_yindices.diminfo[0].shape;
+      if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
+    } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_yindices.diminfo[0].shape)) __pyx_t_6 = 0;
+    if (unlikely(__pyx_t_6 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_6);
+      __PYX_ERR(0, 156, __pyx_L1_error)
+    }
+    __pyx_t_5 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yindices.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_yindices.diminfo[0].strides)) == __pyx_v_xind) != 0);
+    if (__pyx_t_5) {
+/* … */
+    }
+  }
+  __pyx_L5_break:;
+
+157:                 new_indices[result_indexer] = xind
+
      __pyx_t_15 = __pyx_v_result_indexer;
+      __pyx_t_6 = -1;
+      if (__pyx_t_15 < 0) {
+        __pyx_t_15 += __pyx_pybuffernd_new_indices.diminfo[0].shape;
+        if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_new_indices.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 157, __pyx_L1_error)
+      }
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_new_indices.diminfo[0].strides) = __pyx_v_xind;
+
+158:                 result_indexer += 1
+
      __pyx_v_result_indexer = (__pyx_v_result_indexer + 1);
+
 159: 
+
+160:         new_indices = new_indices[:result_indexer]
+
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 160, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __pyx_t_1 = PySlice_New(Py_None, __pyx_t_13, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+  __pyx_t_13 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_new_indices), __pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 160, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 160, __pyx_L1_error)
+  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_new_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
+      }
+      __pyx_t_9 = __pyx_t_8 = __pyx_t_7 = 0;
+    }
+    __pyx_pybuffernd_new_indices.diminfo[0].strides = __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_new_indices.diminfo[0].shape = __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 160, __pyx_L1_error)
+  }
+  __pyx_t_14 = 0;
+  __Pyx_DECREF_SET(__pyx_v_new_indices, ((PyArrayObject *)__pyx_t_13));
+  __pyx_t_13 = 0;
+
+161:         return IntIndex(self.length, new_indices)
+
  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 161, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_13);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_13);
+  __Pyx_INCREF(((PyObject *)__pyx_v_new_indices));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_new_indices));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_new_indices));
+  __pyx_t_13 = 0;
+  __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_IntIndex), __pyx_t_1, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 161, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_13);
+  __pyx_t_13 = 0;
+  goto __pyx_L0;
+
 162: 
+
+163:     cpdef IntIndex make_union(self, SparseIndex y_):
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_17make_union(PyObject *__pyx_v_self, PyObject *__pyx_v_y_); /*proto*/
+static struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_f_6pandas_5_libs_6sparse_8IntIndex_make_union(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_y_, int __pyx_skip_dispatch) {
+  PyArrayObject *__pyx_v_new_indices = 0;
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_y = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_new_indices;
+  __Pyx_Buffer __pyx_pybuffer_new_indices;
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("make_union", 0);
+  __pyx_pybuffer_new_indices.pybuffer.buf = NULL;
+  __pyx_pybuffer_new_indices.refcount = 0;
+  __pyx_pybuffernd_new_indices.data = NULL;
+  __pyx_pybuffernd_new_indices.rcbuffer = &__pyx_pybuffer_new_indices;
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_union); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_17make_union)) {
+        __Pyx_XDECREF(((PyObject *)__pyx_r));
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+          if (likely(__pyx_t_4)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+            __Pyx_INCREF(__pyx_t_4);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_3, function);
+          }
+        }
+        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_y_)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_y_));
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(0, 163, __pyx_L1_error)
+        __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_2);
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.make_union", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_new_indices);
+  __Pyx_XDECREF((PyObject *)__pyx_v_y);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_17make_union(PyObject *__pyx_v_self, PyObject *__pyx_v_y_); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_17make_union(PyObject *__pyx_v_self, PyObject *__pyx_v_y_) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("make_union (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "y_", 0))) __PYX_ERR(0, 163, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_16make_union(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_y_));
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_16make_union(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_y_) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("make_union", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_8IntIndex_make_union(__pyx_v_self, __pyx_v_y_, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.make_union", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 164: 
+
 165:         cdef:
+
 166:             ndarray[int32_t, ndim=1] new_indices
+
 167:             IntIndex y
+
 168: 
+
 169:         # if is one already, returns self
+
+170:         y = y_.to_int_index()
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_y_), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 170, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 170, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(0, 170, __pyx_L1_error)
+  __pyx_v_y = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
 171: 
+
+172:         if self.length != y.length:
+
  __pyx_t_5 = ((__pyx_v_self->length != __pyx_v_y->length) != 0);
+  if (unlikely(__pyx_t_5)) {
+/* … */
+  }
+
+173:             raise ValueError('Indices must reference same underlying length')
+
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(0, 173, __pyx_L1_error)
+
 174: 
+
+175:         new_indices = np.union1d(self.indices, y.indices)
+
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_union1d); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = NULL;
+  __pyx_t_6 = 0;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_3, function);
+      __pyx_t_6 = 1;
+    }
+  }
+  #if CYTHON_FAST_PYCALL
+  if (PyFunction_Check(__pyx_t_3)) {
+    PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_v_self->indices), ((PyObject *)__pyx_v_y->indices)};
+    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_GOTREF(__pyx_t_1);
+  } else
+  #endif
+  #if CYTHON_FAST_PYCCALL
+  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+    PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_v_self->indices), ((PyObject *)__pyx_v_y->indices)};
+    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
+    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __Pyx_GOTREF(__pyx_t_1);
+  } else
+  #endif
+  {
+    __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    if (__pyx_t_2) {
+      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
+    }
+    __Pyx_INCREF(((PyObject *)__pyx_v_self->indices));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_self->indices));
+    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, ((PyObject *)__pyx_v_self->indices));
+    __Pyx_INCREF(((PyObject *)__pyx_v_y->indices));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_y->indices));
+    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, ((PyObject *)__pyx_v_y->indices));
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 175, __pyx_L1_error)
+  __pyx_t_7 = ((PyArrayObject *)__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_new_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_new_indices.diminfo[0].strides = __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_new_indices.diminfo[0].shape = __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 175, __pyx_L1_error)
+  }
+  __pyx_t_7 = 0;
+  __pyx_v_new_indices = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+176:         return IntIndex(self.length, new_indices)
+
  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 176, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_new_indices));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_new_indices));
+  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_new_indices));
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_IntIndex), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 177: 
+
 178:     @cython.wraparound(False)
+
+179:     cpdef int32_t lookup(self, Py_ssize_t index):
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_19lookup(PyObject *__pyx_v_self, PyObject *__pyx_arg_index); /*proto*/
+static __pyx_t_5numpy_int32_t __pyx_f_6pandas_5_libs_6sparse_8IntIndex_lookup(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, Py_ssize_t __pyx_v_index, int __pyx_skip_dispatch) {
+  __pyx_t_5numpy_int32_t __pyx_v_res;
+  PyArrayObject *__pyx_v_inds = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_inds;
+  __Pyx_Buffer __pyx_pybuffer_inds;
+  __pyx_t_5numpy_int32_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("lookup", 0);
+  __pyx_pybuffer_inds.pybuffer.buf = NULL;
+  __pyx_pybuffer_inds.refcount = 0;
+  __pyx_pybuffernd_inds.data = NULL;
+  __pyx_pybuffernd_inds.rcbuffer = &__pyx_pybuffer_inds;
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_19lookup)) {
+        __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+          if (likely(__pyx_t_5)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+            __Pyx_INCREF(__pyx_t_5);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_4, function);
+          }
+        }
+        __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_t_6 = __Pyx_PyInt_As_npy_int32(__pyx_t_2); if (unlikely((__pyx_t_6 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 179, __pyx_L1_error)
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __pyx_r = __pyx_t_6;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inds.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_WriteUnraisable("pandas._libs.sparse.IntIndex.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inds.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_inds);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_19lookup(PyObject *__pyx_v_self, PyObject *__pyx_arg_index); /*proto*/
+static char __pyx_doc_6pandas_5_libs_6sparse_8IntIndex_18lookup[] = "\n        Return the internal location if value exists on given index.\n        Return -1 otherwise.\n        ";
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_19lookup(PyObject *__pyx_v_self, PyObject *__pyx_arg_index) {
+  Py_ssize_t __pyx_v_index;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("lookup (wrapper)", 0);
+  assert(__pyx_arg_index); {
+    __pyx_v_index = __Pyx_PyIndex_AsSsize_t(__pyx_arg_index); if (unlikely((__pyx_v_index == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 179, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_18lookup(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), ((Py_ssize_t)__pyx_v_index));
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_18lookup(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, Py_ssize_t __pyx_v_index) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("lookup", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_f_6pandas_5_libs_6sparse_8IntIndex_lookup(__pyx_v_self, __pyx_v_index, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 180:         """
+
 181:         Return the internal location if value exists on given index.
+
 182:         Return -1 otherwise.
+
 183:         """
+
 184:         cdef:
+
 185:             int32_t res
+
 186:             ndarray[int32_t, ndim=1] inds
+
 187: 
+
+188:         inds = self.indices
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->indices);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inds.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_inds.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_inds.rcbuffer->pybuffer, (PyObject*)__pyx_v_inds, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_inds.diminfo[0].strides = __pyx_pybuffernd_inds.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_inds.diminfo[0].shape = __pyx_pybuffernd_inds.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 188, __pyx_L1_error)
+  }
+  __pyx_v_inds = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+189:         if self.npoints == 0:
+
  __pyx_t_11 = ((__pyx_v_self->npoints == 0) != 0);
+  if (__pyx_t_11) {
+/* … */
+  }
+
+190:             return -1
+
    __pyx_r = -1;
+    goto __pyx_L0;
+
+191:         elif index < 0 or self.length <= index:
+
  __pyx_t_12 = ((__pyx_v_index < 0) != 0);
+  if (!__pyx_t_12) {
+  } else {
+    __pyx_t_11 = __pyx_t_12;
+    goto __pyx_L4_bool_binop_done;
+  }
+  __pyx_t_12 = ((__pyx_v_self->length <= __pyx_v_index) != 0);
+  __pyx_t_11 = __pyx_t_12;
+  __pyx_L4_bool_binop_done:;
+  if (__pyx_t_11) {
+/* … */
+  }
+
+192:             return -1
+
    __pyx_r = -1;
+    goto __pyx_L0;
+
 193: 
+
+194:         res = inds.searchsorted(index)
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_inds), __pyx_n_s_searchsorted); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 194, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_3 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_6 = __Pyx_PyInt_As_npy_int32(__pyx_t_1); if (unlikely((__pyx_t_6 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 194, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_v_res = __pyx_t_6;
+
+195:         if res == self.npoints:
+
  __pyx_t_11 = ((__pyx_v_res == __pyx_v_self->npoints) != 0);
+  if (__pyx_t_11) {
+/* … */
+  }
+
+196:             return -1
+
    __pyx_r = -1;
+    goto __pyx_L0;
+
+197:         elif inds[res] == index:
+
  __pyx_t_13 = __pyx_v_res;
+  __pyx_t_7 = -1;
+  if (__pyx_t_13 < 0) {
+    __pyx_t_7 = 0;
+  } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_inds.diminfo[0].shape)) __pyx_t_7 = 0;
+  if (unlikely(__pyx_t_7 != -1)) {
+    __Pyx_RaiseBufferIndexError(__pyx_t_7);
+    __PYX_ERR(0, 197, __pyx_L1_error)
+  }
+  __pyx_t_11 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_inds.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_inds.diminfo[0].strides)) == __pyx_v_index) != 0);
+  if (__pyx_t_11) {
+/* … */
+  }
+
+198:             return res
+
    __pyx_r = __pyx_v_res;
+    goto __pyx_L0;
+
 199:         else:
+
+200:             return -1
+
  /*else*/ {
+    __pyx_r = -1;
+    goto __pyx_L0;
+  }
+
 201: 
+
 202:     @cython.wraparound(False)
+
+203:     cpdef ndarray[int32_t] lookup_array(self, ndarray[int32_t, ndim=1] indexer):
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_21lookup_array(PyObject *__pyx_v_self, PyObject *__pyx_v_indexer); /*proto*/
+static PyArrayObject *__pyx_f_6pandas_5_libs_6sparse_8IntIndex_lookup_array(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyArrayObject *__pyx_v_indexer, int __pyx_skip_dispatch) {
+  Py_ssize_t __pyx_v_n;
+  PyArrayObject *__pyx_v_inds = 0;
+  PyArrayObject *__pyx_v_mask = 0;
+  PyArrayObject *__pyx_v_masked = 0;
+  PyArrayObject *__pyx_v_res = 0;
+  PyArrayObject *__pyx_v_results = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indexer;
+  __Pyx_Buffer __pyx_pybuffer_indexer;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_inds;
+  __Pyx_Buffer __pyx_pybuffer_inds;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_mask;
+  __Pyx_Buffer __pyx_pybuffer_mask;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_masked;
+  __Pyx_Buffer __pyx_pybuffer_masked;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
+  __Pyx_Buffer __pyx_pybuffer_res;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_results;
+  __Pyx_Buffer __pyx_pybuffer_results;
+  PyArrayObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("lookup_array", 0);
+  __pyx_pybuffer_inds.pybuffer.buf = NULL;
+  __pyx_pybuffer_inds.refcount = 0;
+  __pyx_pybuffernd_inds.data = NULL;
+  __pyx_pybuffernd_inds.rcbuffer = &__pyx_pybuffer_inds;
+  __pyx_pybuffer_mask.pybuffer.buf = NULL;
+  __pyx_pybuffer_mask.refcount = 0;
+  __pyx_pybuffernd_mask.data = NULL;
+  __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask;
+  __pyx_pybuffer_masked.pybuffer.buf = NULL;
+  __pyx_pybuffer_masked.refcount = 0;
+  __pyx_pybuffernd_masked.data = NULL;
+  __pyx_pybuffernd_masked.rcbuffer = &__pyx_pybuffer_masked;
+  __pyx_pybuffer_res.pybuffer.buf = NULL;
+  __pyx_pybuffer_res.refcount = 0;
+  __pyx_pybuffernd_res.data = NULL;
+  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
+  __pyx_pybuffer_results.pybuffer.buf = NULL;
+  __pyx_pybuffer_results.refcount = 0;
+  __pyx_pybuffernd_results.data = NULL;
+  __pyx_pybuffernd_results.rcbuffer = &__pyx_pybuffer_results;
+  __pyx_pybuffer_indexer.pybuffer.buf = NULL;
+  __pyx_pybuffer_indexer.refcount = 0;
+  __pyx_pybuffernd_indexer.data = NULL;
+  __pyx_pybuffernd_indexer.rcbuffer = &__pyx_pybuffer_indexer;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 203, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indexer.diminfo[0].strides = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indexer.diminfo[0].shape = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.shape[0];
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_21lookup_array)) {
+        __Pyx_XDECREF(((PyObject *)__pyx_r));
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+          if (likely(__pyx_t_4)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+            __Pyx_INCREF(__pyx_t_4);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_3, function);
+          }
+        }
+        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_indexer)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_indexer));
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 203, __pyx_L1_error)
+        __pyx_r = ((PyArrayObject *)__pyx_t_2);
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inds.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_masked.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_results.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.lookup_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inds.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_masked.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_results.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_inds);
+  __Pyx_XDECREF((PyObject *)__pyx_v_mask);
+  __Pyx_XDECREF((PyObject *)__pyx_v_masked);
+  __Pyx_XDECREF((PyObject *)__pyx_v_res);
+  __Pyx_XDECREF((PyObject *)__pyx_v_results);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_21lookup_array(PyObject *__pyx_v_self, PyObject *__pyx_v_indexer); /*proto*/
+static char __pyx_doc_6pandas_5_libs_6sparse_8IntIndex_20lookup_array[] = "\n        Vectorized lookup, returns ndarray[int32_t]\n        ";
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_21lookup_array(PyObject *__pyx_v_self, PyObject *__pyx_v_indexer) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("lookup_array (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) __PYX_ERR(0, 203, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_20lookup_array(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), ((PyArrayObject *)__pyx_v_indexer));
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_20lookup_array(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyArrayObject *__pyx_v_indexer) {
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indexer;
+  __Pyx_Buffer __pyx_pybuffer_indexer;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("lookup_array", 0);
+  __pyx_pybuffer_indexer.pybuffer.buf = NULL;
+  __pyx_pybuffer_indexer.refcount = 0;
+  __pyx_pybuffernd_indexer.data = NULL;
+  __pyx_pybuffernd_indexer.rcbuffer = &__pyx_pybuffer_indexer;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 203, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indexer.diminfo[0].strides = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indexer.diminfo[0].shape = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.shape[0];
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_8IntIndex_lookup_array(__pyx_v_self, __pyx_v_indexer, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.lookup_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 204:         """
+
 205:         Vectorized lookup, returns ndarray[int32_t]
+
 206:         """
+
 207:         cdef:
+
 208:             Py_ssize_t n, i, ind_val
+
 209:             ndarray[int32_t, ndim=1] inds
+
 210:             ndarray[uint8_t, ndim=1, cast=True] mask
+
 211:             ndarray[int32_t, ndim=1] masked
+
 212:             ndarray[int32_t, ndim=1] res
+
 213:             ndarray[int32_t, ndim=1] results
+
 214: 
+
+215:         n = len(indexer)
+
  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 215, __pyx_L1_error)
+  __pyx_v_n = __pyx_t_5;
+
+216:         results = np.empty(n, dtype=np.int32)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 216, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 216, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 216, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 216, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 216, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 216, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 216, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 216, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 216, __pyx_L1_error)
+  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_results.rcbuffer->pybuffer);
+    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_results.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_8 < 0)) {
+      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_results.rcbuffer->pybuffer, (PyObject*)__pyx_v_results, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
+      }
+      __pyx_t_9 = __pyx_t_10 = __pyx_t_11 = 0;
+    }
+    __pyx_pybuffernd_results.diminfo[0].strides = __pyx_pybuffernd_results.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_results.diminfo[0].shape = __pyx_pybuffernd_results.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 216, __pyx_L1_error)
+  }
+  __pyx_t_7 = 0;
+  __pyx_v_results = ((PyArrayObject *)__pyx_t_6);
+  __pyx_t_6 = 0;
+
+217:         results[:] = -1
+
  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_results), __pyx_slice__8, __pyx_int_neg_1) < 0)) __PYX_ERR(0, 217, __pyx_L1_error)
+/* … */
+  __pyx_slice__8 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__8)) __PYX_ERR(0, 217, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_slice__8);
+  __Pyx_GIVEREF(__pyx_slice__8);
+
 218: 
+
+219:         if self.npoints == 0:
+
  __pyx_t_12 = ((__pyx_v_self->npoints == 0) != 0);
+  if (__pyx_t_12) {
+/* … */
+  }
+
+220:             return results
+
    __Pyx_XDECREF(((PyObject *)__pyx_r));
+    __Pyx_INCREF(((PyObject *)__pyx_v_results));
+    __pyx_r = ((PyArrayObject *)__pyx_v_results);
+    goto __pyx_L0;
+
 221: 
+
+222:         inds = self.indices
+
  __pyx_t_6 = ((PyObject *)__pyx_v_self->indices);
+  __Pyx_INCREF(__pyx_t_6);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inds.rcbuffer->pybuffer);
+    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_inds.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_6), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_8 < 0)) {
+      PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_inds.rcbuffer->pybuffer, (PyObject*)__pyx_v_inds, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
+      }
+      __pyx_t_11 = __pyx_t_10 = __pyx_t_9 = 0;
+    }
+    __pyx_pybuffernd_inds.diminfo[0].strides = __pyx_pybuffernd_inds.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_inds.diminfo[0].shape = __pyx_pybuffernd_inds.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 222, __pyx_L1_error)
+  }
+  __pyx_v_inds = ((PyArrayObject *)__pyx_t_6);
+  __pyx_t_6 = 0;
+
+223:         mask = (inds[0] <= indexer) & (indexer <= inds[len(inds) - 1])
+
  __pyx_t_13 = 0;
+  __pyx_t_8 = -1;
+  if (__pyx_t_13 < 0) {
+    __pyx_t_8 = 0;
+  } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_inds.diminfo[0].shape)) __pyx_t_8 = 0;
+  if (unlikely(__pyx_t_8 != -1)) {
+    __Pyx_RaiseBufferIndexError(__pyx_t_8);
+    __PYX_ERR(0, 223, __pyx_L1_error)
+  }
+  __pyx_t_6 = __Pyx_PyInt_From_npy_int32((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_inds.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_inds.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 223, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, ((PyObject *)__pyx_v_indexer), Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_inds)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 223, __pyx_L1_error)
+  __pyx_t_13 = (__pyx_t_5 - 1);
+  __pyx_t_8 = -1;
+  if (__pyx_t_13 < 0) {
+    __pyx_t_8 = 0;
+  } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_inds.diminfo[0].shape)) __pyx_t_8 = 0;
+  if (unlikely(__pyx_t_8 != -1)) {
+    __Pyx_RaiseBufferIndexError(__pyx_t_8);
+    __PYX_ERR(0, 223, __pyx_L1_error)
+  }
+  __pyx_t_6 = __Pyx_PyInt_From_npy_int32((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_inds.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_inds.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 223, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_3 = PyObject_RichCompare(((PyObject *)__pyx_v_indexer), __pyx_t_6, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 223, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = PyNumber_And(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 223, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 223, __pyx_L1_error)
+  __pyx_t_14 = ((PyArrayObject *)__pyx_t_6);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
+    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack);
+    if (unlikely(__pyx_t_8 < 0)) {
+      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
+      }
+      __pyx_t_9 = __pyx_t_10 = __pyx_t_11 = 0;
+    }
+    __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 223, __pyx_L1_error)
+  }
+  __pyx_t_14 = 0;
+  __pyx_v_mask = ((PyArrayObject *)__pyx_t_6);
+  __pyx_t_6 = 0;
+
 224: 
+
+225:         masked = indexer[mask]
+
  __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_indexer), ((PyObject *)__pyx_v_mask)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 225, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 225, __pyx_L1_error)
+  __pyx_t_15 = ((PyArrayObject *)__pyx_t_6);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_masked.rcbuffer->pybuffer);
+    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_masked.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_8 < 0)) {
+      PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_masked.rcbuffer->pybuffer, (PyObject*)__pyx_v_masked, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
+      }
+      __pyx_t_11 = __pyx_t_10 = __pyx_t_9 = 0;
+    }
+    __pyx_pybuffernd_masked.diminfo[0].strides = __pyx_pybuffernd_masked.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_masked.diminfo[0].shape = __pyx_pybuffernd_masked.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 225, __pyx_L1_error)
+  }
+  __pyx_t_15 = 0;
+  __pyx_v_masked = ((PyArrayObject *)__pyx_t_6);
+  __pyx_t_6 = 0;
+
+226:         res = inds.searchsorted(masked).astype(np.int32)
+
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_inds), __pyx_n_s_searchsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_2)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_2);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, ((PyObject *)__pyx_v_masked)) : __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_v_masked));
+  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 226, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 226, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 226, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_1, function);
+    }
+  }
+  __pyx_t_6 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 226, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 226, __pyx_L1_error)
+  __pyx_t_16 = ((PyArrayObject *)__pyx_t_6);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
+    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_8 < 0)) {
+      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
+      }
+      __pyx_t_9 = __pyx_t_10 = __pyx_t_11 = 0;
+    }
+    __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 226, __pyx_L1_error)
+  }
+  __pyx_t_16 = 0;
+  __pyx_v_res = ((PyArrayObject *)__pyx_t_6);
+  __pyx_t_6 = 0;
+
 227: 
+
+228:         res[inds[res] != masked] = -1
+
  __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_inds), ((PyObject *)__pyx_v_res)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 228, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, ((PyObject *)__pyx_v_masked), Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 228, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_res), __pyx_t_1, __pyx_int_neg_1) < 0)) __PYX_ERR(0, 228, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+
+229:         results[mask] = res
+
  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_results), ((PyObject *)__pyx_v_mask), ((PyObject *)__pyx_v_res)) < 0)) __PYX_ERR(0, 229, __pyx_L1_error)
+
+230:         return results
+
  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __Pyx_INCREF(((PyObject *)__pyx_v_results));
+  __pyx_r = ((PyArrayObject *)__pyx_v_results);
+  goto __pyx_L0;
+
 231: 
+
+232:     cpdef ndarray reindex(self, ndarray[float64_t, ndim=1] values,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_23reindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyArrayObject *__pyx_f_6pandas_5_libs_6sparse_8IntIndex_reindex(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, __pyx_t_5numpy_float64_t __pyx_v_fill_value, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other_, int __pyx_skip_dispatch) {
+  Py_ssize_t __pyx_v_i;
+  Py_ssize_t __pyx_v_j;
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_other = 0;
+  PyArrayObject *__pyx_v_result = 0;
+  PyArrayObject *__pyx_v_sinds = 0;
+  PyArrayObject *__pyx_v_oinds = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_oinds;
+  __Pyx_Buffer __pyx_pybuffer_oinds;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_result;
+  __Pyx_Buffer __pyx_pybuffer_result;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_sinds;
+  __Pyx_Buffer __pyx_pybuffer_sinds;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
+  __Pyx_Buffer __pyx_pybuffer_values;
+  PyArrayObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("reindex", 0);
+  __pyx_pybuffer_result.pybuffer.buf = NULL;
+  __pyx_pybuffer_result.refcount = 0;
+  __pyx_pybuffernd_result.data = NULL;
+  __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result;
+  __pyx_pybuffer_sinds.pybuffer.buf = NULL;
+  __pyx_pybuffer_sinds.refcount = 0;
+  __pyx_pybuffernd_sinds.data = NULL;
+  __pyx_pybuffernd_sinds.rcbuffer = &__pyx_pybuffer_sinds;
+  __pyx_pybuffer_oinds.pybuffer.buf = NULL;
+  __pyx_pybuffer_oinds.refcount = 0;
+  __pyx_pybuffernd_oinds.data = NULL;
+  __pyx_pybuffernd_oinds.rcbuffer = &__pyx_pybuffer_oinds;
+  __pyx_pybuffer_values.pybuffer.buf = NULL;
+  __pyx_pybuffer_values.refcount = 0;
+  __pyx_pybuffernd_values.data = NULL;
+  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 232, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reindex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_23reindex)) {
+        __Pyx_XDECREF(((PyObject *)__pyx_r));
+        __pyx_t_3 = PyFloat_FromDouble(__pyx_v_fill_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 232, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
+        __pyx_t_6 = 0;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+          if (likely(__pyx_t_5)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+            __Pyx_INCREF(__pyx_t_5);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_4, function);
+            __pyx_t_6 = 1;
+          }
+        }
+        #if CYTHON_FAST_PYCALL
+        if (PyFunction_Check(__pyx_t_4)) {
+          PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_values), __pyx_t_3, ((PyObject *)__pyx_v_other_)};
+          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 232, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        } else
+        #endif
+        #if CYTHON_FAST_PYCCALL
+        if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+          PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_values), __pyx_t_3, ((PyObject *)__pyx_v_other_)};
+          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 232, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        } else
+        #endif
+        {
+          __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 232, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_7);
+          if (__pyx_t_5) {
+            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
+          }
+          __Pyx_INCREF(((PyObject *)__pyx_v_values));
+          __Pyx_GIVEREF(((PyObject *)__pyx_v_values));
+          PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_values));
+          __Pyx_GIVEREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3);
+          __Pyx_INCREF(((PyObject *)__pyx_v_other_));
+          __Pyx_GIVEREF(((PyObject *)__pyx_v_other_));
+          PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, ((PyObject *)__pyx_v_other_));
+          __pyx_t_3 = 0;
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 232, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 232, __pyx_L1_error)
+        __pyx_r = ((PyArrayObject *)__pyx_t_2);
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_oinds.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sinds.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.reindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_oinds.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sinds.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_other);
+  __Pyx_XDECREF((PyObject *)__pyx_v_result);
+  __Pyx_XDECREF((PyObject *)__pyx_v_sinds);
+  __Pyx_XDECREF((PyObject *)__pyx_v_oinds);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_23reindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_23reindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyArrayObject *__pyx_v_values = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_fill_value;
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other_ = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("reindex (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_values,&__pyx_n_s_fill_value,&__pyx_n_s_other,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_values)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fill_value)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("reindex", 1, 3, 3, 1); __PYX_ERR(0, 232, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_other)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("reindex", 1, 3, 3, 2); __PYX_ERR(0, 232, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reindex") < 0)) __PYX_ERR(0, 232, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_values = ((PyArrayObject *)values[0]);
+    __pyx_v_fill_value = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_fill_value == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 233, __pyx_L3_error)
+    __pyx_v_other_ = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("reindex", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 232, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.reindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) __PYX_ERR(0, 232, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other_), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "other_", 0))) __PYX_ERR(0, 233, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_22reindex(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), __pyx_v_values, __pyx_v_fill_value, __pyx_v_other_);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_22reindex(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, __pyx_t_5numpy_float64_t __pyx_v_fill_value, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other_) {
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
+  __Pyx_Buffer __pyx_pybuffer_values;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("reindex", 0);
+  __pyx_pybuffer_values.pybuffer.buf = NULL;
+  __pyx_pybuffer_values.refcount = 0;
+  __pyx_pybuffernd_values.data = NULL;
+  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 232, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_8IntIndex_reindex(__pyx_v_self, __pyx_v_values, __pyx_v_fill_value, __pyx_v_other_, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.reindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 233:                           float64_t fill_value, SparseIndex other_):
+
 234:         cdef:
+
+235:             Py_ssize_t i = 0, j = 0
+
  __pyx_v_i = 0;
+  __pyx_v_j = 0;
+
 236:             IntIndex other
+
 237:             ndarray[float64_t, ndim=1] result
+
 238:             ndarray[int32_t, ndim=1] sinds, oinds
+
 239: 
+
+240:         other = other_.to_int_index()
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_other_), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 240, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 240, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(0, 240, __pyx_L1_error)
+  __pyx_v_other = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
 241: 
+
+242:         oinds = other.indices
+
  __pyx_t_1 = ((PyObject *)__pyx_v_other->indices);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_oinds.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_oinds.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_oinds.rcbuffer->pybuffer, (PyObject*)__pyx_v_oinds, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_oinds.diminfo[0].strides = __pyx_pybuffernd_oinds.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_oinds.diminfo[0].shape = __pyx_pybuffernd_oinds.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 242, __pyx_L1_error)
+  }
+  __pyx_v_oinds = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+243:         sinds = self.indices
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->indices);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sinds.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_sinds.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_sinds.rcbuffer->pybuffer, (PyObject*)__pyx_v_sinds, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_10, __pyx_t_9, __pyx_t_8);
+      }
+      __pyx_t_10 = __pyx_t_9 = __pyx_t_8 = 0;
+    }
+    __pyx_pybuffernd_sinds.diminfo[0].strides = __pyx_pybuffernd_sinds.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_sinds.diminfo[0].shape = __pyx_pybuffernd_sinds.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 243, __pyx_L1_error)
+  }
+  __pyx_v_sinds = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
 244: 
+
+245:         result = np.empty(other.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 245, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_other->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 245, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 245, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 245, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 245, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 245, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 245, __pyx_L1_error)
+  __pyx_t_11 = ((PyArrayObject *)__pyx_t_3);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 245, __pyx_L1_error)
+  }
+  __pyx_t_11 = 0;
+  __pyx_v_result = ((PyArrayObject *)__pyx_t_3);
+  __pyx_t_3 = 0;
+
+246:         result[:] = fill_value
+
  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_fill_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 246, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_result), __pyx_slice__8, __pyx_t_3) < 0)) __PYX_ERR(0, 246, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+
 247: 
+
+248:         for i in range(other.npoints):
+
  __pyx_t_12 = __pyx_v_other->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_i = __pyx_t_14;
+
+249:             while oinds[i] > sinds[j] and j < self.npoints:
+
    while (1) {
+      __pyx_t_16 = __pyx_v_i;
+      __pyx_t_6 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_oinds.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_oinds.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 249, __pyx_L1_error)
+      }
+      __pyx_t_17 = __pyx_v_j;
+      __pyx_t_6 = -1;
+      if (__pyx_t_17 < 0) {
+        __pyx_t_17 += __pyx_pybuffernd_sinds.diminfo[0].shape;
+        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_sinds.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 249, __pyx_L1_error)
+      }
+      __pyx_t_18 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_oinds.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_oinds.diminfo[0].strides)) > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_sinds.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_sinds.diminfo[0].strides))) != 0);
+      if (__pyx_t_18) {
+      } else {
+        __pyx_t_15 = __pyx_t_18;
+        goto __pyx_L7_bool_binop_done;
+      }
+      __pyx_t_18 = ((__pyx_v_j < __pyx_v_self->npoints) != 0);
+      __pyx_t_15 = __pyx_t_18;
+      __pyx_L7_bool_binop_done:;
+      if (!__pyx_t_15) break;
+
+250:                 j += 1
+
      __pyx_v_j = (__pyx_v_j + 1);
+    }
+
 251: 
+
+252:             if j == self.npoints:
+
    __pyx_t_15 = ((__pyx_v_j == __pyx_v_self->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
+253:                 break
+
      goto __pyx_L4_break;
+
 254: 
+
+255:             if oinds[i] < sinds[j]:
+
    __pyx_t_17 = __pyx_v_i;
+    __pyx_t_6 = -1;
+    if (__pyx_t_17 < 0) {
+      __pyx_t_17 += __pyx_pybuffernd_oinds.diminfo[0].shape;
+      if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_oinds.diminfo[0].shape)) __pyx_t_6 = 0;
+    if (unlikely(__pyx_t_6 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_6);
+      __PYX_ERR(0, 255, __pyx_L1_error)
+    }
+    __pyx_t_16 = __pyx_v_j;
+    __pyx_t_6 = -1;
+    if (__pyx_t_16 < 0) {
+      __pyx_t_16 += __pyx_pybuffernd_sinds.diminfo[0].shape;
+      if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
+    } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_sinds.diminfo[0].shape)) __pyx_t_6 = 0;
+    if (unlikely(__pyx_t_6 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_6);
+      __PYX_ERR(0, 255, __pyx_L1_error)
+    }
+    __pyx_t_15 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_oinds.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_oinds.diminfo[0].strides)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_sinds.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_sinds.diminfo[0].strides))) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
+256:                 continue
+
      goto __pyx_L3_continue;
+
+257:             elif oinds[i] == sinds[j]:
+
    __pyx_t_16 = __pyx_v_i;
+    __pyx_t_6 = -1;
+    if (__pyx_t_16 < 0) {
+      __pyx_t_16 += __pyx_pybuffernd_oinds.diminfo[0].shape;
+      if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
+    } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_oinds.diminfo[0].shape)) __pyx_t_6 = 0;
+    if (unlikely(__pyx_t_6 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_6);
+      __PYX_ERR(0, 257, __pyx_L1_error)
+    }
+    __pyx_t_17 = __pyx_v_j;
+    __pyx_t_6 = -1;
+    if (__pyx_t_17 < 0) {
+      __pyx_t_17 += __pyx_pybuffernd_sinds.diminfo[0].shape;
+      if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_sinds.diminfo[0].shape)) __pyx_t_6 = 0;
+    if (unlikely(__pyx_t_6 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_6);
+      __PYX_ERR(0, 257, __pyx_L1_error)
+    }
+    __pyx_t_15 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_oinds.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_oinds.diminfo[0].strides)) == (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_sinds.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_sinds.diminfo[0].strides))) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+    __pyx_L3_continue:;
+  }
+  __pyx_L4_break:;
+
+258:                 result[i] = values[j]
+
      __pyx_t_17 = __pyx_v_j;
+      __pyx_t_6 = -1;
+      if (__pyx_t_17 < 0) {
+        __pyx_t_17 += __pyx_pybuffernd_values.diminfo[0].shape;
+        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_values.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 258, __pyx_L1_error)
+      }
+      __pyx_t_16 = __pyx_v_i;
+      __pyx_t_6 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_result.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 258, __pyx_L1_error)
+      }
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_result.diminfo[0].strides) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_values.diminfo[0].strides));
+
+259:                 j += 1
+
      __pyx_v_j = (__pyx_v_j + 1);
+
 260: 
+
+261:         return result
+
  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __Pyx_INCREF(((PyObject *)__pyx_v_result));
+  __pyx_r = ((PyArrayObject *)__pyx_v_result);
+  goto __pyx_L0;
+
 262: 
+
+263:     cpdef put(self, ndarray[float64_t, ndim=1] values,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_25put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_8IntIndex_put(CYTHON_UNUSED struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, CYTHON_UNUSED PyArrayObject *__pyx_v_values, CYTHON_UNUSED PyArrayObject *__pyx_v_indices, CYTHON_UNUSED PyObject *__pyx_v_to_put, int __pyx_skip_dispatch) {
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
+  __Pyx_Buffer __pyx_pybuffer_indices;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
+  __Pyx_Buffer __pyx_pybuffer_values;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("put", 0);
+  __pyx_pybuffer_values.pybuffer.buf = NULL;
+  __pyx_pybuffer_values.refcount = 0;
+  __pyx_pybuffernd_values.data = NULL;
+  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
+  __pyx_pybuffer_indices.pybuffer.buf = NULL;
+  __pyx_pybuffer_indices.refcount = 0;
+  __pyx_pybuffernd_indices.data = NULL;
+  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 263, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 263, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_put); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_25put)) {
+        __Pyx_XDECREF(__pyx_r);
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+        __pyx_t_5 = 0;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+          if (likely(__pyx_t_4)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+            __Pyx_INCREF(__pyx_t_4);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_3, function);
+            __pyx_t_5 = 1;
+          }
+        }
+        #if CYTHON_FAST_PYCALL
+        if (PyFunction_Check(__pyx_t_3)) {
+          PyObject *__pyx_temp[4] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices), __pyx_v_to_put};
+          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+        } else
+        #endif
+        #if CYTHON_FAST_PYCCALL
+        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+          PyObject *__pyx_temp[4] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices), __pyx_v_to_put};
+          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+        } else
+        #endif
+        {
+          __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 263, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_6);
+          if (__pyx_t_4) {
+            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
+          }
+          __Pyx_INCREF(((PyObject *)__pyx_v_values));
+          __Pyx_GIVEREF(((PyObject *)__pyx_v_values));
+          PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_values));
+          __Pyx_INCREF(((PyObject *)__pyx_v_indices));
+          __Pyx_GIVEREF(((PyObject *)__pyx_v_indices));
+          PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)__pyx_v_indices));
+          __Pyx_INCREF(__pyx_v_to_put);
+          __Pyx_GIVEREF(__pyx_v_to_put);
+          PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_to_put);
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_r = __pyx_t_2;
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_25put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_25put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyArrayObject *__pyx_v_values = 0;
+  PyArrayObject *__pyx_v_indices = 0;
+  PyObject *__pyx_v_to_put = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("put (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_values,&__pyx_n_s_indices,&__pyx_n_s_to_put,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_values)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_indices)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("put", 1, 3, 3, 1); __PYX_ERR(0, 263, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_to_put)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("put", 1, 3, 3, 2); __PYX_ERR(0, 263, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "put") < 0)) __PYX_ERR(0, 263, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_values = ((PyArrayObject *)values[0]);
+    __pyx_v_indices = ((PyArrayObject *)values[1]);
+    __pyx_v_to_put = values[2];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("put", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 263, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) __PYX_ERR(0, 263, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indices), __pyx_ptype_5numpy_ndarray, 1, "indices", 0))) __PYX_ERR(0, 264, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_24put(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), __pyx_v_values, __pyx_v_indices, __pyx_v_to_put);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_24put(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, PyArrayObject *__pyx_v_indices, PyObject *__pyx_v_to_put) {
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
+  __Pyx_Buffer __pyx_pybuffer_indices;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
+  __Pyx_Buffer __pyx_pybuffer_values;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("put", 0);
+  __pyx_pybuffer_values.pybuffer.buf = NULL;
+  __pyx_pybuffer_values.refcount = 0;
+  __pyx_pybuffernd_values.data = NULL;
+  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
+  __pyx_pybuffer_indices.pybuffer.buf = NULL;
+  __pyx_pybuffer_indices.refcount = 0;
+  __pyx_pybuffernd_indices.data = NULL;
+  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 263, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 263, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_8IntIndex_put(__pyx_v_self, __pyx_v_values, __pyx_v_indices, __pyx_v_to_put, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 264:               ndarray[int32_t, ndim=1] indices, object to_put):
+
 265:         pass
+
 266: 
+
+267:     cpdef take(self, ndarray[float64_t, ndim=1] values,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_27take(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_8IntIndex_take(CYTHON_UNUSED struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, CYTHON_UNUSED PyArrayObject *__pyx_v_values, CYTHON_UNUSED PyArrayObject *__pyx_v_indices, int __pyx_skip_dispatch) {
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
+  __Pyx_Buffer __pyx_pybuffer_indices;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
+  __Pyx_Buffer __pyx_pybuffer_values;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("take", 0);
+  __pyx_pybuffer_values.pybuffer.buf = NULL;
+  __pyx_pybuffer_values.refcount = 0;
+  __pyx_pybuffernd_values.data = NULL;
+  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
+  __pyx_pybuffer_indices.pybuffer.buf = NULL;
+  __pyx_pybuffer_indices.refcount = 0;
+  __pyx_pybuffernd_indices.data = NULL;
+  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 267, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 267, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_take); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 267, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_27take)) {
+        __Pyx_XDECREF(__pyx_r);
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+        __pyx_t_5 = 0;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+          if (likely(__pyx_t_4)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+            __Pyx_INCREF(__pyx_t_4);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_3, function);
+            __pyx_t_5 = 1;
+          }
+        }
+        #if CYTHON_FAST_PYCALL
+        if (PyFunction_Check(__pyx_t_3)) {
+          PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices)};
+          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+        } else
+        #endif
+        #if CYTHON_FAST_PYCCALL
+        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+          PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices)};
+          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+        } else
+        #endif
+        {
+          __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 267, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_6);
+          if (__pyx_t_4) {
+            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
+          }
+          __Pyx_INCREF(((PyObject *)__pyx_v_values));
+          __Pyx_GIVEREF(((PyObject *)__pyx_v_values));
+          PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_values));
+          __Pyx_INCREF(((PyObject *)__pyx_v_indices));
+          __Pyx_GIVEREF(((PyObject *)__pyx_v_indices));
+          PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)__pyx_v_indices));
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_r = __pyx_t_2;
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.take", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_27take(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_27take(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyArrayObject *__pyx_v_values = 0;
+  PyArrayObject *__pyx_v_indices = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("take (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_values,&__pyx_n_s_indices,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_values)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_indices)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("take", 1, 2, 2, 1); __PYX_ERR(0, 267, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "take") < 0)) __PYX_ERR(0, 267, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_values = ((PyArrayObject *)values[0]);
+    __pyx_v_indices = ((PyArrayObject *)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("take", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 267, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.take", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) __PYX_ERR(0, 267, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indices), __pyx_ptype_5numpy_ndarray, 1, "indices", 0))) __PYX_ERR(0, 268, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_26take(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), __pyx_v_values, __pyx_v_indices);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_26take(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, PyArrayObject *__pyx_v_indices) {
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
+  __Pyx_Buffer __pyx_pybuffer_indices;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
+  __Pyx_Buffer __pyx_pybuffer_values;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("take", 0);
+  __pyx_pybuffer_values.pybuffer.buf = NULL;
+  __pyx_pybuffer_values.refcount = 0;
+  __pyx_pybuffernd_values.data = NULL;
+  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
+  __pyx_pybuffer_indices.pybuffer.buf = NULL;
+  __pyx_pybuffer_indices.refcount = 0;
+  __pyx_pybuffernd_indices.data = NULL;
+  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 267, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 267, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_8IntIndex_take(__pyx_v_self, __pyx_v_values, __pyx_v_indices, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 267, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.take", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 268:                ndarray[int32_t, ndim=1] indices):
+
 269:         pass
+
 270: 
+
 271: 
+
+272: cpdef get_blocks(ndarray[int32_t, ndim=1] indices):
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_1get_blocks(PyObject *__pyx_self, PyObject *__pyx_v_indices); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_get_blocks(PyArrayObject *__pyx_v_indices, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  Py_ssize_t __pyx_v_i;
+  Py_ssize_t __pyx_v_npoints;
+  Py_ssize_t __pyx_v_result_indexer;
+  __pyx_t_5numpy_int32_t __pyx_v_block;
+  __pyx_t_5numpy_int32_t __pyx_v_length;
+  __pyx_t_5numpy_int32_t __pyx_v_cur;
+  __pyx_t_5numpy_int32_t __pyx_v_prev;
+  PyArrayObject *__pyx_v_locs = 0;
+  PyArrayObject *__pyx_v_lens = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
+  __Pyx_Buffer __pyx_pybuffer_indices;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_lens;
+  __Pyx_Buffer __pyx_pybuffer_lens;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_locs;
+  __Pyx_Buffer __pyx_pybuffer_locs;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_blocks", 0);
+  __pyx_pybuffer_locs.pybuffer.buf = NULL;
+  __pyx_pybuffer_locs.refcount = 0;
+  __pyx_pybuffernd_locs.data = NULL;
+  __pyx_pybuffernd_locs.rcbuffer = &__pyx_pybuffer_locs;
+  __pyx_pybuffer_lens.pybuffer.buf = NULL;
+  __pyx_pybuffer_lens.refcount = 0;
+  __pyx_pybuffernd_lens.data = NULL;
+  __pyx_pybuffernd_lens.rcbuffer = &__pyx_pybuffer_lens;
+  __pyx_pybuffer_indices.pybuffer.buf = NULL;
+  __pyx_pybuffer_indices.refcount = 0;
+  __pyx_pybuffernd_indices.data = NULL;
+  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 272, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_8);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.get_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_locs);
+  __Pyx_XDECREF((PyObject *)__pyx_v_lens);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_1get_blocks(PyObject *__pyx_self, PyObject *__pyx_v_indices); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_1get_blocks(PyObject *__pyx_self, PyObject *__pyx_v_indices) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_blocks (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indices), __pyx_ptype_5numpy_ndarray, 1, "indices", 0))) __PYX_ERR(0, 272, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_get_blocks(__pyx_self, ((PyArrayObject *)__pyx_v_indices));
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_get_blocks(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_indices) {
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
+  __Pyx_Buffer __pyx_pybuffer_indices;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("get_blocks", 0);
+  __pyx_pybuffer_indices.pybuffer.buf = NULL;
+  __pyx_pybuffer_indices.refcount = 0;
+  __pyx_pybuffernd_indices.data = NULL;
+  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 272, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_get_blocks(__pyx_v_indices, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 272, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.get_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 273:     cdef:
+
+274:         Py_ssize_t init_len, i, npoints, result_indexer = 0
+
  __pyx_v_result_indexer = 0;
+
+275:         int32_t block, length = 1, cur, prev
+
  __pyx_v_length = 1;
+
 276:         ndarray[int32_t, ndim=1] locs, lens
+
 277: 
+
+278:     npoints = len(indices)
+
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indices)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 278, __pyx_L1_error)
+  __pyx_v_npoints = __pyx_t_1;
+
 279: 
+
 280:     # just handle the special empty case separately
+
+281:     if npoints == 0:
+
  __pyx_t_2 = ((__pyx_v_npoints == 0) != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+282:         return np.array([], dtype=np.int32), np.array([], dtype=np.int32)
+
    __Pyx_XDECREF(__pyx_r);
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_GIVEREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
+    __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int32); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_GIVEREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
+    __pyx_t_3 = 0;
+    __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_6);
+    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_8);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_GIVEREF(__pyx_t_7);
+    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7);
+    __Pyx_GIVEREF(__pyx_t_8);
+    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_8);
+    __pyx_t_7 = 0;
+    __pyx_t_8 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
 283: 
+
 284:     # block size can't be longer than npoints
+
+285:     locs = np.empty(npoints, dtype=np.int32)
+
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_8);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_npoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_GIVEREF(__pyx_t_3);
+  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
+  __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 285, __pyx_L1_error)
+  __pyx_t_9 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
+    __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_10 < 0)) {
+      PyErr_Fetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)__pyx_v_locs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
+      }
+      __pyx_t_11 = __pyx_t_12 = __pyx_t_13 = 0;
+    }
+    __pyx_pybuffernd_locs.diminfo[0].strides = __pyx_pybuffernd_locs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_locs.diminfo[0].shape = __pyx_pybuffernd_locs.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 285, __pyx_L1_error)
+  }
+  __pyx_t_9 = 0;
+  __pyx_v_locs = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
+286:     lens = np.empty(npoints, dtype=np.int32)
+
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_npoints); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_8);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
+  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 286, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  __Pyx_DECREF(__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_ERR(0, 286, __pyx_L1_error)
+  __pyx_t_9 = ((PyArrayObject *)__pyx_t_4);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
+    __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_10 < 0)) {
+      PyErr_Fetch(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)__pyx_v_lens, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_11);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_13, __pyx_t_12, __pyx_t_11);
+      }
+      __pyx_t_13 = __pyx_t_12 = __pyx_t_11 = 0;
+    }
+    __pyx_pybuffernd_lens.diminfo[0].strides = __pyx_pybuffernd_lens.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lens.diminfo[0].shape = __pyx_pybuffernd_lens.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 286, __pyx_L1_error)
+  }
+  __pyx_t_9 = 0;
+  __pyx_v_lens = ((PyArrayObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
+
 287: 
+
 288:     # TODO: two-pass algorithm faster?
+
+289:     prev = block = indices[0]
+
  __pyx_t_14 = 0;
+  __pyx_t_10 = -1;
+  if (__pyx_t_14 < 0) {
+    __pyx_t_14 += __pyx_pybuffernd_indices.diminfo[0].shape;
+    if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 0;
+  } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_indices.diminfo[0].shape)) __pyx_t_10 = 0;
+  if (unlikely(__pyx_t_10 != -1)) {
+    __Pyx_RaiseBufferIndexError(__pyx_t_10);
+    __PYX_ERR(0, 289, __pyx_L1_error)
+  }
+  __pyx_t_15 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_indices.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_indices.diminfo[0].strides));
+  __pyx_v_prev = __pyx_t_15;
+  __pyx_v_block = __pyx_t_15;
+
+290:     for i in range(1, npoints):
+
  __pyx_t_1 = __pyx_v_npoints;
+  __pyx_t_16 = __pyx_t_1;
+  for (__pyx_t_17 = 1; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
+    __pyx_v_i = __pyx_t_17;
+
+291:         cur = indices[i]
+
    __pyx_t_14 = __pyx_v_i;
+    __pyx_t_10 = -1;
+    if (__pyx_t_14 < 0) {
+      __pyx_t_14 += __pyx_pybuffernd_indices.diminfo[0].shape;
+      if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 0;
+    } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_indices.diminfo[0].shape)) __pyx_t_10 = 0;
+    if (unlikely(__pyx_t_10 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_10);
+      __PYX_ERR(0, 291, __pyx_L1_error)
+    }
+    __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_indices.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_indices.diminfo[0].strides));
+
+292:         if cur - prev > 1:
+
    __pyx_t_2 = (((__pyx_v_cur - __pyx_v_prev) > 1) != 0);
+    if (__pyx_t_2) {
+/* … */
+      goto __pyx_L6;
+    }
+
 293:             # new block
+
+294:             locs[result_indexer] = block
+
      __pyx_t_14 = __pyx_v_result_indexer;
+      __pyx_t_10 = -1;
+      if (__pyx_t_14 < 0) {
+        __pyx_t_14 += __pyx_pybuffernd_locs.diminfo[0].shape;
+        if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 0;
+      } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_10 = 0;
+      if (unlikely(__pyx_t_10 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_10);
+        __PYX_ERR(0, 294, __pyx_L1_error)
+      }
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_locs.diminfo[0].strides) = __pyx_v_block;
+
+295:             lens[result_indexer] = length
+
      __pyx_t_14 = __pyx_v_result_indexer;
+      __pyx_t_10 = -1;
+      if (__pyx_t_14 < 0) {
+        __pyx_t_14 += __pyx_pybuffernd_lens.diminfo[0].shape;
+        if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 0;
+      } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_lens.diminfo[0].shape)) __pyx_t_10 = 0;
+      if (unlikely(__pyx_t_10 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_10);
+        __PYX_ERR(0, 295, __pyx_L1_error)
+      }
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_lens.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_lens.diminfo[0].strides) = __pyx_v_length;
+
+296:             block = cur
+
      __pyx_v_block = __pyx_v_cur;
+
+297:             length = 1
+
      __pyx_v_length = 1;
+
+298:             result_indexer += 1
+
      __pyx_v_result_indexer = (__pyx_v_result_indexer + 1);
+
 299:         else:
+
 300:             # same block, increment length
+
+301:             length += 1
+
    /*else*/ {
+      __pyx_v_length = (__pyx_v_length + 1);
+    }
+    __pyx_L6:;
+
 302: 
+
+303:         prev = cur
+
    __pyx_v_prev = __pyx_v_cur;
+  }
+
 304: 
+
+305:     locs[result_indexer] = block
+
  __pyx_t_14 = __pyx_v_result_indexer;
+  __pyx_t_10 = -1;
+  if (__pyx_t_14 < 0) {
+    __pyx_t_14 += __pyx_pybuffernd_locs.diminfo[0].shape;
+    if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 0;
+  } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_10 = 0;
+  if (unlikely(__pyx_t_10 != -1)) {
+    __Pyx_RaiseBufferIndexError(__pyx_t_10);
+    __PYX_ERR(0, 305, __pyx_L1_error)
+  }
+  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_locs.diminfo[0].strides) = __pyx_v_block;
+
+306:     lens[result_indexer] = length
+
  __pyx_t_14 = __pyx_v_result_indexer;
+  __pyx_t_10 = -1;
+  if (__pyx_t_14 < 0) {
+    __pyx_t_14 += __pyx_pybuffernd_lens.diminfo[0].shape;
+    if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 0;
+  } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_lens.diminfo[0].shape)) __pyx_t_10 = 0;
+  if (unlikely(__pyx_t_10 != -1)) {
+    __Pyx_RaiseBufferIndexError(__pyx_t_10);
+    __PYX_ERR(0, 306, __pyx_L1_error)
+  }
+  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_lens.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_lens.diminfo[0].strides) = __pyx_v_length;
+
+307:     result_indexer += 1
+
  __pyx_v_result_indexer = (__pyx_v_result_indexer + 1);
+
+308:     locs = locs[:result_indexer]
+
  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 308, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PySlice_New(Py_None, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_locs), __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 308, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__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_ERR(0, 308, __pyx_L1_error)
+  __pyx_t_9 = ((PyArrayObject *)__pyx_t_4);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
+    __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_10 < 0)) {
+      PyErr_Fetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)__pyx_v_locs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
+      }
+      __pyx_t_11 = __pyx_t_12 = __pyx_t_13 = 0;
+    }
+    __pyx_pybuffernd_locs.diminfo[0].strides = __pyx_pybuffernd_locs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_locs.diminfo[0].shape = __pyx_pybuffernd_locs.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 308, __pyx_L1_error)
+  }
+  __pyx_t_9 = 0;
+  __Pyx_DECREF_SET(__pyx_v_locs, ((PyArrayObject *)__pyx_t_4));
+  __pyx_t_4 = 0;
+
+309:     lens = lens[:result_indexer]
+
  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PySlice_New(Py_None, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_lens), __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__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_ERR(0, 309, __pyx_L1_error)
+  __pyx_t_9 = ((PyArrayObject *)__pyx_t_4);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
+    __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_10 < 0)) {
+      PyErr_Fetch(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)__pyx_v_lens, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_11);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_13, __pyx_t_12, __pyx_t_11);
+      }
+      __pyx_t_13 = __pyx_t_12 = __pyx_t_11 = 0;
+    }
+    __pyx_pybuffernd_lens.diminfo[0].strides = __pyx_pybuffernd_lens.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lens.diminfo[0].shape = __pyx_pybuffernd_lens.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 309, __pyx_L1_error)
+  }
+  __pyx_t_9 = 0;
+  __Pyx_DECREF_SET(__pyx_v_lens, ((PyArrayObject *)__pyx_t_4));
+  __pyx_t_4 = 0;
+
+310:     return locs, lens
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 310, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_INCREF(((PyObject *)__pyx_v_locs));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_locs));
+  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_locs));
+  __Pyx_INCREF(((PyObject *)__pyx_v_lens));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_lens));
+  PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_lens));
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
 311: 
+
 312: 
+
 313: # -----------------------------------------------------------------------------
+
 314: # BlockIndex
+
 315: 
+
+316: cdef class BlockIndex(SparseIndex):
+
struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex {
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex __pyx_base;
+  struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *__pyx_vtab;
+  __pyx_t_5numpy_int32_t nblocks;
+  __pyx_t_5numpy_int32_t npoints;
+  __pyx_t_5numpy_int32_t length;
+  PyArrayObject *blocs;
+  PyArrayObject *blengths;
+  PyObject *__weakref__;
+  __pyx_t_5numpy_int32_t *locbuf;
+  __pyx_t_5numpy_int32_t *lenbuf;
+};
+/* … */
+struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex {
+  PyObject *(*check_integrity)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, int __pyx_skip_dispatch);
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *(*intersect)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *, int __pyx_skip_dispatch);
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *(*make_union)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *, int __pyx_skip_dispatch);
+  Py_ssize_t (*lookup)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, Py_ssize_t, int __pyx_skip_dispatch);
+  PyArrayObject *(*lookup_array)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, PyArrayObject *, int __pyx_skip_dispatch);
+  PyArrayObject *(*reindex)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, PyArrayObject *, __pyx_t_5numpy_float64_t, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *, int __pyx_skip_dispatch);
+  PyObject *(*put)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, PyArrayObject *, PyArrayObject *, PyObject *, int __pyx_skip_dispatch);
+  PyObject *(*take)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, PyArrayObject *, PyArrayObject *, int __pyx_skip_dispatch);
+};
+static struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *__pyx_vtabptr_6pandas_5_libs_6sparse_BlockIndex;
+
+
 317:     """
+
 318:     Object for holding block-based sparse indexing information
+
 319: 
+
 320:     Parameters
+
 321:     ----------
+
 322:     """
+
 323:     cdef readonly:
+
+324:         int32_t nblocks, npoints, length
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7nblocks_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7nblocks_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_7nblocks___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_7nblocks___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->nblocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.nblocks.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7npoints_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7npoints_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_7npoints___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_7npoints___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.npoints.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_6length_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_6length_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_6length___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_6length___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.length.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+325:         ndarray blocs, blengths
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_5blocs_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_5blocs_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_5blocs___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_5blocs___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->blocs));
+  __pyx_r = ((PyObject *)__pyx_v_self->blocs);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_8blengths_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_8blengths_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_8blengths___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_8blengths___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->blengths));
+  __pyx_r = ((PyObject *)__pyx_v_self->blengths);
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 326: 
+
 327:     cdef:
+
 328:         object __weakref__  # need to be picklable
+
 329:         int32_t *locbuf
+
 330:         int32_t *lenbuf
+
 331: 
+
+332:     def __init__(self, length, blocs, blengths):
+
/* Python wrapper */
+static int __pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyObject *__pyx_v_length = 0;
+  PyObject *__pyx_v_blocs = 0;
+  PyObject *__pyx_v_blengths = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_length,&__pyx_n_s_blocs,&__pyx_n_s_blengths,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_length)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_blocs)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 332, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_blengths)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 332, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 332, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_length = values[0];
+    __pyx_v_blocs = values[1];
+    __pyx_v_blengths = values[2];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 332, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex___init__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), __pyx_v_length, __pyx_v_blocs, __pyx_v_blengths);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex___init__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyObject *__pyx_v_length, PyObject *__pyx_v_blocs, PyObject *__pyx_v_blengths) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 333: 
+
+334:         self.blocs = np.ascontiguousarray(blocs, dtype=np.int32)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 334, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(__pyx_v_blocs);
+  __Pyx_GIVEREF(__pyx_v_blocs);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_blocs);
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 334, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 334, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 334, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 334, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 334, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_5);
+  __Pyx_GOTREF(__pyx_v_self->blocs);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->blocs));
+  __pyx_v_self->blocs = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
+335:         self.blengths = np.ascontiguousarray(blengths, dtype=np.int32)
+
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 335, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 335, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 335, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_INCREF(__pyx_v_blengths);
+  __Pyx_GIVEREF(__pyx_v_blengths);
+  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_blengths);
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 335, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 335, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __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_ERR(0, 335, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_4);
+  __Pyx_GOTREF(__pyx_v_self->blengths);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->blengths));
+  __pyx_v_self->blengths = ((PyArrayObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
+
 336: 
+
 337:         # in case we need
+
+338:         self.locbuf = <int32_t*>self.blocs.data
+
  __pyx_v_self->locbuf = ((__pyx_t_5numpy_int32_t *)__pyx_v_self->blocs->data);
+
+339:         self.lenbuf = <int32_t*>self.blengths.data
+
  __pyx_v_self->lenbuf = ((__pyx_t_5numpy_int32_t *)__pyx_v_self->blengths->data);
+
 340: 
+
+341:         self.length = length
+
  __pyx_t_6 = __Pyx_PyInt_As_npy_int32(__pyx_v_length); if (unlikely((__pyx_t_6 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 341, __pyx_L1_error)
+  __pyx_v_self->length = __pyx_t_6;
+
+342:         self.nblocks = np.int32(len(self.blocs))
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 342, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = ((PyObject *)__pyx_v_self->blocs);
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_7 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 342, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = NULL;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
+    }
+  }
+  __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 342, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_6 = __Pyx_PyInt_As_npy_int32(__pyx_t_4); if (unlikely((__pyx_t_6 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 342, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_v_self->nblocks = __pyx_t_6;
+
+343:         self.npoints = self.blengths.sum()
+
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->blengths), __pyx_n_s_sum); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 343, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
+    if (likely(__pyx_t_1)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+      __Pyx_INCREF(__pyx_t_1);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_5, function);
+    }
+  }
+  __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 343, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_6 = __Pyx_PyInt_As_npy_int32(__pyx_t_4); if (unlikely((__pyx_t_6 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 343, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_v_self->npoints = __pyx_t_6;
+
 344: 
+
 345:         # self.block_start = blocs
+
 346:         # self.block_end = blocs + blengths
+
 347: 
+
+348:         self.check_integrity()
+
  __pyx_t_4 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self->__pyx_vtab)->check_integrity(__pyx_v_self, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 348, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+
 349: 
+
+350:     def __reduce__(self):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_3__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_3__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_2__reduce__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_2__reduce__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
+  PyObject *__pyx_v_args = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__reduce__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_args);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+351:         args = (self.length, self.blocs, self.blengths)
+
  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 351, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 351, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->blocs));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->blocs));
+  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->blocs));
+  __Pyx_INCREF(((PyObject *)__pyx_v_self->blengths));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->blengths));
+  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->blengths));
+  __pyx_t_1 = 0;
+  __pyx_v_args = ((PyObject*)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+352:         return BlockIndex, args
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 352, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockIndex));
+  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockIndex));
+  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockIndex));
+  __Pyx_INCREF(__pyx_v_args);
+  __Pyx_GIVEREF(__pyx_v_args);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_args);
+  __pyx_r = __pyx_t_2;
+  __pyx_t_2 = 0;
+  goto __pyx_L0;
+
 353: 
+
+354:     def __repr__(self) -> str:
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_5__repr__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_5__repr__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_4__repr__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_4__repr__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
+  PyObject *__pyx_v_output = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__repr__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_output);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+355:         output = 'BlockIndex\n'
+
  __Pyx_INCREF(__pyx_n_u_BlockIndex);
+  __pyx_v_output = __pyx_n_u_BlockIndex;
+
+356:         output += f'Block locations: {repr(self.blocs)}\n'
+
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = 0;
+  __pyx_t_3 = 127;
+  __Pyx_INCREF(__pyx_kp_u_Block_locations);
+  __pyx_t_2 += 17;
+  __Pyx_GIVEREF(__pyx_kp_u_Block_locations);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Block_locations);
+  __pyx_t_4 = ((PyObject *)__pyx_v_self->blocs);
+  __Pyx_INCREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_Repr(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 356, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3;
+  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
+  __pyx_t_4 = 0;
+  __Pyx_INCREF(__pyx_kp_u_);
+  __pyx_t_2 += 1;
+  __Pyx_GIVEREF(__pyx_kp_u_);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_);
+  __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_v_output, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF_SET(__pyx_v_output, ((PyObject*)__pyx_t_1));
+  __pyx_t_1 = 0;
+
+357:         output += f'Block lengths: {repr(self.blengths)}'
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blengths);
+  __Pyx_INCREF(__pyx_t_1);
+  __pyx_t_4 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 357, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 357, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Block_lengths, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 357, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_v_output, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 357, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF_SET(__pyx_v_output, ((PyObject*)__pyx_t_1));
+  __pyx_t_1 = 0;
+
 358: 
+
+359:         return output
+
  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(__pyx_v_output);
+  __pyx_r = __pyx_v_output;
+  goto __pyx_L0;
+
 360: 
+
 361:     @property
+
+362:     def nbytes(self) -> int:
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_6nbytes_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_6nbytes_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_6nbytes___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_6nbytes___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.nbytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+363:         return self.blocs.nbytes + self.blengths.nbytes
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->blocs), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 363, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->blengths), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 363, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 363, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_3;
+  __pyx_t_3 = 0;
+  goto __pyx_L0;
+
 364: 
+
 365:     @property
+
+366:     def ngaps(self) -> int:
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_5ngaps_1__get__(PyObject *__pyx_v_self); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_5ngaps_1__get__(PyObject *__pyx_v_self) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_5ngaps___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_5ngaps___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__get__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.ngaps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+367:         return self.length - self.npoints
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32((__pyx_v_self->length - __pyx_v_self->npoints)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 367, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 368: 
+
+369:     cpdef check_integrity(self):
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7check_integrity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_check_integrity(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, int __pyx_skip_dispatch) {
+  Py_ssize_t __pyx_v_i;
+  PyArrayObject *__pyx_v_blocs = 0;
+  PyArrayObject *__pyx_v_blengths = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_blengths;
+  __Pyx_Buffer __pyx_pybuffer_blengths;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_blocs;
+  __Pyx_Buffer __pyx_pybuffer_blocs;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("check_integrity", 0);
+  __pyx_pybuffer_blocs.pybuffer.buf = NULL;
+  __pyx_pybuffer_blocs.refcount = 0;
+  __pyx_pybuffernd_blocs.data = NULL;
+  __pyx_pybuffernd_blocs.rcbuffer = &__pyx_pybuffer_blocs;
+  __pyx_pybuffer_blengths.pybuffer.buf = NULL;
+  __pyx_pybuffer_blengths.refcount = 0;
+  __pyx_pybuffernd_blengths.data = NULL;
+  __pyx_pybuffernd_blengths.rcbuffer = &__pyx_pybuffer_blengths;
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_check_integrity); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7check_integrity)) {
+        __Pyx_XDECREF(__pyx_r);
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+          if (likely(__pyx_t_4)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+            __Pyx_INCREF(__pyx_t_4);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_3, function);
+          }
+        }
+        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 369, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_r = __pyx_t_2;
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_blengths.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_blocs.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.check_integrity", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_blengths.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_blocs.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_blocs);
+  __Pyx_XDECREF((PyObject *)__pyx_v_blengths);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7check_integrity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static char __pyx_doc_6pandas_5_libs_6sparse_10BlockIndex_6check_integrity[] = "\n        Check:\n        - Locations are in ascending order\n        - No overlapping blocks\n        - Blocks to not start after end of index, nor extend beyond end\n        ";
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7check_integrity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("check_integrity (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_6check_integrity(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_6check_integrity(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("check_integrity", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_10BlockIndex_check_integrity(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.check_integrity", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 370:         """
+
 371:         Check:
+
 372:         - Locations are in ascending order
+
 373:         - No overlapping blocks
+
 374:         - Blocks to not start after end of index, nor extend beyond end
+
 375:         """
+
 376:         cdef:
+
 377:             Py_ssize_t i
+
 378:             ndarray[int32_t, ndim=1] blocs, blengths
+
 379: 
+
+380:         blocs = self.blocs
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blocs);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_blocs.rcbuffer->pybuffer);
+    __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_blocs.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_5 < 0)) {
+      PyErr_Fetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_blocs.rcbuffer->pybuffer, (PyObject*)__pyx_v_blocs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+      }
+      __pyx_t_6 = __pyx_t_7 = __pyx_t_8 = 0;
+    }
+    __pyx_pybuffernd_blocs.diminfo[0].strides = __pyx_pybuffernd_blocs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_blocs.diminfo[0].shape = __pyx_pybuffernd_blocs.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 380, __pyx_L1_error)
+  }
+  __pyx_v_blocs = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+381:         blengths = self.blengths
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blengths);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_blengths.rcbuffer->pybuffer);
+    __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_blengths.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_5 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_blengths.rcbuffer->pybuffer, (PyObject*)__pyx_v_blengths, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_6);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_7, __pyx_t_6);
+      }
+      __pyx_t_8 = __pyx_t_7 = __pyx_t_6 = 0;
+    }
+    __pyx_pybuffernd_blengths.diminfo[0].strides = __pyx_pybuffernd_blengths.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_blengths.diminfo[0].shape = __pyx_pybuffernd_blengths.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 381, __pyx_L1_error)
+  }
+  __pyx_v_blengths = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
 382: 
+
+383:         if len(blocs) != len(blengths):
+
  __pyx_t_9 = PyObject_Length(((PyObject *)__pyx_v_blocs)); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 383, __pyx_L1_error)
+  __pyx_t_10 = PyObject_Length(((PyObject *)__pyx_v_blengths)); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 383, __pyx_L1_error)
+  __pyx_t_11 = ((__pyx_t_9 != __pyx_t_10) != 0);
+  if (unlikely(__pyx_t_11)) {
+/* … */
+  }
+
+384:             raise ValueError('block bound arrays must be same length')
+
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 384, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(0, 384, __pyx_L1_error)
+/* … */
+  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_block_bound_arrays_must_be_same); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 384, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__9);
+  __Pyx_GIVEREF(__pyx_tuple__9);
+
 385: 
+
+386:         for i in range(self.nblocks):
+
  __pyx_t_12 = __pyx_v_self->nblocks;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_13; __pyx_t_10+=1) {
+    __pyx_v_i = __pyx_t_10;
+
+387:             if i > 0:
+
    __pyx_t_11 = ((__pyx_v_i > 0) != 0);
+    if (__pyx_t_11) {
+/* … */
+    }
+
+388:                 if blocs[i] <= blocs[i - 1]:
+
      __pyx_t_14 = __pyx_v_i;
+      __pyx_t_5 = -1;
+      if (__pyx_t_14 < 0) {
+        __pyx_t_14 += __pyx_pybuffernd_blocs.diminfo[0].shape;
+        if (unlikely(__pyx_t_14 < 0)) __pyx_t_5 = 0;
+      } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_blocs.diminfo[0].shape)) __pyx_t_5 = 0;
+      if (unlikely(__pyx_t_5 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_5);
+        __PYX_ERR(0, 388, __pyx_L1_error)
+      }
+      __pyx_t_15 = (__pyx_v_i - 1);
+      __pyx_t_5 = -1;
+      if (__pyx_t_15 < 0) {
+        __pyx_t_15 += __pyx_pybuffernd_blocs.diminfo[0].shape;
+        if (unlikely(__pyx_t_15 < 0)) __pyx_t_5 = 0;
+      } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_blocs.diminfo[0].shape)) __pyx_t_5 = 0;
+      if (unlikely(__pyx_t_5 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_5);
+        __PYX_ERR(0, 388, __pyx_L1_error)
+      }
+      __pyx_t_11 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blocs.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_blocs.diminfo[0].strides)) <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blocs.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_blocs.diminfo[0].strides))) != 0);
+      if (unlikely(__pyx_t_11)) {
+/* … */
+      }
+
+389:                     raise ValueError('Locations not in ascending order')
+
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 389, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __PYX_ERR(0, 389, __pyx_L1_error)
+/* … */
+  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Locations_not_in_ascending_order); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 389, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__10);
+  __Pyx_GIVEREF(__pyx_tuple__10);
+
 390: 
+
+391:             if i < self.nblocks - 1:
+
    __pyx_t_11 = ((__pyx_v_i < (__pyx_v_self->nblocks - 1)) != 0);
+    if (__pyx_t_11) {
+/* … */
+      goto __pyx_L8;
+    }
+
+392:                 if blocs[i] + blengths[i] > blocs[i + 1]:
+
      __pyx_t_15 = __pyx_v_i;
+      __pyx_t_5 = -1;
+      if (__pyx_t_15 < 0) {
+        __pyx_t_15 += __pyx_pybuffernd_blocs.diminfo[0].shape;
+        if (unlikely(__pyx_t_15 < 0)) __pyx_t_5 = 0;
+      } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_blocs.diminfo[0].shape)) __pyx_t_5 = 0;
+      if (unlikely(__pyx_t_5 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_5);
+        __PYX_ERR(0, 392, __pyx_L1_error)
+      }
+      __pyx_t_14 = __pyx_v_i;
+      __pyx_t_5 = -1;
+      if (__pyx_t_14 < 0) {
+        __pyx_t_14 += __pyx_pybuffernd_blengths.diminfo[0].shape;
+        if (unlikely(__pyx_t_14 < 0)) __pyx_t_5 = 0;
+      } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_blengths.diminfo[0].shape)) __pyx_t_5 = 0;
+      if (unlikely(__pyx_t_5 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_5);
+        __PYX_ERR(0, 392, __pyx_L1_error)
+      }
+      __pyx_t_16 = (__pyx_v_i + 1);
+      __pyx_t_5 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_blocs.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_5 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_blocs.diminfo[0].shape)) __pyx_t_5 = 0;
+      if (unlikely(__pyx_t_5 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_5);
+        __PYX_ERR(0, 392, __pyx_L1_error)
+      }
+      __pyx_t_11 = ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blocs.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_blocs.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blengths.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_blengths.diminfo[0].strides))) > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blocs.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_blocs.diminfo[0].strides))) != 0);
+      if (unlikely(__pyx_t_11)) {
+/* … */
+      }
+
+393:                     raise ValueError(f'Block {i} overlaps')
+
        __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 393, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __pyx_t_9 = 0;
+        __pyx_t_17 = 127;
+        __Pyx_INCREF(__pyx_kp_u_Block);
+        __pyx_t_9 += 6;
+        __Pyx_GIVEREF(__pyx_kp_u_Block);
+        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Block);
+        __pyx_t_2 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 393, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2);
+        __Pyx_GIVEREF(__pyx_t_2);
+        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
+        __pyx_t_2 = 0;
+        __Pyx_INCREF(__pyx_kp_u_overlaps);
+        __pyx_t_9 += 9;
+        __Pyx_GIVEREF(__pyx_kp_u_overlaps);
+        PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_overlaps);
+        __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_9, __pyx_t_17); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 393, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 393, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __PYX_ERR(0, 393, __pyx_L1_error)
+
 394:             else:
+
+395:                 if blocs[i] + blengths[i] > self.length:
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_i;
+      __pyx_t_5 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_blocs.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_5 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_blocs.diminfo[0].shape)) __pyx_t_5 = 0;
+      if (unlikely(__pyx_t_5 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_5);
+        __PYX_ERR(0, 395, __pyx_L1_error)
+      }
+      __pyx_t_14 = __pyx_v_i;
+      __pyx_t_5 = -1;
+      if (__pyx_t_14 < 0) {
+        __pyx_t_14 += __pyx_pybuffernd_blengths.diminfo[0].shape;
+        if (unlikely(__pyx_t_14 < 0)) __pyx_t_5 = 0;
+      } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_blengths.diminfo[0].shape)) __pyx_t_5 = 0;
+      if (unlikely(__pyx_t_5 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_5);
+        __PYX_ERR(0, 395, __pyx_L1_error)
+      }
+      __pyx_t_11 = ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blocs.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_blocs.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blengths.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_blengths.diminfo[0].strides))) > __pyx_v_self->length) != 0);
+      if (unlikely(__pyx_t_11)) {
+/* … */
+      }
+    }
+    __pyx_L8:;
+
+396:                     raise ValueError(f'Block {i} extends beyond end')
+
        __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 396, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __pyx_t_9 = 0;
+        __pyx_t_17 = 127;
+        __Pyx_INCREF(__pyx_kp_u_Block);
+        __pyx_t_9 += 6;
+        __Pyx_GIVEREF(__pyx_kp_u_Block);
+        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Block);
+        __pyx_t_2 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 396, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2);
+        __Pyx_GIVEREF(__pyx_t_2);
+        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
+        __pyx_t_2 = 0;
+        __Pyx_INCREF(__pyx_kp_u_extends_beyond_end);
+        __pyx_t_9 += 19;
+        __Pyx_GIVEREF(__pyx_kp_u_extends_beyond_end);
+        PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_extends_beyond_end);
+        __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_9, __pyx_t_17); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 396, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 396, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_1);
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        __PYX_ERR(0, 396, __pyx_L1_error)
+
 397: 
+
 398:             # no zero-length blocks
+
+399:             if blengths[i] == 0:
+
    __pyx_t_14 = __pyx_v_i;
+    __pyx_t_5 = -1;
+    if (__pyx_t_14 < 0) {
+      __pyx_t_14 += __pyx_pybuffernd_blengths.diminfo[0].shape;
+      if (unlikely(__pyx_t_14 < 0)) __pyx_t_5 = 0;
+    } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_blengths.diminfo[0].shape)) __pyx_t_5 = 0;
+    if (unlikely(__pyx_t_5 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_5);
+      __PYX_ERR(0, 399, __pyx_L1_error)
+    }
+    __pyx_t_11 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blengths.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_blengths.diminfo[0].strides)) == 0) != 0);
+    if (unlikely(__pyx_t_11)) {
+/* … */
+    }
+  }
+
+400:                 raise ValueError(f'Zero-length block {i}')
+
      __pyx_t_1 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 400, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Zero_length_block, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 400, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_2);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 400, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      __PYX_ERR(0, 400, __pyx_L1_error)
+
 401: 
+
+402:     def equals(self, other: object) -> bool:
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_9equals(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_9equals(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("equals (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_8equals(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), ((PyObject *)__pyx_v_other));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_8equals(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyObject *__pyx_v_other) {
+  PyObject *__pyx_v_same_length = NULL;
+  PyObject *__pyx_v_same_blocks = NULL;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("equals", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_XDECREF(__pyx_t_7);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.equals", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XDECREF(__pyx_v_same_length);
+  __Pyx_XDECREF(__pyx_v_same_blocks);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+403:         if not isinstance(other, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+404:             return False
+
    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_False);
+    __pyx_r = Py_False;
+    goto __pyx_L0;
+
 405: 
+
+406:         if self is other:
+
  __pyx_t_2 = (((PyObject *)__pyx_v_self) == __pyx_v_other);
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (__pyx_t_1) {
+/* … */
+  }
+
+407:             return True
+
    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(Py_True);
+    __pyx_r = Py_True;
+    goto __pyx_L0;
+
 408: 
+
+409:         same_length = self.length == other.length
+
  __pyx_t_3 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->length); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 409, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_length); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 409, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 409, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_v_same_length = __pyx_t_5;
+  __pyx_t_5 = 0;
+
+410:         same_blocks = (np.array_equal(self.blocs, other.blocs) and
+
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 410, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array_equal); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 410, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_blocs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 410, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __pyx_t_7 = NULL;
+  __pyx_t_8 = 0;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
+    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
+    if (likely(__pyx_t_7)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
+      __Pyx_INCREF(__pyx_t_7);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_6, function);
+      __pyx_t_8 = 1;
+    }
+  }
+  #if CYTHON_FAST_PYCALL
+  if (PyFunction_Check(__pyx_t_6)) {
+    PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_self->blocs), __pyx_t_3};
+    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 410, __pyx_L1_error)
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  } else
+  #endif
+  #if CYTHON_FAST_PYCCALL
+  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
+    PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_self->blocs), __pyx_t_3};
+    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 410, __pyx_L1_error)
+    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  } else
+  #endif
+  {
+    __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 410, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_9);
+    if (__pyx_t_7) {
+      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
+    }
+    __Pyx_INCREF(((PyObject *)__pyx_v_self->blocs));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_self->blocs));
+    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, ((PyObject *)__pyx_v_self->blocs));
+    __Pyx_GIVEREF(__pyx_t_3);
+    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_3);
+    __pyx_t_3 = 0;
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 410, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 410, __pyx_L1_error)
+  if (__pyx_t_1) {
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  } else {
+    __Pyx_INCREF(__pyx_t_4);
+    __pyx_t_5 = __pyx_t_4;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    goto __pyx_L5_bool_binop_done;
+  }
+
+411:                        np.array_equal(self.blengths, other.blengths))
+
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 411, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array_equal); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 411, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_blengths); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 411, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_3 = NULL;
+  __pyx_t_8 = 0;
+  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_9, function);
+      __pyx_t_8 = 1;
+    }
+  }
+  #if CYTHON_FAST_PYCALL
+  if (PyFunction_Check(__pyx_t_9)) {
+    PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self->blengths), __pyx_t_6};
+    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  } else
+  #endif
+  #if CYTHON_FAST_PYCCALL
+  if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
+    PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self->blengths), __pyx_t_6};
+    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  } else
+  #endif
+  {
+    __pyx_t_7 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_7);
+    if (__pyx_t_3) {
+      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
+    }
+    __Pyx_INCREF(((PyObject *)__pyx_v_self->blengths));
+    __Pyx_GIVEREF(((PyObject *)__pyx_v_self->blengths));
+    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, ((PyObject *)__pyx_v_self->blengths));
+    __Pyx_GIVEREF(__pyx_t_6);
+    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_t_6);
+    __pyx_t_6 = 0;
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  }
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_INCREF(__pyx_t_4);
+  __pyx_t_5 = __pyx_t_4;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_L5_bool_binop_done:;
+  __pyx_v_same_blocks = __pyx_t_5;
+  __pyx_t_5 = 0;
+
+412:         return same_length and same_blocks
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_same_length); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 412, __pyx_L1_error)
+  if (__pyx_t_1) {
+  } else {
+    __Pyx_INCREF(__pyx_v_same_length);
+    __pyx_t_5 = __pyx_v_same_length;
+    goto __pyx_L7_bool_binop_done;
+  }
+  __Pyx_INCREF(__pyx_v_same_blocks);
+  __pyx_t_5 = __pyx_v_same_blocks;
+  __pyx_L7_bool_binop_done:;
+  __pyx_r = __pyx_t_5;
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
 413: 
+
+414:     def to_block_index(self):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_11to_block_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_11to_block_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("to_block_index (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_10to_block_index(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_10to_block_index(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("to_block_index", 0);
+/* … */
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+415:         return self
+
  __Pyx_XDECREF(__pyx_r);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self));
+  __pyx_r = ((PyObject *)__pyx_v_self);
+  goto __pyx_L0;
+
 416: 
+
+417:     def to_int_index(self):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_13to_int_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_13to_int_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("to_int_index (wrapper)", 0);
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_12to_int_index(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_12to_int_index(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
+  __pyx_t_5numpy_int32_t __pyx_v_i;
+  __pyx_t_5numpy_int32_t __pyx_v_j;
+  __pyx_t_5numpy_int32_t __pyx_v_b;
+  __pyx_t_5numpy_int32_t __pyx_v_offset;
+  PyArrayObject *__pyx_v_indices = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
+  __Pyx_Buffer __pyx_pybuffer_indices;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("to_int_index", 0);
+  __pyx_pybuffer_indices.pybuffer.buf = NULL;
+  __pyx_pybuffer_indices.refcount = 0;
+  __pyx_pybuffernd_indices.data = NULL;
+  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.to_int_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_indices);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 418:         cdef:
+
+419:             int32_t i = 0, j, b
+
  __pyx_v_i = 0;
+
 420:             int32_t offset
+
 421:             ndarray[int32_t, ndim=1] indices
+
 422: 
+
+423:         indices = np.empty(self.npoints, dtype=np.int32)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 423, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 423, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 423, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 423, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 423, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 423, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 423, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 423, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 423, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(0, 423, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 423, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_indices = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 424: 
+
+425:         for b in range(self.nblocks):
+
  __pyx_t_11 = __pyx_v_self->nblocks;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_b = __pyx_t_13;
+
+426:             offset = self.locbuf[b]
+
    __pyx_v_offset = (__pyx_v_self->locbuf[__pyx_v_b]);
+
 427: 
+
+428:             for j in range(self.lenbuf[b]):
+
    __pyx_t_14 = (__pyx_v_self->lenbuf[__pyx_v_b]);
+    __pyx_t_15 = __pyx_t_14;
+    for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
+      __pyx_v_j = __pyx_t_16;
+
+429:                 indices[i] = offset + j
+
      __pyx_t_17 = __pyx_v_i;
+      __pyx_t_7 = -1;
+      if (__pyx_t_17 < 0) {
+        __pyx_t_17 += __pyx_pybuffernd_indices.diminfo[0].shape;
+        if (unlikely(__pyx_t_17 < 0)) __pyx_t_7 = 0;
+      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_indices.diminfo[0].shape)) __pyx_t_7 = 0;
+      if (unlikely(__pyx_t_7 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_7);
+        __PYX_ERR(0, 429, __pyx_L1_error)
+      }
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_indices.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_indices.diminfo[0].strides) = (__pyx_v_offset + __pyx_v_j);
+
+430:                 i += 1
+
      __pyx_v_i = (__pyx_v_i + 1);
+    }
+  }
+
 431: 
+
+432:         return IntIndex(self.length, indices)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 432, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
+  __Pyx_INCREF(((PyObject *)__pyx_v_indices));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_indices));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_indices));
+  __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_IntIndex), __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 432, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_r = __pyx_t_5;
+  __pyx_t_5 = 0;
+  goto __pyx_L0;
+
 433: 
+
+434:     cpdef BlockIndex intersect(self, SparseIndex other):
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_15intersect(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_intersect(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other, int __pyx_skip_dispatch) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_y = 0;
+  PyArrayObject *__pyx_v_xloc = 0;
+  PyArrayObject *__pyx_v_xlen = 0;
+  PyArrayObject *__pyx_v_yloc = 0;
+  PyArrayObject *__pyx_v_ylen = 0;
+  PyArrayObject *__pyx_v_out_bloc = 0;
+  PyArrayObject *__pyx_v_out_blen = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_max_len;
+  Py_ssize_t __pyx_v_result_indexer;
+  __pyx_t_5numpy_int32_t __pyx_v_cur_loc;
+  __pyx_t_5numpy_int32_t __pyx_v_cur_length;
+  __pyx_t_5numpy_int32_t __pyx_v_diff;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out_blen;
+  __Pyx_Buffer __pyx_pybuffer_out_blen;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out_bloc;
+  __Pyx_Buffer __pyx_pybuffer_out_bloc;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_xlen;
+  __Pyx_Buffer __pyx_pybuffer_xlen;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_xloc;
+  __Pyx_Buffer __pyx_pybuffer_xloc;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_ylen;
+  __Pyx_Buffer __pyx_pybuffer_ylen;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_yloc;
+  __Pyx_Buffer __pyx_pybuffer_yloc;
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("intersect", 0);
+  __pyx_pybuffer_xloc.pybuffer.buf = NULL;
+  __pyx_pybuffer_xloc.refcount = 0;
+  __pyx_pybuffernd_xloc.data = NULL;
+  __pyx_pybuffernd_xloc.rcbuffer = &__pyx_pybuffer_xloc;
+  __pyx_pybuffer_xlen.pybuffer.buf = NULL;
+  __pyx_pybuffer_xlen.refcount = 0;
+  __pyx_pybuffernd_xlen.data = NULL;
+  __pyx_pybuffernd_xlen.rcbuffer = &__pyx_pybuffer_xlen;
+  __pyx_pybuffer_yloc.pybuffer.buf = NULL;
+  __pyx_pybuffer_yloc.refcount = 0;
+  __pyx_pybuffernd_yloc.data = NULL;
+  __pyx_pybuffernd_yloc.rcbuffer = &__pyx_pybuffer_yloc;
+  __pyx_pybuffer_ylen.pybuffer.buf = NULL;
+  __pyx_pybuffer_ylen.refcount = 0;
+  __pyx_pybuffernd_ylen.data = NULL;
+  __pyx_pybuffernd_ylen.rcbuffer = &__pyx_pybuffer_ylen;
+  __pyx_pybuffer_out_bloc.pybuffer.buf = NULL;
+  __pyx_pybuffer_out_bloc.refcount = 0;
+  __pyx_pybuffernd_out_bloc.data = NULL;
+  __pyx_pybuffernd_out_bloc.rcbuffer = &__pyx_pybuffer_out_bloc;
+  __pyx_pybuffer_out_blen.pybuffer.buf = NULL;
+  __pyx_pybuffer_out_blen.refcount = 0;
+  __pyx_pybuffernd_out_blen.data = NULL;
+  __pyx_pybuffernd_out_blen.rcbuffer = &__pyx_pybuffer_out_blen;
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_intersect); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_15intersect)) {
+        __Pyx_XDECREF(((PyObject *)__pyx_r));
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+          if (likely(__pyx_t_4)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+            __Pyx_INCREF(__pyx_t_4);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_3, function);
+          }
+        }
+        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_other)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_other));
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 434, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(0, 434, __pyx_L1_error)
+        __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_2);
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_13);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xlen.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xloc.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ylen.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yloc.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.intersect", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xlen.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xloc.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ylen.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yloc.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_y);
+  __Pyx_XDECREF((PyObject *)__pyx_v_xloc);
+  __Pyx_XDECREF((PyObject *)__pyx_v_xlen);
+  __Pyx_XDECREF((PyObject *)__pyx_v_yloc);
+  __Pyx_XDECREF((PyObject *)__pyx_v_ylen);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_bloc);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_blen);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_15intersect(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
+static char __pyx_doc_6pandas_5_libs_6sparse_10BlockIndex_14intersect[] = "\n        Intersect two BlockIndex objects\n\n        Returns\n        -------\n        BlockIndex\n        ";
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_15intersect(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("intersect (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "other", 0))) __PYX_ERR(0, 434, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_14intersect(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_other));
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_14intersect(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("intersect", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_intersect(__pyx_v_self, __pyx_v_other, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.intersect", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 435:         """
+
 436:         Intersect two BlockIndex objects
+
 437: 
+
 438:         Returns
+
 439:         -------
+
 440:         BlockIndex
+
 441:         """
+
 442:         cdef:
+
 443:             BlockIndex y
+
 444:             ndarray[int32_t, ndim=1] xloc, xlen, yloc, ylen, out_bloc, out_blen
+
+445:             Py_ssize_t xi = 0, yi = 0, max_len, result_indexer = 0
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_result_indexer = 0;
+
 446:             int32_t cur_loc, cur_length, diff
+
 447: 
+
+448:         y = other.to_block_index()
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_other), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 448, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 448, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(0, 448, __pyx_L1_error)
+  __pyx_v_y = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
 449: 
+
+450:         if self.length != y.length:
+
  __pyx_t_5 = ((__pyx_v_self->length != __pyx_v_y->length) != 0);
+  if (unlikely(__pyx_t_5)) {
+/* … */
+  }
+
+451:             raise Exception('Indices must reference same underlying length')
+
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 451, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_1);
+    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+    __PYX_ERR(0, 451, __pyx_L1_error)
+
 452: 
+
+453:         xloc = self.blocs
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blocs);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xloc.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xloc.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xloc.rcbuffer->pybuffer, (PyObject*)__pyx_v_xloc, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+      }
+      __pyx_t_7 = __pyx_t_8 = __pyx_t_9 = 0;
+    }
+    __pyx_pybuffernd_xloc.diminfo[0].strides = __pyx_pybuffernd_xloc.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xloc.diminfo[0].shape = __pyx_pybuffernd_xloc.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 453, __pyx_L1_error)
+  }
+  __pyx_v_xloc = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+454:         xlen = self.blengths
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blengths);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xlen.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xlen.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xlen.rcbuffer->pybuffer, (PyObject*)__pyx_v_xlen, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
+      }
+      __pyx_t_9 = __pyx_t_8 = __pyx_t_7 = 0;
+    }
+    __pyx_pybuffernd_xlen.diminfo[0].strides = __pyx_pybuffernd_xlen.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xlen.diminfo[0].shape = __pyx_pybuffernd_xlen.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 454, __pyx_L1_error)
+  }
+  __pyx_v_xlen = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+455:         yloc = y.blocs
+
  __pyx_t_1 = ((PyObject *)__pyx_v_y->blocs);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yloc.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yloc.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yloc.rcbuffer->pybuffer, (PyObject*)__pyx_v_yloc, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+      }
+      __pyx_t_7 = __pyx_t_8 = __pyx_t_9 = 0;
+    }
+    __pyx_pybuffernd_yloc.diminfo[0].strides = __pyx_pybuffernd_yloc.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_yloc.diminfo[0].shape = __pyx_pybuffernd_yloc.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 455, __pyx_L1_error)
+  }
+  __pyx_v_yloc = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+456:         ylen = y.blengths
+
  __pyx_t_1 = ((PyObject *)__pyx_v_y->blengths);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ylen.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ylen.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ylen.rcbuffer->pybuffer, (PyObject*)__pyx_v_ylen, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
+      }
+      __pyx_t_9 = __pyx_t_8 = __pyx_t_7 = 0;
+    }
+    __pyx_pybuffernd_ylen.diminfo[0].strides = __pyx_pybuffernd_ylen.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ylen.diminfo[0].shape = __pyx_pybuffernd_ylen.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 456, __pyx_L1_error)
+  }
+  __pyx_v_ylen = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
 457: 
+
 458:         # block may be split, but can't exceed original len / 2 + 1
+
+459:         max_len = min(self.length, y.length) // 2 + 1
+
  __pyx_t_10 = __pyx_v_y->length;
+  __pyx_t_11 = __pyx_v_self->length;
+  if (((__pyx_t_10 < __pyx_t_11) != 0)) {
+    __pyx_t_12 = __pyx_t_10;
+  } else {
+    __pyx_t_12 = __pyx_t_11;
+  }
+  __pyx_v_max_len = (__Pyx_div_long(__pyx_t_12, 2) + 1);
+
+460:         out_bloc = np.empty(max_len, dtype=np.int32)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 460, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 460, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_max_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 460, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 460, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 460, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 460, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_13) < 0) __PYX_ERR(0, 460, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+  __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 460, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 460, __pyx_L1_error)
+  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_bloc, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+      }
+      __pyx_t_7 = __pyx_t_8 = __pyx_t_9 = 0;
+    }
+    __pyx_pybuffernd_out_bloc.diminfo[0].strides = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_bloc.diminfo[0].shape = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 460, __pyx_L1_error)
+  }
+  __pyx_t_14 = 0;
+  __pyx_v_out_bloc = ((PyArrayObject *)__pyx_t_13);
+  __pyx_t_13 = 0;
+
+461:         out_blen = np.empty(max_len, dtype=np.int32)
+
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_np); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_max_len); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_13);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_13);
+  __pyx_t_13 = 0;
+  __pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 461, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 461, __pyx_L1_error)
+  __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_blen, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
+      }
+      __pyx_t_9 = __pyx_t_8 = __pyx_t_7 = 0;
+    }
+    __pyx_pybuffernd_out_blen.diminfo[0].strides = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_blen.diminfo[0].shape = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 461, __pyx_L1_error)
+  }
+  __pyx_t_14 = 0;
+  __pyx_v_out_blen = ((PyArrayObject *)__pyx_t_4);
+  __pyx_t_4 = 0;
+
 462: 
+
+463:         while True:
+
  while (1) {
+
 464:             # we are done (or possibly never began)
+
+465:             if xi >= self.nblocks or yi >= y.nblocks:
+
    __pyx_t_15 = ((__pyx_v_xi >= __pyx_v_self->nblocks) != 0);
+    if (!__pyx_t_15) {
+    } else {
+      __pyx_t_5 = __pyx_t_15;
+      goto __pyx_L7_bool_binop_done;
+    }
+    __pyx_t_15 = ((__pyx_v_yi >= __pyx_v_y->nblocks) != 0);
+    __pyx_t_5 = __pyx_t_15;
+    __pyx_L7_bool_binop_done:;
+    if (__pyx_t_5) {
+/* … */
+    }
+
+466:                 break
+
      goto __pyx_L5_break;
+
 467: 
+
 468:             # completely symmetric...would like to avoid code dup but oh well
+
+469:             if xloc[xi] >= yloc[yi]:
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_t_6 = -1;
+    if (__pyx_t_16 < 0) {
+      __pyx_t_16 += __pyx_pybuffernd_xloc.diminfo[0].shape;
+      if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
+    } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xloc.diminfo[0].shape)) __pyx_t_6 = 0;
+    if (unlikely(__pyx_t_6 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_6);
+      __PYX_ERR(0, 469, __pyx_L1_error)
+    }
+    __pyx_t_17 = __pyx_v_yi;
+    __pyx_t_6 = -1;
+    if (__pyx_t_17 < 0) {
+      __pyx_t_17 += __pyx_pybuffernd_yloc.diminfo[0].shape;
+      if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_yloc.diminfo[0].shape)) __pyx_t_6 = 0;
+    if (unlikely(__pyx_t_6 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_6);
+      __PYX_ERR(0, 469, __pyx_L1_error)
+    }
+    __pyx_t_5 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xloc.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xloc.diminfo[0].strides)) >= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_yloc.diminfo[0].strides))) != 0);
+    if (__pyx_t_5) {
+/* … */
+      goto __pyx_L9;
+    }
+
+470:                 cur_loc = xloc[xi]
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_6 = -1;
+      if (__pyx_t_17 < 0) {
+        __pyx_t_17 += __pyx_pybuffernd_xloc.diminfo[0].shape;
+        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_xloc.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 470, __pyx_L1_error)
+      }
+      __pyx_v_cur_loc = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_xloc.diminfo[0].strides));
+
+471:                 diff = xloc[xi] - yloc[yi]
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_6 = -1;
+      if (__pyx_t_17 < 0) {
+        __pyx_t_17 += __pyx_pybuffernd_xloc.diminfo[0].shape;
+        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_xloc.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 471, __pyx_L1_error)
+      }
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_6 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_yloc.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_yloc.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 471, __pyx_L1_error)
+      }
+      __pyx_v_diff = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_xloc.diminfo[0].strides)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yloc.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_yloc.diminfo[0].strides)));
+
 472: 
+
+473:                 if ylen[yi] <= diff:
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_6 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_ylen.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_ylen.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 473, __pyx_L1_error)
+      }
+      __pyx_t_5 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ylen.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_ylen.diminfo[0].strides)) <= __pyx_v_diff) != 0);
+      if (__pyx_t_5) {
+/* … */
+      }
+
 474:                     # have to skip this block
+
+475:                     yi += 1
+
        __pyx_v_yi = (__pyx_v_yi + 1);
+
+476:                     continue
+
        goto __pyx_L4_continue;
+
 477: 
+
+478:                 if ylen[yi] - diff < xlen[xi]:
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_6 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_ylen.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_ylen.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 478, __pyx_L1_error)
+      }
+      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_6 = -1;
+      if (__pyx_t_17 < 0) {
+        __pyx_t_17 += __pyx_pybuffernd_xlen.diminfo[0].shape;
+        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_xlen.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 478, __pyx_L1_error)
+      }
+      __pyx_t_5 = ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ylen.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_ylen.diminfo[0].strides)) - __pyx_v_diff) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xlen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_xlen.diminfo[0].strides))) != 0);
+      if (__pyx_t_5) {
+/* … */
+        goto __pyx_L11;
+      }
+
 479:                     # take end of y block, move onward
+
+480:                     cur_length = ylen[yi] - diff
+
        __pyx_t_17 = __pyx_v_yi;
+        __pyx_t_6 = -1;
+        if (__pyx_t_17 < 0) {
+          __pyx_t_17 += __pyx_pybuffernd_ylen.diminfo[0].shape;
+          if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+        } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_ylen.diminfo[0].shape)) __pyx_t_6 = 0;
+        if (unlikely(__pyx_t_6 != -1)) {
+          __Pyx_RaiseBufferIndexError(__pyx_t_6);
+          __PYX_ERR(0, 480, __pyx_L1_error)
+        }
+        __pyx_v_cur_length = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ylen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_ylen.diminfo[0].strides)) - __pyx_v_diff);
+
+481:                     yi += 1
+
        __pyx_v_yi = (__pyx_v_yi + 1);
+
 482:                 else:
+
 483:                     # take end of x block
+
+484:                     cur_length = xlen[xi]
+
      /*else*/ {
+        __pyx_t_17 = __pyx_v_xi;
+        __pyx_t_6 = -1;
+        if (__pyx_t_17 < 0) {
+          __pyx_t_17 += __pyx_pybuffernd_xlen.diminfo[0].shape;
+          if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+        } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_xlen.diminfo[0].shape)) __pyx_t_6 = 0;
+        if (unlikely(__pyx_t_6 != -1)) {
+          __Pyx_RaiseBufferIndexError(__pyx_t_6);
+          __PYX_ERR(0, 484, __pyx_L1_error)
+        }
+        __pyx_v_cur_length = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xlen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_xlen.diminfo[0].strides));
+
+485:                     xi += 1
+
        __pyx_v_xi = (__pyx_v_xi + 1);
+      }
+      __pyx_L11:;
+
 486: 
+
 487:             else:  # xloc[xi] < yloc[yi]
+
+488:                 cur_loc = yloc[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_6 = -1;
+      if (__pyx_t_17 < 0) {
+        __pyx_t_17 += __pyx_pybuffernd_yloc.diminfo[0].shape;
+        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_yloc.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 488, __pyx_L1_error)
+      }
+      __pyx_v_cur_loc = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_yloc.diminfo[0].strides));
+
+489:                 diff = yloc[yi] - xloc[xi]
+
      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_6 = -1;
+      if (__pyx_t_17 < 0) {
+        __pyx_t_17 += __pyx_pybuffernd_yloc.diminfo[0].shape;
+        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_yloc.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 489, __pyx_L1_error)
+      }
+      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_6 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_xloc.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xloc.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 489, __pyx_L1_error)
+      }
+      __pyx_v_diff = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_yloc.diminfo[0].strides)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xloc.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xloc.diminfo[0].strides)));
+
 490: 
+
+491:                 if xlen[xi] <= diff:
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_6 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_xlen.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xlen.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 491, __pyx_L1_error)
+      }
+      __pyx_t_5 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xlen.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xlen.diminfo[0].strides)) <= __pyx_v_diff) != 0);
+      if (__pyx_t_5) {
+/* … */
+      }
+
 492:                     # have to skip this block
+
+493:                     xi += 1
+
        __pyx_v_xi = (__pyx_v_xi + 1);
+
+494:                     continue
+
        goto __pyx_L4_continue;
+
 495: 
+
+496:                 if xlen[xi] - diff < ylen[yi]:
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_6 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_xlen.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xlen.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 496, __pyx_L1_error)
+      }
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_6 = -1;
+      if (__pyx_t_17 < 0) {
+        __pyx_t_17 += __pyx_pybuffernd_ylen.diminfo[0].shape;
+        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_ylen.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 496, __pyx_L1_error)
+      }
+      __pyx_t_5 = ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xlen.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xlen.diminfo[0].strides)) - __pyx_v_diff) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ylen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_ylen.diminfo[0].strides))) != 0);
+      if (__pyx_t_5) {
+/* … */
+        goto __pyx_L13;
+      }
+
 497:                     # take end of x block, move onward
+
+498:                     cur_length = xlen[xi] - diff
+
        __pyx_t_17 = __pyx_v_xi;
+        __pyx_t_6 = -1;
+        if (__pyx_t_17 < 0) {
+          __pyx_t_17 += __pyx_pybuffernd_xlen.diminfo[0].shape;
+          if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+        } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_xlen.diminfo[0].shape)) __pyx_t_6 = 0;
+        if (unlikely(__pyx_t_6 != -1)) {
+          __Pyx_RaiseBufferIndexError(__pyx_t_6);
+          __PYX_ERR(0, 498, __pyx_L1_error)
+        }
+        __pyx_v_cur_length = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xlen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_xlen.diminfo[0].strides)) - __pyx_v_diff);
+
+499:                     xi += 1
+
        __pyx_v_xi = (__pyx_v_xi + 1);
+
 500:                 else:
+
 501:                     # take end of y block
+
+502:                     cur_length = ylen[yi]
+
      /*else*/ {
+        __pyx_t_17 = __pyx_v_yi;
+        __pyx_t_6 = -1;
+        if (__pyx_t_17 < 0) {
+          __pyx_t_17 += __pyx_pybuffernd_ylen.diminfo[0].shape;
+          if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+        } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_ylen.diminfo[0].shape)) __pyx_t_6 = 0;
+        if (unlikely(__pyx_t_6 != -1)) {
+          __Pyx_RaiseBufferIndexError(__pyx_t_6);
+          __PYX_ERR(0, 502, __pyx_L1_error)
+        }
+        __pyx_v_cur_length = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ylen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_ylen.diminfo[0].strides));
+
+503:                     yi += 1
+
        __pyx_v_yi = (__pyx_v_yi + 1);
+      }
+      __pyx_L13:;
+    }
+    __pyx_L9:;
+
 504: 
+
+505:             out_bloc[result_indexer] = cur_loc
+
    __pyx_t_17 = __pyx_v_result_indexer;
+    __pyx_t_6 = -1;
+    if (__pyx_t_17 < 0) {
+      __pyx_t_17 += __pyx_pybuffernd_out_bloc.diminfo[0].shape;
+      if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_out_bloc.diminfo[0].shape)) __pyx_t_6 = 0;
+    if (unlikely(__pyx_t_6 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_6);
+      __PYX_ERR(0, 505, __pyx_L1_error)
+    }
+    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out_bloc.diminfo[0].strides) = __pyx_v_cur_loc;
+
+506:             out_blen[result_indexer] = cur_length
+
    __pyx_t_17 = __pyx_v_result_indexer;
+    __pyx_t_6 = -1;
+    if (__pyx_t_17 < 0) {
+      __pyx_t_17 += __pyx_pybuffernd_out_blen.diminfo[0].shape;
+      if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
+    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_out_blen.diminfo[0].shape)) __pyx_t_6 = 0;
+    if (unlikely(__pyx_t_6 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_6);
+      __PYX_ERR(0, 506, __pyx_L1_error)
+    }
+    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out_blen.diminfo[0].strides) = __pyx_v_cur_length;
+
+507:             result_indexer += 1
+
    __pyx_v_result_indexer = (__pyx_v_result_indexer + 1);
+    __pyx_L4_continue:;
+  }
+  __pyx_L5_break:;
+
 508: 
+
+509:         out_bloc = out_bloc[:result_indexer]
+
  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 509, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_13 = PySlice_New(Py_None, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 509, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_out_bloc), __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 509, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 509, __pyx_L1_error)
+  __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_bloc, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
+      }
+      __pyx_t_7 = __pyx_t_8 = __pyx_t_9 = 0;
+    }
+    __pyx_pybuffernd_out_bloc.diminfo[0].strides = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_bloc.diminfo[0].shape = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 509, __pyx_L1_error)
+  }
+  __pyx_t_14 = 0;
+  __Pyx_DECREF_SET(__pyx_v_out_bloc, ((PyArrayObject *)__pyx_t_4));
+  __pyx_t_4 = 0;
+
+510:         out_blen = out_blen[:result_indexer]
+
  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 510, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_13 = PySlice_New(Py_None, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 510, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_out_blen), __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 510, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 510, __pyx_L1_error)
+  __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_blen, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
+      }
+      __pyx_t_9 = __pyx_t_8 = __pyx_t_7 = 0;
+    }
+    __pyx_pybuffernd_out_blen.diminfo[0].strides = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_blen.diminfo[0].shape = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 510, __pyx_L1_error)
+  }
+  __pyx_t_14 = 0;
+  __Pyx_DECREF_SET(__pyx_v_out_blen, ((PyArrayObject *)__pyx_t_4));
+  __pyx_t_4 = 0;
+
 511: 
+
+512:         return BlockIndex(self.length, out_bloc, out_blen)
+
  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_4 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->length); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 512, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 512, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_13);
+  __Pyx_GIVEREF(__pyx_t_4);
+  PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_4);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_bloc));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_bloc));
+  PyTuple_SET_ITEM(__pyx_t_13, 1, ((PyObject *)__pyx_v_out_bloc));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_blen));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_blen));
+  PyTuple_SET_ITEM(__pyx_t_13, 2, ((PyObject *)__pyx_v_out_blen));
+  __pyx_t_4 = 0;
+  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockIndex), __pyx_t_13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 512, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
+  __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4);
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
 513: 
+
+514:     cpdef BlockIndex make_union(self, SparseIndex y):
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_17make_union(PyObject *__pyx_v_self, PyObject *__pyx_v_y); /*proto*/
+static struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_make_union(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_y, int __pyx_skip_dispatch) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("make_union", 0);
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_union); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 514, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_17make_union)) {
+        __Pyx_XDECREF(((PyObject *)__pyx_r));
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+          if (likely(__pyx_t_4)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+            __Pyx_INCREF(__pyx_t_4);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_3, function);
+          }
+        }
+        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_y)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_y));
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 514, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(0, 514, __pyx_L1_error)
+        __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_2);
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.make_union", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_17make_union(PyObject *__pyx_v_self, PyObject *__pyx_v_y); /*proto*/
+static char __pyx_doc_6pandas_5_libs_6sparse_10BlockIndex_16make_union[] = "\n        Combine together two BlockIndex objects, accepting indices if contained\n        in one or the other\n\n        Parameters\n        ----------\n        other : SparseIndex\n\n        Notes\n        -----\n        union is a protected keyword in Cython, hence make_union\n\n        Returns\n        -------\n        BlockIndex\n        ";
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_17make_union(PyObject *__pyx_v_self, PyObject *__pyx_v_y) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("make_union (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "y", 0))) __PYX_ERR(0, 514, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_16make_union(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_y));
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_16make_union(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_y) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("make_union", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_make_union(__pyx_v_self, __pyx_v_y, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 514, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.make_union", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 515:         """
+
 516:         Combine together two BlockIndex objects, accepting indices if contained
+
 517:         in one or the other
+
 518: 
+
 519:         Parameters
+
 520:         ----------
+
 521:         other : SparseIndex
+
 522: 
+
 523:         Notes
+
 524:         -----
+
 525:         union is a protected keyword in Cython, hence make_union
+
 526: 
+
 527:         Returns
+
 528:         -------
+
 529:         BlockIndex
+
 530:         """
+
+531:         return BlockUnion(self, y.to_block_index()).result
+
  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_y), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 531, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_3)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_3);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 531, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_INCREF(((PyObject *)__pyx_v_self));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
+  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockUnion), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6pandas_5_libs_6sparse_BlockUnion *)__pyx_t_1)->__pyx_base.result));
+  __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockUnion *)__pyx_t_1)->__pyx_base.result;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 532: 
+
+533:     cpdef Py_ssize_t lookup(self, Py_ssize_t index):
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_19lookup(PyObject *__pyx_v_self, PyObject *__pyx_arg_index); /*proto*/
+static Py_ssize_t __pyx_f_6pandas_5_libs_6sparse_10BlockIndex_lookup(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, Py_ssize_t __pyx_v_index, int __pyx_skip_dispatch) {
+  Py_ssize_t __pyx_v_i;
+  Py_ssize_t __pyx_v_cum_len;
+  PyArrayObject *__pyx_v_locs = 0;
+  PyArrayObject *__pyx_v_lens = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_lens;
+  __Pyx_Buffer __pyx_pybuffer_lens;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_locs;
+  __Pyx_Buffer __pyx_pybuffer_locs;
+  Py_ssize_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("lookup", 0);
+  __pyx_pybuffer_locs.pybuffer.buf = NULL;
+  __pyx_pybuffer_locs.refcount = 0;
+  __pyx_pybuffernd_locs.data = NULL;
+  __pyx_pybuffernd_locs.rcbuffer = &__pyx_pybuffer_locs;
+  __pyx_pybuffer_lens.pybuffer.buf = NULL;
+  __pyx_pybuffer_lens.refcount = 0;
+  __pyx_pybuffernd_lens.data = NULL;
+  __pyx_pybuffernd_lens.rcbuffer = &__pyx_pybuffer_lens;
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_19lookup)) {
+        __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 533, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+          if (likely(__pyx_t_5)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+            __Pyx_INCREF(__pyx_t_5);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_4, function);
+          }
+        }
+        __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
+        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 533, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 533, __pyx_L1_error)
+        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+        __pyx_r = __pyx_t_6;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_WriteUnraisable("pandas._libs.sparse.BlockIndex.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_locs);
+  __Pyx_XDECREF((PyObject *)__pyx_v_lens);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_19lookup(PyObject *__pyx_v_self, PyObject *__pyx_arg_index); /*proto*/
+static char __pyx_doc_6pandas_5_libs_6sparse_10BlockIndex_18lookup[] = "\n        Return the internal location if value exists on given index.\n        Return -1 otherwise.\n        ";
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_19lookup(PyObject *__pyx_v_self, PyObject *__pyx_arg_index) {
+  Py_ssize_t __pyx_v_index;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("lookup (wrapper)", 0);
+  assert(__pyx_arg_index); {
+    __pyx_v_index = __Pyx_PyIndex_AsSsize_t(__pyx_arg_index); if (unlikely((__pyx_v_index == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 533, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_18lookup(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), ((Py_ssize_t)__pyx_v_index));
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_18lookup(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, Py_ssize_t __pyx_v_index) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("lookup", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_lookup(__pyx_v_self, __pyx_v_index, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 534:         """
+
 535:         Return the internal location if value exists on given index.
+
 536:         Return -1 otherwise.
+
 537:         """
+
 538:         cdef:
+
 539:             Py_ssize_t i, cum_len
+
 540:             ndarray[int32_t, ndim=1] locs, lens
+
 541: 
+
+542:         locs = self.blocs
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blocs);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)__pyx_v_locs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_locs.diminfo[0].strides = __pyx_pybuffernd_locs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_locs.diminfo[0].shape = __pyx_pybuffernd_locs.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 542, __pyx_L1_error)
+  }
+  __pyx_v_locs = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+543:         lens = self.blengths
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blengths);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)__pyx_v_lens, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_10, __pyx_t_9, __pyx_t_8);
+      }
+      __pyx_t_10 = __pyx_t_9 = __pyx_t_8 = 0;
+    }
+    __pyx_pybuffernd_lens.diminfo[0].strides = __pyx_pybuffernd_lens.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lens.diminfo[0].shape = __pyx_pybuffernd_lens.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 543, __pyx_L1_error)
+  }
+  __pyx_v_lens = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
 544: 
+
+545:         if self.nblocks == 0:
+
  __pyx_t_11 = ((__pyx_v_self->nblocks == 0) != 0);
+  if (__pyx_t_11) {
+/* … */
+  }
+
+546:             return -1
+
    __pyx_r = -1L;
+    goto __pyx_L0;
+
+547:         elif index < locs[0]:
+
  __pyx_t_12 = 0;
+  __pyx_t_7 = -1;
+  if (__pyx_t_12 < 0) {
+    __pyx_t_12 += __pyx_pybuffernd_locs.diminfo[0].shape;
+    if (unlikely(__pyx_t_12 < 0)) __pyx_t_7 = 0;
+  } else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_7 = 0;
+  if (unlikely(__pyx_t_7 != -1)) {
+    __Pyx_RaiseBufferIndexError(__pyx_t_7);
+    __PYX_ERR(0, 547, __pyx_L1_error)
+  }
+  __pyx_t_11 = ((__pyx_v_index < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_locs.diminfo[0].strides))) != 0);
+  if (__pyx_t_11) {
+/* … */
+  }
+
+548:             return -1
+
    __pyx_r = -1L;
+    goto __pyx_L0;
+
 549: 
+
+550:         cum_len = 0
+
  __pyx_v_cum_len = 0;
+
+551:         for i in range(self.nblocks):
+
  __pyx_t_13 = __pyx_v_self->nblocks;
+  __pyx_t_14 = __pyx_t_13;
+  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_14; __pyx_t_6+=1) {
+    __pyx_v_i = __pyx_t_6;
+
+552:             if index >= locs[i] and index < locs[i] + lens[i]:
+
    __pyx_t_12 = __pyx_v_i;
+    __pyx_t_7 = -1;
+    if (__pyx_t_12 < 0) {
+      __pyx_t_12 += __pyx_pybuffernd_locs.diminfo[0].shape;
+      if (unlikely(__pyx_t_12 < 0)) __pyx_t_7 = 0;
+    } else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_7 = 0;
+    if (unlikely(__pyx_t_7 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_7);
+      __PYX_ERR(0, 552, __pyx_L1_error)
+    }
+    __pyx_t_15 = ((__pyx_v_index >= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_locs.diminfo[0].strides))) != 0);
+    if (__pyx_t_15) {
+    } else {
+      __pyx_t_11 = __pyx_t_15;
+      goto __pyx_L7_bool_binop_done;
+    }
+    __pyx_t_12 = __pyx_v_i;
+    __pyx_t_7 = -1;
+    if (__pyx_t_12 < 0) {
+      __pyx_t_12 += __pyx_pybuffernd_locs.diminfo[0].shape;
+      if (unlikely(__pyx_t_12 < 0)) __pyx_t_7 = 0;
+    } else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_7 = 0;
+    if (unlikely(__pyx_t_7 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_7);
+      __PYX_ERR(0, 552, __pyx_L1_error)
+    }
+    __pyx_t_16 = __pyx_v_i;
+    __pyx_t_7 = -1;
+    if (__pyx_t_16 < 0) {
+      __pyx_t_16 += __pyx_pybuffernd_lens.diminfo[0].shape;
+      if (unlikely(__pyx_t_16 < 0)) __pyx_t_7 = 0;
+    } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_lens.diminfo[0].shape)) __pyx_t_7 = 0;
+    if (unlikely(__pyx_t_7 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_7);
+      __PYX_ERR(0, 552, __pyx_L1_error)
+    }
+    __pyx_t_15 = ((__pyx_v_index < ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_locs.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_lens.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_lens.diminfo[0].strides)))) != 0);
+    __pyx_t_11 = __pyx_t_15;
+    __pyx_L7_bool_binop_done:;
+    if (__pyx_t_11) {
+/* … */
+    }
+
+553:                 return cum_len + index - locs[i]
+
      __pyx_t_16 = __pyx_v_i;
+      __pyx_t_7 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_locs.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_7 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_7 = 0;
+      if (unlikely(__pyx_t_7 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_7);
+        __PYX_ERR(0, 553, __pyx_L1_error)
+      }
+      __pyx_r = ((__pyx_v_cum_len + __pyx_v_index) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_locs.diminfo[0].strides)));
+      goto __pyx_L0;
+
+554:             cum_len += lens[i]
+
    __pyx_t_16 = __pyx_v_i;
+    __pyx_t_7 = -1;
+    if (__pyx_t_16 < 0) {
+      __pyx_t_16 += __pyx_pybuffernd_lens.diminfo[0].shape;
+      if (unlikely(__pyx_t_16 < 0)) __pyx_t_7 = 0;
+    } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_lens.diminfo[0].shape)) __pyx_t_7 = 0;
+    if (unlikely(__pyx_t_7 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_7);
+      __PYX_ERR(0, 554, __pyx_L1_error)
+    }
+    __pyx_v_cum_len = (__pyx_v_cum_len + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_lens.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_lens.diminfo[0].strides)));
+  }
+
 555: 
+
+556:         return -1
+
  __pyx_r = -1L;
+  goto __pyx_L0;
+
 557: 
+
 558:     @cython.wraparound(False)
+
+559:     cpdef ndarray[int32_t] lookup_array(self, ndarray[int32_t, ndim=1] indexer):
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_21lookup_array(PyObject *__pyx_v_self, PyObject *__pyx_v_indexer); /*proto*/
+static PyArrayObject *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_lookup_array(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyArrayObject *__pyx_v_indexer, int __pyx_skip_dispatch) {
+  Py_ssize_t __pyx_v_n;
+  Py_ssize_t __pyx_v_i;
+  Py_ssize_t __pyx_v_j;
+  Py_ssize_t __pyx_v_ind_val;
+  PyArrayObject *__pyx_v_locs = 0;
+  PyArrayObject *__pyx_v_lens = 0;
+  PyArrayObject *__pyx_v_results = 0;
+  PyObject *__pyx_v_cum_len = NULL;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indexer;
+  __Pyx_Buffer __pyx_pybuffer_indexer;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_lens;
+  __Pyx_Buffer __pyx_pybuffer_lens;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_locs;
+  __Pyx_Buffer __pyx_pybuffer_locs;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_results;
+  __Pyx_Buffer __pyx_pybuffer_results;
+  PyArrayObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("lookup_array", 0);
+  __pyx_pybuffer_locs.pybuffer.buf = NULL;
+  __pyx_pybuffer_locs.refcount = 0;
+  __pyx_pybuffernd_locs.data = NULL;
+  __pyx_pybuffernd_locs.rcbuffer = &__pyx_pybuffer_locs;
+  __pyx_pybuffer_lens.pybuffer.buf = NULL;
+  __pyx_pybuffer_lens.refcount = 0;
+  __pyx_pybuffernd_lens.data = NULL;
+  __pyx_pybuffernd_lens.rcbuffer = &__pyx_pybuffer_lens;
+  __pyx_pybuffer_results.pybuffer.buf = NULL;
+  __pyx_pybuffer_results.refcount = 0;
+  __pyx_pybuffernd_results.data = NULL;
+  __pyx_pybuffernd_results.rcbuffer = &__pyx_pybuffer_results;
+  __pyx_pybuffer_indexer.pybuffer.buf = NULL;
+  __pyx_pybuffer_indexer.refcount = 0;
+  __pyx_pybuffernd_indexer.data = NULL;
+  __pyx_pybuffernd_indexer.rcbuffer = &__pyx_pybuffer_indexer;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 559, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indexer.diminfo[0].strides = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indexer.diminfo[0].shape = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.shape[0];
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 559, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_21lookup_array)) {
+        __Pyx_XDECREF(((PyObject *)__pyx_r));
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+          if (likely(__pyx_t_4)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+            __Pyx_INCREF(__pyx_t_4);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_3, function);
+          }
+        }
+        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_indexer)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_indexer));
+        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 559, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_2);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 559, __pyx_L1_error)
+        __pyx_r = ((PyArrayObject *)__pyx_t_2);
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_10);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_results.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.lookup_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_results.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_locs);
+  __Pyx_XDECREF((PyObject *)__pyx_v_lens);
+  __Pyx_XDECREF((PyObject *)__pyx_v_results);
+  __Pyx_XDECREF(__pyx_v_cum_len);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_21lookup_array(PyObject *__pyx_v_self, PyObject *__pyx_v_indexer); /*proto*/
+static char __pyx_doc_6pandas_5_libs_6sparse_10BlockIndex_20lookup_array[] = "\n        Vectorized lookup, returns ndarray[int32_t]\n        ";
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_21lookup_array(PyObject *__pyx_v_self, PyObject *__pyx_v_indexer) {
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("lookup_array (wrapper)", 0);
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) __PYX_ERR(0, 559, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_20lookup_array(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), ((PyArrayObject *)__pyx_v_indexer));
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_20lookup_array(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyArrayObject *__pyx_v_indexer) {
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indexer;
+  __Pyx_Buffer __pyx_pybuffer_indexer;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("lookup_array", 0);
+  __pyx_pybuffer_indexer.pybuffer.buf = NULL;
+  __pyx_pybuffer_indexer.refcount = 0;
+  __pyx_pybuffernd_indexer.data = NULL;
+  __pyx_pybuffernd_indexer.rcbuffer = &__pyx_pybuffer_indexer;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 559, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indexer.diminfo[0].strides = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indexer.diminfo[0].shape = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.shape[0];
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_lookup_array(__pyx_v_self, __pyx_v_indexer, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 559, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.lookup_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 560:         """
+
 561:         Vectorized lookup, returns ndarray[int32_t]
+
 562:         """
+
 563:         cdef:
+
 564:             Py_ssize_t n, i, j, ind_val
+
 565:             ndarray[int32_t, ndim=1] locs, lens
+
 566:             ndarray[int32_t, ndim=1] results
+
 567: 
+
+568:         locs = self.blocs
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blocs);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
+    __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_5 < 0)) {
+      PyErr_Fetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)__pyx_v_locs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+      }
+      __pyx_t_6 = __pyx_t_7 = __pyx_t_8 = 0;
+    }
+    __pyx_pybuffernd_locs.diminfo[0].strides = __pyx_pybuffernd_locs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_locs.diminfo[0].shape = __pyx_pybuffernd_locs.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 568, __pyx_L1_error)
+  }
+  __pyx_v_locs = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+569:         lens = self.blengths
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blengths);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
+    __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_5 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)__pyx_v_lens, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_6);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_7, __pyx_t_6);
+      }
+      __pyx_t_8 = __pyx_t_7 = __pyx_t_6 = 0;
+    }
+    __pyx_pybuffernd_lens.diminfo[0].strides = __pyx_pybuffernd_lens.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lens.diminfo[0].shape = __pyx_pybuffernd_lens.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 569, __pyx_L1_error)
+  }
+  __pyx_v_lens = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
 570: 
+
+571:         n = len(indexer)
+
  __pyx_t_9 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 571, __pyx_L1_error)
+  __pyx_v_n = __pyx_t_9;
+
+572:         results = np.empty(n, dtype=np.int32)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_10);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 572, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+  __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_10);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 572, __pyx_L1_error)
+  __pyx_t_11 = ((PyArrayObject *)__pyx_t_10);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_results.rcbuffer->pybuffer);
+    __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_results.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_5 < 0)) {
+      PyErr_Fetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_results.rcbuffer->pybuffer, (PyObject*)__pyx_v_results, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
+      }
+      __pyx_t_6 = __pyx_t_7 = __pyx_t_8 = 0;
+    }
+    __pyx_pybuffernd_results.diminfo[0].strides = __pyx_pybuffernd_results.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_results.diminfo[0].shape = __pyx_pybuffernd_results.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 572, __pyx_L1_error)
+  }
+  __pyx_t_11 = 0;
+  __pyx_v_results = ((PyArrayObject *)__pyx_t_10);
+  __pyx_t_10 = 0;
+
+573:         results[:] = -1
+
  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_results), __pyx_slice__8, __pyx_int_neg_1) < 0)) __PYX_ERR(0, 573, __pyx_L1_error)
+
 574: 
+
+575:         if self.npoints == 0:
+
  __pyx_t_12 = ((__pyx_v_self->npoints == 0) != 0);
+  if (__pyx_t_12) {
+/* … */
+  }
+
+576:             return results
+
    __Pyx_XDECREF(((PyObject *)__pyx_r));
+    __Pyx_INCREF(((PyObject *)__pyx_v_results));
+    __pyx_r = ((PyArrayObject *)__pyx_v_results);
+    goto __pyx_L0;
+
 577: 
+
+578:         for i in range(n):
+
  __pyx_t_9 = __pyx_v_n;
+  __pyx_t_13 = __pyx_t_9;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_i = __pyx_t_14;
+
+579:             ind_val = indexer[i]
+
    __pyx_t_15 = __pyx_v_i;
+    __pyx_t_5 = -1;
+    if (__pyx_t_15 < 0) {
+      __pyx_t_5 = 0;
+    } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_indexer.diminfo[0].shape)) __pyx_t_5 = 0;
+    if (unlikely(__pyx_t_5 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_5);
+      __PYX_ERR(0, 579, __pyx_L1_error)
+    }
+    __pyx_v_ind_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_indexer.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_indexer.diminfo[0].strides));
+
+580:             if not (ind_val < 0 or self.length <= ind_val):
+
    __pyx_t_16 = ((__pyx_v_ind_val < 0) != 0);
+    if (!__pyx_t_16) {
+    } else {
+      __pyx_t_12 = __pyx_t_16;
+      goto __pyx_L7_bool_binop_done;
+    }
+    __pyx_t_16 = ((__pyx_v_self->length <= __pyx_v_ind_val) != 0);
+    __pyx_t_12 = __pyx_t_16;
+    __pyx_L7_bool_binop_done:;
+    __pyx_t_16 = ((!__pyx_t_12) != 0);
+    if (__pyx_t_16) {
+/* … */
+    }
+  }
+
+581:                 cum_len = 0
+
      __Pyx_INCREF(__pyx_int_0);
+      __Pyx_XDECREF_SET(__pyx_v_cum_len, __pyx_int_0);
+
+582:                 for j in range(self.nblocks):
+
      __pyx_t_17 = __pyx_v_self->nblocks;
+      __pyx_t_18 = __pyx_t_17;
+      for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_18; __pyx_t_19+=1) {
+        __pyx_v_j = __pyx_t_19;
+
+583:                     if ind_val >= locs[j] and ind_val < locs[j] + lens[j]:
+
        __pyx_t_15 = __pyx_v_j;
+        __pyx_t_5 = -1;
+        if (__pyx_t_15 < 0) {
+          __pyx_t_5 = 0;
+        } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_5 = 0;
+        if (unlikely(__pyx_t_5 != -1)) {
+          __Pyx_RaiseBufferIndexError(__pyx_t_5);
+          __PYX_ERR(0, 583, __pyx_L1_error)
+        }
+        __pyx_t_12 = ((__pyx_v_ind_val >= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_locs.diminfo[0].strides))) != 0);
+        if (__pyx_t_12) {
+        } else {
+          __pyx_t_16 = __pyx_t_12;
+          goto __pyx_L12_bool_binop_done;
+        }
+        __pyx_t_15 = __pyx_v_j;
+        __pyx_t_5 = -1;
+        if (__pyx_t_15 < 0) {
+          __pyx_t_5 = 0;
+        } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_5 = 0;
+        if (unlikely(__pyx_t_5 != -1)) {
+          __Pyx_RaiseBufferIndexError(__pyx_t_5);
+          __PYX_ERR(0, 583, __pyx_L1_error)
+        }
+        __pyx_t_20 = __pyx_v_j;
+        __pyx_t_5 = -1;
+        if (__pyx_t_20 < 0) {
+          __pyx_t_5 = 0;
+        } else if (unlikely(__pyx_t_20 >= __pyx_pybuffernd_lens.diminfo[0].shape)) __pyx_t_5 = 0;
+        if (unlikely(__pyx_t_5 != -1)) {
+          __Pyx_RaiseBufferIndexError(__pyx_t_5);
+          __PYX_ERR(0, 583, __pyx_L1_error)
+        }
+        __pyx_t_12 = ((__pyx_v_ind_val < ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_locs.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_lens.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_lens.diminfo[0].strides)))) != 0);
+        __pyx_t_16 = __pyx_t_12;
+        __pyx_L12_bool_binop_done:;
+        if (__pyx_t_16) {
+/* … */
+        }
+
+584:                         results[i] = cum_len + ind_val - locs[j]
+
          __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_ind_val); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 584, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_1 = PyNumber_Add(__pyx_v_cum_len, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 584, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_1);
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          __pyx_t_20 = __pyx_v_j;
+          __pyx_t_5 = -1;
+          if (__pyx_t_20 < 0) {
+            __pyx_t_5 = 0;
+          } else if (unlikely(__pyx_t_20 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_5 = 0;
+          if (unlikely(__pyx_t_5 != -1)) {
+            __Pyx_RaiseBufferIndexError(__pyx_t_5);
+            __PYX_ERR(0, 584, __pyx_L1_error)
+          }
+          __pyx_t_10 = __Pyx_PyInt_From_npy_int32((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_locs.diminfo[0].strides))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 584, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_10);
+          __pyx_t_3 = PyNumber_Subtract(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 584, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_3);
+          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+          __pyx_t_21 = __Pyx_PyInt_As_npy_int32(__pyx_t_3); if (unlikely((__pyx_t_21 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 584, __pyx_L1_error)
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+          __pyx_t_20 = __pyx_v_i;
+          __pyx_t_5 = -1;
+          if (__pyx_t_20 < 0) {
+            __pyx_t_5 = 0;
+          } else if (unlikely(__pyx_t_20 >= __pyx_pybuffernd_results.diminfo[0].shape)) __pyx_t_5 = 0;
+          if (unlikely(__pyx_t_5 != -1)) {
+            __Pyx_RaiseBufferIndexError(__pyx_t_5);
+            __PYX_ERR(0, 584, __pyx_L1_error)
+          }
+          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_results.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_results.diminfo[0].strides) = __pyx_t_21;
+
+585:                     cum_len += lens[j]
+
        __pyx_t_20 = __pyx_v_j;
+        __pyx_t_5 = -1;
+        if (__pyx_t_20 < 0) {
+          __pyx_t_5 = 0;
+        } else if (unlikely(__pyx_t_20 >= __pyx_pybuffernd_lens.diminfo[0].shape)) __pyx_t_5 = 0;
+        if (unlikely(__pyx_t_5 != -1)) {
+          __Pyx_RaiseBufferIndexError(__pyx_t_5);
+          __PYX_ERR(0, 585, __pyx_L1_error)
+        }
+        __pyx_t_3 = __Pyx_PyInt_From_npy_int32((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_lens.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_lens.diminfo[0].strides))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 585, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __pyx_t_10 = PyNumber_InPlaceAdd(__pyx_v_cum_len, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 585, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_10);
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __Pyx_DECREF_SET(__pyx_v_cum_len, __pyx_t_10);
+        __pyx_t_10 = 0;
+      }
+
+586:         return results
+
  __Pyx_XDECREF(((PyObject *)__pyx_r));
+  __Pyx_INCREF(((PyObject *)__pyx_v_results));
+  __pyx_r = ((PyArrayObject *)__pyx_v_results);
+  goto __pyx_L0;
+
 587: 
+
+588:     cpdef ndarray reindex(self, ndarray[float64_t, ndim=1] values,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_23reindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyArrayObject *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_reindex(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, CYTHON_UNUSED PyArrayObject *__pyx_v_values, CYTHON_UNUSED __pyx_t_5numpy_float64_t __pyx_v_fill_value, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other_, int __pyx_skip_dispatch) {
+  Py_ssize_t __pyx_v_i;
+  Py_ssize_t __pyx_v_j;
+  Py_ssize_t __pyx_v_ocur;
+  CYTHON_UNUSED Py_ssize_t __pyx_v_ocurlen;
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_other = 0;
+  CYTHON_UNUSED PyArrayObject *__pyx_v_result = 0;
+  PyArrayObject *__pyx_v_slocs = 0;
+  PyArrayObject *__pyx_v_slens = 0;
+  PyArrayObject *__pyx_v_olocs = 0;
+  PyArrayObject *__pyx_v_olens = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_olens;
+  __Pyx_Buffer __pyx_pybuffer_olens;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_olocs;
+  __Pyx_Buffer __pyx_pybuffer_olocs;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_result;
+  __Pyx_Buffer __pyx_pybuffer_result;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_slens;
+  __Pyx_Buffer __pyx_pybuffer_slens;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_slocs;
+  __Pyx_Buffer __pyx_pybuffer_slocs;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
+  __Pyx_Buffer __pyx_pybuffer_values;
+  PyArrayObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("reindex", 0);
+  __pyx_pybuffer_result.pybuffer.buf = NULL;
+  __pyx_pybuffer_result.refcount = 0;
+  __pyx_pybuffernd_result.data = NULL;
+  __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result;
+  __pyx_pybuffer_slocs.pybuffer.buf = NULL;
+  __pyx_pybuffer_slocs.refcount = 0;
+  __pyx_pybuffernd_slocs.data = NULL;
+  __pyx_pybuffernd_slocs.rcbuffer = &__pyx_pybuffer_slocs;
+  __pyx_pybuffer_slens.pybuffer.buf = NULL;
+  __pyx_pybuffer_slens.refcount = 0;
+  __pyx_pybuffernd_slens.data = NULL;
+  __pyx_pybuffernd_slens.rcbuffer = &__pyx_pybuffer_slens;
+  __pyx_pybuffer_olocs.pybuffer.buf = NULL;
+  __pyx_pybuffer_olocs.refcount = 0;
+  __pyx_pybuffernd_olocs.data = NULL;
+  __pyx_pybuffernd_olocs.rcbuffer = &__pyx_pybuffer_olocs;
+  __pyx_pybuffer_olens.pybuffer.buf = NULL;
+  __pyx_pybuffer_olens.refcount = 0;
+  __pyx_pybuffernd_olens.data = NULL;
+  __pyx_pybuffernd_olens.rcbuffer = &__pyx_pybuffer_olens;
+  __pyx_pybuffer_values.pybuffer.buf = NULL;
+  __pyx_pybuffer_values.refcount = 0;
+  __pyx_pybuffernd_values.data = NULL;
+  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 588, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reindex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_23reindex)) {
+        __Pyx_XDECREF(((PyObject *)__pyx_r));
+        __pyx_t_3 = PyFloat_FromDouble(__pyx_v_fill_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 588, __pyx_L1_error)
+        __Pyx_GOTREF(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
+        __pyx_t_6 = 0;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
+          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+          if (likely(__pyx_t_5)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+            __Pyx_INCREF(__pyx_t_5);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_4, function);
+            __pyx_t_6 = 1;
+          }
+        }
+        #if CYTHON_FAST_PYCALL
+        if (PyFunction_Check(__pyx_t_4)) {
+          PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_values), __pyx_t_3, ((PyObject *)__pyx_v_other_)};
+          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        } else
+        #endif
+        #if CYTHON_FAST_PYCCALL
+        if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
+          PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_values), __pyx_t_3, ((PyObject *)__pyx_v_other_)};
+          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        } else
+        #endif
+        {
+          __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 588, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_7);
+          if (__pyx_t_5) {
+            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
+          }
+          __Pyx_INCREF(((PyObject *)__pyx_v_values));
+          __Pyx_GIVEREF(((PyObject *)__pyx_v_values));
+          PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_values));
+          __Pyx_GIVEREF(__pyx_t_3);
+          PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3);
+          __Pyx_INCREF(((PyObject *)__pyx_v_other_));
+          __Pyx_GIVEREF(((PyObject *)__pyx_v_other_));
+          PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, ((PyObject *)__pyx_v_other_));
+          __pyx_t_3 = 0;
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 588, __pyx_L1_error)
+        __pyx_r = ((PyArrayObject *)__pyx_t_2);
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_r = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_7);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_olens.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_olocs.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_slens.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_slocs.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.reindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_olens.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_olocs.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_slens.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_slocs.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_other);
+  __Pyx_XDECREF((PyObject *)__pyx_v_result);
+  __Pyx_XDECREF((PyObject *)__pyx_v_slocs);
+  __Pyx_XDECREF((PyObject *)__pyx_v_slens);
+  __Pyx_XDECREF((PyObject *)__pyx_v_olocs);
+  __Pyx_XDECREF((PyObject *)__pyx_v_olens);
+  __Pyx_XGIVEREF((PyObject *)__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_23reindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_23reindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyArrayObject *__pyx_v_values = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_fill_value;
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other_ = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("reindex (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_values,&__pyx_n_s_fill_value,&__pyx_n_s_other,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_values)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fill_value)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("reindex", 1, 3, 3, 1); __PYX_ERR(0, 588, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_other)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("reindex", 1, 3, 3, 2); __PYX_ERR(0, 588, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reindex") < 0)) __PYX_ERR(0, 588, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_values = ((PyArrayObject *)values[0]);
+    __pyx_v_fill_value = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_fill_value == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 589, __pyx_L3_error)
+    __pyx_v_other_ = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[2]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("reindex", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 588, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.reindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) __PYX_ERR(0, 588, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other_), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "other_", 0))) __PYX_ERR(0, 589, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_22reindex(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), __pyx_v_values, __pyx_v_fill_value, __pyx_v_other_);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_22reindex(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, __pyx_t_5numpy_float64_t __pyx_v_fill_value, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other_) {
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
+  __Pyx_Buffer __pyx_pybuffer_values;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("reindex", 0);
+  __pyx_pybuffer_values.pybuffer.buf = NULL;
+  __pyx_pybuffer_values.refcount = 0;
+  __pyx_pybuffernd_values.data = NULL;
+  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 588, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_reindex(__pyx_v_self, __pyx_v_values, __pyx_v_fill_value, __pyx_v_other_, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.reindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 589:                           float64_t fill_value, SparseIndex other_):
+
 590:         cdef:
+
+591:             Py_ssize_t i = 0, j = 0, ocur, ocurlen
+
  __pyx_v_i = 0;
+  __pyx_v_j = 0;
+
 592:             BlockIndex other
+
 593:             ndarray[float64_t, ndim=1] result
+
 594:             ndarray[int32_t, ndim=1] slocs, slens, olocs, olens
+
 595: 
+
+596:         other = other_.to_block_index()
+
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_other_), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = NULL;
+  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
+    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
+    if (likely(__pyx_t_4)) {
+      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
+      __Pyx_INCREF(__pyx_t_4);
+      __Pyx_INCREF(function);
+      __Pyx_DECREF_SET(__pyx_t_2, function);
+    }
+  }
+  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(0, 596, __pyx_L1_error)
+  __pyx_v_other = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
 597: 
+
+598:         olocs = other.blocs
+
  __pyx_t_1 = ((PyObject *)__pyx_v_other->blocs);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_olocs.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_olocs.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_olocs.rcbuffer->pybuffer, (PyObject*)__pyx_v_olocs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_olocs.diminfo[0].strides = __pyx_pybuffernd_olocs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_olocs.diminfo[0].shape = __pyx_pybuffernd_olocs.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 598, __pyx_L1_error)
+  }
+  __pyx_v_olocs = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+599:         olens = other.blengths
+
  __pyx_t_1 = ((PyObject *)__pyx_v_other->blengths);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_olens.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_olens.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_olens.rcbuffer->pybuffer, (PyObject*)__pyx_v_olens, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_10, __pyx_t_9, __pyx_t_8);
+      }
+      __pyx_t_10 = __pyx_t_9 = __pyx_t_8 = 0;
+    }
+    __pyx_pybuffernd_olens.diminfo[0].strides = __pyx_pybuffernd_olens.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_olens.diminfo[0].shape = __pyx_pybuffernd_olens.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 599, __pyx_L1_error)
+  }
+  __pyx_v_olens = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+600:         slocs = self.blocs
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blocs);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_slocs.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_slocs.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_slocs.rcbuffer->pybuffer, (PyObject*)__pyx_v_slocs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_slocs.diminfo[0].strides = __pyx_pybuffernd_slocs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_slocs.diminfo[0].shape = __pyx_pybuffernd_slocs.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 600, __pyx_L1_error)
+  }
+  __pyx_v_slocs = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+601:         slens = self.blengths
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blengths);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_slens.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_slens.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_slens.rcbuffer->pybuffer, (PyObject*)__pyx_v_slens, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_10, __pyx_t_9, __pyx_t_8);
+      }
+      __pyx_t_10 = __pyx_t_9 = __pyx_t_8 = 0;
+    }
+    __pyx_pybuffernd_slens.diminfo[0].strides = __pyx_pybuffernd_slens.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_slens.diminfo[0].shape = __pyx_pybuffernd_slens.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 601, __pyx_L1_error)
+  }
+  __pyx_v_slens = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
 602: 
+
+603:         result = np.empty(other.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 603, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 603, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_other->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 603, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 603, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 603, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 603, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_7);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 603, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 603, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 603, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 603, __pyx_L1_error)
+  __pyx_t_11 = ((PyArrayObject *)__pyx_t_3);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
+    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_6 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 603, __pyx_L1_error)
+  }
+  __pyx_t_11 = 0;
+  __pyx_v_result = ((PyArrayObject *)__pyx_t_3);
+  __pyx_t_3 = 0;
+
 604: 
+
+605:         for i in range(other.nblocks):
+
  __pyx_t_12 = __pyx_v_other->nblocks;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_i = __pyx_t_14;
+
+606:             ocur = olocs[i]
+
    __pyx_t_15 = __pyx_v_i;
+    __pyx_t_6 = -1;
+    if (__pyx_t_15 < 0) {
+      __pyx_t_15 += __pyx_pybuffernd_olocs.diminfo[0].shape;
+      if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
+    } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_olocs.diminfo[0].shape)) __pyx_t_6 = 0;
+    if (unlikely(__pyx_t_6 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_6);
+      __PYX_ERR(0, 606, __pyx_L1_error)
+    }
+    __pyx_v_ocur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_olocs.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_olocs.diminfo[0].strides));
+
+607:             ocurlen = olens[i]
+
    __pyx_t_15 = __pyx_v_i;
+    __pyx_t_6 = -1;
+    if (__pyx_t_15 < 0) {
+      __pyx_t_15 += __pyx_pybuffernd_olens.diminfo[0].shape;
+      if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
+    } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_olens.diminfo[0].shape)) __pyx_t_6 = 0;
+    if (unlikely(__pyx_t_6 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_6);
+      __PYX_ERR(0, 607, __pyx_L1_error)
+    }
+    __pyx_v_ocurlen = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_olens.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_olens.diminfo[0].strides));
+
 608: 
+
+609:             while slocs[j] + slens[j] < ocur:
+
    while (1) {
+      __pyx_t_15 = __pyx_v_j;
+      __pyx_t_6 = -1;
+      if (__pyx_t_15 < 0) {
+        __pyx_t_15 += __pyx_pybuffernd_slocs.diminfo[0].shape;
+        if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_slocs.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 609, __pyx_L1_error)
+      }
+      __pyx_t_16 = __pyx_v_j;
+      __pyx_t_6 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_slens.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_slens.diminfo[0].shape)) __pyx_t_6 = 0;
+      if (unlikely(__pyx_t_6 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_6);
+        __PYX_ERR(0, 609, __pyx_L1_error)
+      }
+      __pyx_t_17 = ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_slocs.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_slocs.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_slens.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_slens.diminfo[0].strides))) < __pyx_v_ocur) != 0);
+      if (!__pyx_t_17) break;
+
+610:                 j += 1
+
      __pyx_v_j = (__pyx_v_j + 1);
+    }
+  }
+
 611: 
+
+612:     cpdef put(self, ndarray[float64_t, ndim=1] values,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_25put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_put(CYTHON_UNUSED struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, CYTHON_UNUSED PyArrayObject *__pyx_v_values, CYTHON_UNUSED PyArrayObject *__pyx_v_indices, CYTHON_UNUSED PyObject *__pyx_v_to_put, int __pyx_skip_dispatch) {
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
+  __Pyx_Buffer __pyx_pybuffer_indices;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
+  __Pyx_Buffer __pyx_pybuffer_values;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("put", 0);
+  __pyx_pybuffer_values.pybuffer.buf = NULL;
+  __pyx_pybuffer_values.refcount = 0;
+  __pyx_pybuffernd_values.data = NULL;
+  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
+  __pyx_pybuffer_indices.pybuffer.buf = NULL;
+  __pyx_pybuffer_indices.refcount = 0;
+  __pyx_pybuffernd_indices.data = NULL;
+  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 612, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 612, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_put); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 612, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_25put)) {
+        __Pyx_XDECREF(__pyx_r);
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+        __pyx_t_5 = 0;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+          if (likely(__pyx_t_4)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+            __Pyx_INCREF(__pyx_t_4);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_3, function);
+            __pyx_t_5 = 1;
+          }
+        }
+        #if CYTHON_FAST_PYCALL
+        if (PyFunction_Check(__pyx_t_3)) {
+          PyObject *__pyx_temp[4] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices), __pyx_v_to_put};
+          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 612, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+        } else
+        #endif
+        #if CYTHON_FAST_PYCCALL
+        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+          PyObject *__pyx_temp[4] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices), __pyx_v_to_put};
+          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 612, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+        } else
+        #endif
+        {
+          __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 612, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_6);
+          if (__pyx_t_4) {
+            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
+          }
+          __Pyx_INCREF(((PyObject *)__pyx_v_values));
+          __Pyx_GIVEREF(((PyObject *)__pyx_v_values));
+          PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_values));
+          __Pyx_INCREF(((PyObject *)__pyx_v_indices));
+          __Pyx_GIVEREF(((PyObject *)__pyx_v_indices));
+          PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)__pyx_v_indices));
+          __Pyx_INCREF(__pyx_v_to_put);
+          __Pyx_GIVEREF(__pyx_v_to_put);
+          PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_to_put);
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 612, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_r = __pyx_t_2;
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_25put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_25put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyArrayObject *__pyx_v_values = 0;
+  PyArrayObject *__pyx_v_indices = 0;
+  PyObject *__pyx_v_to_put = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("put (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_values,&__pyx_n_s_indices,&__pyx_n_s_to_put,0};
+    PyObject* values[3] = {0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_values)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_indices)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("put", 1, 3, 3, 1); __PYX_ERR(0, 612, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_to_put)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("put", 1, 3, 3, 2); __PYX_ERR(0, 612, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "put") < 0)) __PYX_ERR(0, 612, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+    }
+    __pyx_v_values = ((PyArrayObject *)values[0]);
+    __pyx_v_indices = ((PyArrayObject *)values[1]);
+    __pyx_v_to_put = values[2];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("put", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 612, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) __PYX_ERR(0, 612, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indices), __pyx_ptype_5numpy_ndarray, 1, "indices", 0))) __PYX_ERR(0, 613, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_24put(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), __pyx_v_values, __pyx_v_indices, __pyx_v_to_put);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_24put(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, PyArrayObject *__pyx_v_indices, PyObject *__pyx_v_to_put) {
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
+  __Pyx_Buffer __pyx_pybuffer_indices;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
+  __Pyx_Buffer __pyx_pybuffer_values;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("put", 0);
+  __pyx_pybuffer_values.pybuffer.buf = NULL;
+  __pyx_pybuffer_values.refcount = 0;
+  __pyx_pybuffernd_values.data = NULL;
+  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
+  __pyx_pybuffer_indices.pybuffer.buf = NULL;
+  __pyx_pybuffer_indices.refcount = 0;
+  __pyx_pybuffernd_indices.data = NULL;
+  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 612, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 612, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_10BlockIndex_put(__pyx_v_self, __pyx_v_values, __pyx_v_indices, __pyx_v_to_put, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 612, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 613:               ndarray[int32_t, ndim=1] indices, object to_put):
+
 614:         pass
+
 615: 
+
+616:     cpdef take(self, ndarray[float64_t, ndim=1] values,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_27take(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_take(CYTHON_UNUSED struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, CYTHON_UNUSED PyArrayObject *__pyx_v_values, CYTHON_UNUSED PyArrayObject *__pyx_v_indices, int __pyx_skip_dispatch) {
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
+  __Pyx_Buffer __pyx_pybuffer_indices;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
+  __Pyx_Buffer __pyx_pybuffer_values;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("take", 0);
+  __pyx_pybuffer_values.pybuffer.buf = NULL;
+  __pyx_pybuffer_values.refcount = 0;
+  __pyx_pybuffernd_values.data = NULL;
+  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
+  __pyx_pybuffer_indices.pybuffer.buf = NULL;
+  __pyx_pybuffer_indices.refcount = 0;
+  __pyx_pybuffernd_indices.data = NULL;
+  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 616, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 616, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
+  /* Check if called by wrapper */
+  if (unlikely(__pyx_skip_dispatch)) ;
+  /* Check if overridden in Python */
+  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
+      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      #endif
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_take); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error)
+      __Pyx_GOTREF(__pyx_t_1);
+      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_27take)) {
+        __Pyx_XDECREF(__pyx_r);
+        __Pyx_INCREF(__pyx_t_1);
+        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
+        __pyx_t_5 = 0;
+        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
+          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
+          if (likely(__pyx_t_4)) {
+            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+            __Pyx_INCREF(__pyx_t_4);
+            __Pyx_INCREF(function);
+            __Pyx_DECREF_SET(__pyx_t_3, function);
+            __pyx_t_5 = 1;
+          }
+        }
+        #if CYTHON_FAST_PYCALL
+        if (PyFunction_Check(__pyx_t_3)) {
+          PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices)};
+          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+        } else
+        #endif
+        #if CYTHON_FAST_PYCCALL
+        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
+          PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices)};
+          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error)
+          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
+          __Pyx_GOTREF(__pyx_t_2);
+        } else
+        #endif
+        {
+          __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 616, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_6);
+          if (__pyx_t_4) {
+            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
+          }
+          __Pyx_INCREF(((PyObject *)__pyx_v_values));
+          __Pyx_GIVEREF(((PyObject *)__pyx_v_values));
+          PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_values));
+          __Pyx_INCREF(((PyObject *)__pyx_v_indices));
+          __Pyx_GIVEREF(((PyObject *)__pyx_v_indices));
+          PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)__pyx_v_indices));
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error)
+          __Pyx_GOTREF(__pyx_t_2);
+          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+        }
+        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+        __pyx_r = __pyx_t_2;
+        __pyx_t_2 = 0;
+        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+        goto __pyx_L0;
+      }
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
+      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
+      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
+        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
+      }
+      #endif
+      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
+    }
+    #endif
+  }
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_6);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.take", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_27take(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_27take(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyArrayObject *__pyx_v_values = 0;
+  PyArrayObject *__pyx_v_indices = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("take (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_values,&__pyx_n_s_indices,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_values)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_indices)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("take", 1, 2, 2, 1); __PYX_ERR(0, 616, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "take") < 0)) __PYX_ERR(0, 616, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_values = ((PyArrayObject *)values[0]);
+    __pyx_v_indices = ((PyArrayObject *)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("take", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 616, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.take", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) __PYX_ERR(0, 616, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indices), __pyx_ptype_5numpy_ndarray, 1, "indices", 0))) __PYX_ERR(0, 617, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_26take(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), __pyx_v_values, __pyx_v_indices);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_26take(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, PyArrayObject *__pyx_v_indices) {
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
+  __Pyx_Buffer __pyx_pybuffer_indices;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
+  __Pyx_Buffer __pyx_pybuffer_values;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("take", 0);
+  __pyx_pybuffer_values.pybuffer.buf = NULL;
+  __pyx_pybuffer_values.refcount = 0;
+  __pyx_pybuffernd_values.data = NULL;
+  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
+  __pyx_pybuffer_indices.pybuffer.buf = NULL;
+  __pyx_pybuffer_indices.refcount = 0;
+  __pyx_pybuffernd_indices.data = NULL;
+  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 616, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 616, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_10BlockIndex_take(__pyx_v_self, __pyx_v_values, __pyx_v_indices, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.take", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 617:                ndarray[int32_t, ndim=1] indices):
+
 618:         pass
+
 619: 
+
 620: 
+
 621: @cython.internal
+
+622: cdef class BlockMerge:
+
struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge {
+  PyObject_HEAD
+  struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockMerge *__pyx_vtab;
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *x;
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *y;
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *result;
+  PyArrayObject *xstart;
+  PyArrayObject *xlen;
+  PyArrayObject *xend;
+  PyArrayObject *ystart;
+  PyArrayObject *ylen;
+  PyArrayObject *yend;
+  __pyx_t_5numpy_int32_t xi;
+  __pyx_t_5numpy_int32_t yi;
+};
+/* … */
+struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockMerge {
+  PyObject *(*_make_merged_blocks)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *);
+  PyObject *(*_set_current_indices)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *, __pyx_t_5numpy_int32_t, __pyx_t_5numpy_int32_t, int);
+};
+static struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockMerge *__pyx_vtabptr_6pandas_5_libs_6sparse_BlockMerge;
+
+
 623:     """
+
 624:     Object-oriented approach makes sharing state between recursive functions a
+
 625:     lot easier and reduces code duplication
+
 626:     """
+
 627:     cdef:
+
 628:         BlockIndex x, y, result
+
 629:         ndarray xstart, xlen, xend, ystart, ylen, yend
+
 630:         int32_t xi, yi  # block indices
+
 631: 
+
+632:     def __init__(self, BlockIndex x, BlockIndex y):
+
/* Python wrapper */
+static int __pyx_pw_6pandas_5_libs_6sparse_10BlockMerge_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static int __pyx_pw_6pandas_5_libs_6sparse_10BlockMerge_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_x = 0;
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_y = 0;
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 632, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 632, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_x = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)values[0]);
+    __pyx_v_y = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)values[1]);
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 632, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockMerge.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return -1;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex, 1, "x", 0))) __PYX_ERR(0, 632, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex, 1, "y", 0))) __PYX_ERR(0, 632, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockMerge___init__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *)__pyx_v_self), __pyx_v_x, __pyx_v_y);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static int __pyx_pf_6pandas_5_libs_6sparse_10BlockMerge___init__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_y) {
+  int __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__init__", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = 0;
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockMerge.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+633:         self.x = x
+
  __Pyx_INCREF(((PyObject *)__pyx_v_x));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_x));
+  __Pyx_GOTREF(__pyx_v_self->x);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->x));
+  __pyx_v_self->x = __pyx_v_x;
+
+634:         self.y = y
+
  __Pyx_INCREF(((PyObject *)__pyx_v_y));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_y));
+  __Pyx_GOTREF(__pyx_v_self->y);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->y));
+  __pyx_v_self->y = __pyx_v_y;
+
 635: 
+
+636:         if x.length != y.length:
+
  __pyx_t_1 = ((__pyx_v_x->length != __pyx_v_y->length) != 0);
+  if (unlikely(__pyx_t_1)) {
+/* … */
+  }
+
+637:             raise Exception('Indices must reference same underlying length')
+
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __PYX_ERR(0, 637, __pyx_L1_error)
+
 638: 
+
+639:         self.xstart = self.x.blocs
+
  __pyx_t_2 = ((PyObject *)__pyx_v_self->x->blocs);
+  __Pyx_INCREF(__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->xstart);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->xstart));
+  __pyx_v_self->xstart = ((PyArrayObject *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+640:         self.ystart = self.y.blocs
+
  __pyx_t_2 = ((PyObject *)__pyx_v_self->y->blocs);
+  __Pyx_INCREF(__pyx_t_2);
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->ystart);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->ystart));
+  __pyx_v_self->ystart = ((PyArrayObject *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
 641: 
+
+642:         self.xend = self.x.blocs + self.x.blengths
+
  __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_v_self->x->blocs), ((PyObject *)__pyx_v_self->x->blengths)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 642, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 642, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->xend);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->xend));
+  __pyx_v_self->xend = ((PyArrayObject *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
+643:         self.yend = self.y.blocs + self.y.blengths
+
  __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_v_self->y->blocs), ((PyObject *)__pyx_v_self->y->blengths)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 643, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 643, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->yend);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->yend));
+  __pyx_v_self->yend = ((PyArrayObject *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
 644: 
+
 645:         # self.xlen = self.x.blengths
+
 646:         # self.ylen = self.y.blengths
+
 647: 
+
+648:         self.xi = 0
+
  __pyx_v_self->xi = 0;
+
+649:         self.yi = 0
+
  __pyx_v_self->yi = 0;
+
 650: 
+
+651:         self.result = self._make_merged_blocks()
+
  __pyx_t_2 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockMerge *)__pyx_v_self->__pyx_vtab)->_make_merged_blocks(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 651, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(0, 651, __pyx_L1_error)
+  __Pyx_GIVEREF(__pyx_t_2);
+  __Pyx_GOTREF(__pyx_v_self->result);
+  __Pyx_DECREF(((PyObject *)__pyx_v_self->result));
+  __pyx_v_self->result = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_2);
+  __pyx_t_2 = 0;
+
 652: 
+
+653:     cdef _make_merged_blocks(self):
+
static PyObject *__pyx_f_6pandas_5_libs_6sparse_10BlockMerge__make_merged_blocks(CYTHON_UNUSED struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *__pyx_v_self) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_make_merged_blocks", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockMerge._make_merged_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+654:         raise NotImplementedError
+
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+  __PYX_ERR(0, 654, __pyx_L1_error)
+
 655: 
+
+656:     cdef _set_current_indices(self, int32_t xi, int32_t yi, bint mode):
+
static PyObject *__pyx_f_6pandas_5_libs_6sparse_10BlockMerge__set_current_indices(struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *__pyx_v_self, __pyx_t_5numpy_int32_t __pyx_v_xi, __pyx_t_5numpy_int32_t __pyx_v_yi, int __pyx_v_mode) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_set_current_indices", 0);
+/* … */
+  /* function exit code */
+  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+657:         if mode == 0:
+
  __pyx_t_1 = ((__pyx_v_mode == 0) != 0);
+  if (__pyx_t_1) {
+/* … */
+    goto __pyx_L3;
+  }
+
+658:             self.xi = xi
+
    __pyx_v_self->xi = __pyx_v_xi;
+
+659:             self.yi = yi
+
    __pyx_v_self->yi = __pyx_v_yi;
+
 660:         else:
+
+661:             self.xi = yi
+
  /*else*/ {
+    __pyx_v_self->xi = __pyx_v_yi;
+
+662:             self.yi = xi
+
    __pyx_v_self->yi = __pyx_v_xi;
+  }
+  __pyx_L3:;
+
 663: 
+
 664: 
+
 665: @cython.internal
+
+666: cdef class BlockUnion(BlockMerge):
+
struct __pyx_obj_6pandas_5_libs_6sparse_BlockUnion {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge __pyx_base;
+};
+/* … */
+struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion {
+  struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockMerge __pyx_base;
+  __pyx_t_5numpy_int32_t (*_find_next_block_end)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockUnion *, int);
+};
+static struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *__pyx_vtabptr_6pandas_5_libs_6sparse_BlockUnion;
+
+
 667:     """
+
 668:     Object-oriented approach makes sharing state between recursive functions a
+
 669:     lot easier and reduces code duplication
+
 670:     """
+
 671: 
+
+672:     cdef _make_merged_blocks(self):
+
static PyObject *__pyx_f_6pandas_5_libs_6sparse_10BlockUnion__make_merged_blocks(struct __pyx_obj_6pandas_5_libs_6sparse_BlockUnion *__pyx_v_self) {
+  PyArrayObject *__pyx_v_xstart = 0;
+  PyArrayObject *__pyx_v_xend = 0;
+  PyArrayObject *__pyx_v_ystart = 0;
+  PyArrayObject *__pyx_v_yend = 0;
+  PyArrayObject *__pyx_v_out_bloc = 0;
+  PyArrayObject *__pyx_v_out_blen = 0;
+  __pyx_t_5numpy_int32_t __pyx_v_nstart;
+  __pyx_t_5numpy_int32_t __pyx_v_nend;
+  Py_ssize_t __pyx_v_max_len;
+  Py_ssize_t __pyx_v_result_indexer;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out_blen;
+  __Pyx_Buffer __pyx_pybuffer_out_blen;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out_bloc;
+  __Pyx_Buffer __pyx_pybuffer_out_bloc;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_xend;
+  __Pyx_Buffer __pyx_pybuffer_xend;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_xstart;
+  __Pyx_Buffer __pyx_pybuffer_xstart;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_yend;
+  __Pyx_Buffer __pyx_pybuffer_yend;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_ystart;
+  __Pyx_Buffer __pyx_pybuffer_ystart;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_make_merged_blocks", 0);
+  __pyx_pybuffer_xstart.pybuffer.buf = NULL;
+  __pyx_pybuffer_xstart.refcount = 0;
+  __pyx_pybuffernd_xstart.data = NULL;
+  __pyx_pybuffernd_xstart.rcbuffer = &__pyx_pybuffer_xstart;
+  __pyx_pybuffer_xend.pybuffer.buf = NULL;
+  __pyx_pybuffer_xend.refcount = 0;
+  __pyx_pybuffernd_xend.data = NULL;
+  __pyx_pybuffernd_xend.rcbuffer = &__pyx_pybuffer_xend;
+  __pyx_pybuffer_ystart.pybuffer.buf = NULL;
+  __pyx_pybuffer_ystart.refcount = 0;
+  __pyx_pybuffernd_ystart.data = NULL;
+  __pyx_pybuffernd_ystart.rcbuffer = &__pyx_pybuffer_ystart;
+  __pyx_pybuffer_yend.pybuffer.buf = NULL;
+  __pyx_pybuffer_yend.refcount = 0;
+  __pyx_pybuffernd_yend.data = NULL;
+  __pyx_pybuffernd_yend.rcbuffer = &__pyx_pybuffer_yend;
+  __pyx_pybuffer_out_bloc.pybuffer.buf = NULL;
+  __pyx_pybuffer_out_bloc.refcount = 0;
+  __pyx_pybuffernd_out_bloc.data = NULL;
+  __pyx_pybuffernd_out_bloc.rcbuffer = &__pyx_pybuffer_out_bloc;
+  __pyx_pybuffer_out_blen.pybuffer.buf = NULL;
+  __pyx_pybuffer_out_blen.refcount = 0;
+  __pyx_pybuffernd_out_blen.data = NULL;
+  __pyx_pybuffernd_out_blen.rcbuffer = &__pyx_pybuffer_out_blen;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_9);
+  __Pyx_XDECREF(__pyx_t_10);
+  __Pyx_XDECREF(__pyx_t_11);
+  __Pyx_XDECREF(__pyx_t_12);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockUnion._make_merged_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_xstart);
+  __Pyx_XDECREF((PyObject *)__pyx_v_xend);
+  __Pyx_XDECREF((PyObject *)__pyx_v_ystart);
+  __Pyx_XDECREF((PyObject *)__pyx_v_yend);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_bloc);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_blen);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 673:         cdef:
+
 674:             ndarray[int32_t, ndim=1] xstart, xend, ystart
+
 675:             ndarray[int32_t, ndim=1] yend, out_bloc, out_blen
+
 676:             int32_t nstart, nend, diff
+
+677:             Py_ssize_t max_len, result_indexer = 0
+
  __pyx_v_result_indexer = 0;
+
 678: 
+
+679:         xstart = self.xstart
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.xstart);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
+    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_2 < 0)) {
+      PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer, (PyObject*)__pyx_v_xstart, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_3, __pyx_t_4, __pyx_t_5);
+      }
+      __pyx_t_3 = __pyx_t_4 = __pyx_t_5 = 0;
+    }
+    __pyx_pybuffernd_xstart.diminfo[0].strides = __pyx_pybuffernd_xstart.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xstart.diminfo[0].shape = __pyx_pybuffernd_xstart.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 679, __pyx_L1_error)
+  }
+  __pyx_v_xstart = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+680:         xend = self.xend
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.xend);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
+    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xend.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_2 < 0)) {
+      PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xend.rcbuffer->pybuffer, (PyObject*)__pyx_v_xend, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
+      }
+      __pyx_t_5 = __pyx_t_4 = __pyx_t_3 = 0;
+    }
+    __pyx_pybuffernd_xend.diminfo[0].strides = __pyx_pybuffernd_xend.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xend.diminfo[0].shape = __pyx_pybuffernd_xend.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 680, __pyx_L1_error)
+  }
+  __pyx_v_xend = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+681:         ystart = self.ystart
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.ystart);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
+    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_2 < 0)) {
+      PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer, (PyObject*)__pyx_v_ystart, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_3, __pyx_t_4, __pyx_t_5);
+      }
+      __pyx_t_3 = __pyx_t_4 = __pyx_t_5 = 0;
+    }
+    __pyx_pybuffernd_ystart.diminfo[0].strides = __pyx_pybuffernd_ystart.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ystart.diminfo[0].shape = __pyx_pybuffernd_ystart.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 681, __pyx_L1_error)
+  }
+  __pyx_v_ystart = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+682:         yend = self.yend
+
  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.yend);
+  __Pyx_INCREF(__pyx_t_1);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
+    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yend.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_2 < 0)) {
+      PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yend.rcbuffer->pybuffer, (PyObject*)__pyx_v_yend, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
+      }
+      __pyx_t_5 = __pyx_t_4 = __pyx_t_3 = 0;
+    }
+    __pyx_pybuffernd_yend.diminfo[0].strides = __pyx_pybuffernd_yend.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_yend.diminfo[0].shape = __pyx_pybuffernd_yend.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 682, __pyx_L1_error)
+  }
+  __pyx_v_yend = ((PyArrayObject *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
 683: 
+
+684:         max_len = min(self.x.length, self.y.length) // 2 + 1
+
  __pyx_t_6 = __pyx_v_self->__pyx_base.y->length;
+  __pyx_t_7 = __pyx_v_self->__pyx_base.x->length;
+  if (((__pyx_t_6 < __pyx_t_7) != 0)) {
+    __pyx_t_8 = __pyx_t_6;
+  } else {
+    __pyx_t_8 = __pyx_t_7;
+  }
+  __pyx_v_max_len = (__Pyx_div_long(__pyx_t_8, 2) + 1);
+
+685:         out_bloc = np.empty(max_len, dtype=np.int32)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 685, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_max_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 685, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_10);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 685, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_11);
+  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_int32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 685, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_12);
+  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_12) < 0) __PYX_ERR(0, 685, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, __pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 685, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_12);
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 685, __pyx_L1_error)
+  __pyx_t_13 = ((PyArrayObject *)__pyx_t_12);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
+    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_2 < 0)) {
+      PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_bloc, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_3, __pyx_t_4, __pyx_t_5);
+      }
+      __pyx_t_3 = __pyx_t_4 = __pyx_t_5 = 0;
+    }
+    __pyx_pybuffernd_out_bloc.diminfo[0].strides = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_bloc.diminfo[0].shape = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 685, __pyx_L1_error)
+  }
+  __pyx_t_13 = 0;
+  __pyx_v_out_bloc = ((PyArrayObject *)__pyx_t_12);
+  __pyx_t_12 = 0;
+
+686:         out_blen = np.empty(max_len, dtype=np.int32)
+
  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 686, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_12);
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 686, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+  __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_max_len); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 686, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_12);
+  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 686, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_10);
+  __Pyx_GIVEREF(__pyx_t_12);
+  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12);
+  __pyx_t_12 = 0;
+  __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 686, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_12);
+  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 686, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_9);
+  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_int32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 686, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_11);
+  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
+  if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_dtype, __pyx_t_11) < 0) __PYX_ERR(0, 686, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 686, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_11);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
+  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 686, __pyx_L1_error)
+  __pyx_t_13 = ((PyArrayObject *)__pyx_t_11);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
+    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_2 < 0)) {
+      PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_blen, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
+      }
+      __pyx_t_5 = __pyx_t_4 = __pyx_t_3 = 0;
+    }
+    __pyx_pybuffernd_out_blen.diminfo[0].strides = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_blen.diminfo[0].shape = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 686, __pyx_L1_error)
+  }
+  __pyx_t_13 = 0;
+  __pyx_v_out_blen = ((PyArrayObject *)__pyx_t_11);
+  __pyx_t_11 = 0;
+
 687: 
+
+688:         while True:
+
  while (1) {
+
 689:             # we are done (or possibly never began)
+
+690:             if self.xi >= self.x.nblocks and self.yi >= self.y.nblocks:
+
    __pyx_t_15 = ((__pyx_v_self->__pyx_base.xi >= __pyx_v_self->__pyx_base.x->nblocks) != 0);
+    if (__pyx_t_15) {
+    } else {
+      __pyx_t_14 = __pyx_t_15;
+      goto __pyx_L6_bool_binop_done;
+    }
+    __pyx_t_15 = ((__pyx_v_self->__pyx_base.yi >= __pyx_v_self->__pyx_base.y->nblocks) != 0);
+    __pyx_t_14 = __pyx_t_15;
+    __pyx_L6_bool_binop_done:;
+    if (__pyx_t_14) {
+/* … */
+    }
+
+691:                 break
+
      goto __pyx_L4_break;
+
+692:             elif self.yi >= self.y.nblocks:
+
    __pyx_t_14 = ((__pyx_v_self->__pyx_base.yi >= __pyx_v_self->__pyx_base.y->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L5;
+    }
+
 693:                 # through with y, just pass through x blocks
+
+694:                 nstart = xstart[self.xi]
+
      __pyx_t_16 = __pyx_v_self->__pyx_base.xi;
+      __pyx_t_2 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_xstart.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_2 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xstart.diminfo[0].shape)) __pyx_t_2 = 0;
+      if (unlikely(__pyx_t_2 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_2);
+        __PYX_ERR(0, 694, __pyx_L1_error)
+      }
+      __pyx_v_nstart = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xstart.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xstart.diminfo[0].strides));
+
+695:                 nend = xend[self.xi]
+
      __pyx_t_16 = __pyx_v_self->__pyx_base.xi;
+      __pyx_t_2 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_xend.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_2 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xend.diminfo[0].shape)) __pyx_t_2 = 0;
+      if (unlikely(__pyx_t_2 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_2);
+        __PYX_ERR(0, 695, __pyx_L1_error)
+      }
+      __pyx_v_nend = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xend.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xend.diminfo[0].strides));
+
+696:                 self.xi += 1
+
      __pyx_v_self->__pyx_base.xi = (__pyx_v_self->__pyx_base.xi + 1);
+
+697:             elif self.xi >= self.x.nblocks:
+
    __pyx_t_14 = ((__pyx_v_self->__pyx_base.xi >= __pyx_v_self->__pyx_base.x->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L5;
+    }
+
 698:                 # through with x, just pass through y blocks
+
+699:                 nstart = ystart[self.yi]
+
      __pyx_t_16 = __pyx_v_self->__pyx_base.yi;
+      __pyx_t_2 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_ystart.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_2 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_ystart.diminfo[0].shape)) __pyx_t_2 = 0;
+      if (unlikely(__pyx_t_2 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_2);
+        __PYX_ERR(0, 699, __pyx_L1_error)
+      }
+      __pyx_v_nstart = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ystart.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_ystart.diminfo[0].strides));
+
+700:                 nend = yend[self.yi]
+
      __pyx_t_16 = __pyx_v_self->__pyx_base.yi;
+      __pyx_t_2 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_yend.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_2 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_yend.diminfo[0].shape)) __pyx_t_2 = 0;
+      if (unlikely(__pyx_t_2 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_2);
+        __PYX_ERR(0, 700, __pyx_L1_error)
+      }
+      __pyx_v_nend = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yend.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_yend.diminfo[0].strides));
+
+701:                 self.yi += 1
+
      __pyx_v_self->__pyx_base.yi = (__pyx_v_self->__pyx_base.yi + 1);
+
 702:             else:
+
 703:                 # find end of new block
+
+704:                 if xstart[self.xi] < ystart[self.yi]:
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_self->__pyx_base.xi;
+      __pyx_t_2 = -1;
+      if (__pyx_t_16 < 0) {
+        __pyx_t_16 += __pyx_pybuffernd_xstart.diminfo[0].shape;
+        if (unlikely(__pyx_t_16 < 0)) __pyx_t_2 = 0;
+      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xstart.diminfo[0].shape)) __pyx_t_2 = 0;
+      if (unlikely(__pyx_t_2 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_2);
+        __PYX_ERR(0, 704, __pyx_L1_error)
+      }
+      __pyx_t_17 = __pyx_v_self->__pyx_base.yi;
+      __pyx_t_2 = -1;
+      if (__pyx_t_17 < 0) {
+        __pyx_t_17 += __pyx_pybuffernd_ystart.diminfo[0].shape;
+        if (unlikely(__pyx_t_17 < 0)) __pyx_t_2 = 0;
+      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_ystart.diminfo[0].shape)) __pyx_t_2 = 0;
+      if (unlikely(__pyx_t_2 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_2);
+        __PYX_ERR(0, 704, __pyx_L1_error)
+      }
+      __pyx_t_14 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xstart.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xstart.diminfo[0].strides)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ystart.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_ystart.diminfo[0].strides))) != 0);
+      if (__pyx_t_14) {
+/* … */
+        goto __pyx_L8;
+      }
+
+705:                     nstart = xstart[self.xi]
+
        __pyx_t_17 = __pyx_v_self->__pyx_base.xi;
+        __pyx_t_2 = -1;
+        if (__pyx_t_17 < 0) {
+          __pyx_t_17 += __pyx_pybuffernd_xstart.diminfo[0].shape;
+          if (unlikely(__pyx_t_17 < 0)) __pyx_t_2 = 0;
+        } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_xstart.diminfo[0].shape)) __pyx_t_2 = 0;
+        if (unlikely(__pyx_t_2 != -1)) {
+          __Pyx_RaiseBufferIndexError(__pyx_t_2);
+          __PYX_ERR(0, 705, __pyx_L1_error)
+        }
+        __pyx_v_nstart = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xstart.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_xstart.diminfo[0].strides));
+
+706:                     nend = self._find_next_block_end(0)
+
        __pyx_t_8 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *)__pyx_v_self->__pyx_base.__pyx_vtab)->_find_next_block_end(__pyx_v_self, 0); if (unlikely(__pyx_t_8 == ((__pyx_t_5numpy_int32_t)-1))) __PYX_ERR(0, 706, __pyx_L1_error)
+        __pyx_v_nend = __pyx_t_8;
+
 707:                 else:
+
+708:                     nstart = ystart[self.yi]
+
      /*else*/ {
+        __pyx_t_17 = __pyx_v_self->__pyx_base.yi;
+        __pyx_t_2 = -1;
+        if (__pyx_t_17 < 0) {
+          __pyx_t_17 += __pyx_pybuffernd_ystart.diminfo[0].shape;
+          if (unlikely(__pyx_t_17 < 0)) __pyx_t_2 = 0;
+        } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_ystart.diminfo[0].shape)) __pyx_t_2 = 0;
+        if (unlikely(__pyx_t_2 != -1)) {
+          __Pyx_RaiseBufferIndexError(__pyx_t_2);
+          __PYX_ERR(0, 708, __pyx_L1_error)
+        }
+        __pyx_v_nstart = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ystart.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_ystart.diminfo[0].strides));
+
+709:                     nend = self._find_next_block_end(1)
+
        __pyx_t_8 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *)__pyx_v_self->__pyx_base.__pyx_vtab)->_find_next_block_end(__pyx_v_self, 1); if (unlikely(__pyx_t_8 == ((__pyx_t_5numpy_int32_t)-1))) __PYX_ERR(0, 709, __pyx_L1_error)
+        __pyx_v_nend = __pyx_t_8;
+      }
+      __pyx_L8:;
+    }
+    __pyx_L5:;
+
 710: 
+
+711:             out_bloc[result_indexer] = nstart
+
    __pyx_t_17 = __pyx_v_result_indexer;
+    __pyx_t_2 = -1;
+    if (__pyx_t_17 < 0) {
+      __pyx_t_17 += __pyx_pybuffernd_out_bloc.diminfo[0].shape;
+      if (unlikely(__pyx_t_17 < 0)) __pyx_t_2 = 0;
+    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_out_bloc.diminfo[0].shape)) __pyx_t_2 = 0;
+    if (unlikely(__pyx_t_2 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_2);
+      __PYX_ERR(0, 711, __pyx_L1_error)
+    }
+    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out_bloc.diminfo[0].strides) = __pyx_v_nstart;
+
+712:             out_blen[result_indexer] = nend - nstart
+
    __pyx_t_17 = __pyx_v_result_indexer;
+    __pyx_t_2 = -1;
+    if (__pyx_t_17 < 0) {
+      __pyx_t_17 += __pyx_pybuffernd_out_blen.diminfo[0].shape;
+      if (unlikely(__pyx_t_17 < 0)) __pyx_t_2 = 0;
+    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_out_blen.diminfo[0].shape)) __pyx_t_2 = 0;
+    if (unlikely(__pyx_t_2 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_2);
+      __PYX_ERR(0, 712, __pyx_L1_error)
+    }
+    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out_blen.diminfo[0].strides) = (__pyx_v_nend - __pyx_v_nstart);
+
+713:             result_indexer += 1
+
    __pyx_v_result_indexer = (__pyx_v_result_indexer + 1);
+  }
+  __pyx_L4_break:;
+
 714: 
+
+715:         out_bloc = out_bloc[:result_indexer]
+
  __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 715, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_11);
+  __pyx_t_12 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 715, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_12);
+  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+  __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_out_bloc), __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 715, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_11);
+  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 715, __pyx_L1_error)
+  __pyx_t_13 = ((PyArrayObject *)__pyx_t_11);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
+    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_2 < 0)) {
+      PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_bloc, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_3, __pyx_t_4, __pyx_t_5);
+      }
+      __pyx_t_3 = __pyx_t_4 = __pyx_t_5 = 0;
+    }
+    __pyx_pybuffernd_out_bloc.diminfo[0].strides = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_bloc.diminfo[0].shape = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 715, __pyx_L1_error)
+  }
+  __pyx_t_13 = 0;
+  __Pyx_DECREF_SET(__pyx_v_out_bloc, ((PyArrayObject *)__pyx_t_11));
+  __pyx_t_11 = 0;
+
+716:         out_blen = out_blen[:result_indexer]
+
  __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 716, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_11);
+  __pyx_t_12 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 716, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_12);
+  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
+  __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_out_blen), __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 716, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_11);
+  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 716, __pyx_L1_error)
+  __pyx_t_13 = ((PyArrayObject *)__pyx_t_11);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
+    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_2 < 0)) {
+      PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_blen, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
+      }
+      __pyx_t_5 = __pyx_t_4 = __pyx_t_3 = 0;
+    }
+    __pyx_pybuffernd_out_blen.diminfo[0].strides = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_blen.diminfo[0].shape = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 716, __pyx_L1_error)
+  }
+  __pyx_t_13 = 0;
+  __Pyx_DECREF_SET(__pyx_v_out_blen, ((PyArrayObject *)__pyx_t_11));
+  __pyx_t_11 = 0;
+
 717: 
+
+718:         return BlockIndex(self.x.length, out_bloc, out_blen)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_11 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->__pyx_base.x->length); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 718, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_11);
+  __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 718, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_12);
+  __Pyx_GIVEREF(__pyx_t_11);
+  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_bloc));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_bloc));
+  PyTuple_SET_ITEM(__pyx_t_12, 1, ((PyObject *)__pyx_v_out_bloc));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_blen));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_blen));
+  PyTuple_SET_ITEM(__pyx_t_12, 2, ((PyObject *)__pyx_v_out_blen));
+  __pyx_t_11 = 0;
+  __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockIndex), __pyx_t_12, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 718, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_11);
+  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
+  __pyx_r = __pyx_t_11;
+  __pyx_t_11 = 0;
+  goto __pyx_L0;
+
 719: 
+
+720:     cdef int32_t _find_next_block_end(self, bint mode) except -1:
+
static __pyx_t_5numpy_int32_t __pyx_f_6pandas_5_libs_6sparse_10BlockUnion__find_next_block_end(struct __pyx_obj_6pandas_5_libs_6sparse_BlockUnion *__pyx_v_self, int __pyx_v_mode) {
+  CYTHON_UNUSED PyArrayObject *__pyx_v_xstart = 0;
+  PyArrayObject *__pyx_v_xend = 0;
+  PyArrayObject *__pyx_v_ystart = 0;
+  PyArrayObject *__pyx_v_yend = 0;
+  __pyx_t_5numpy_int32_t __pyx_v_xi;
+  __pyx_t_5numpy_int32_t __pyx_v_yi;
+  __pyx_t_5numpy_int32_t __pyx_v_ynblocks;
+  __pyx_t_5numpy_int32_t __pyx_v_nend;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_xend;
+  __Pyx_Buffer __pyx_pybuffer_xend;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_xstart;
+  __Pyx_Buffer __pyx_pybuffer_xstart;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_yend;
+  __Pyx_Buffer __pyx_pybuffer_yend;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_ystart;
+  __Pyx_Buffer __pyx_pybuffer_ystart;
+  __pyx_t_5numpy_int32_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("_find_next_block_end", 0);
+  __pyx_pybuffer_xstart.pybuffer.buf = NULL;
+  __pyx_pybuffer_xstart.refcount = 0;
+  __pyx_pybuffernd_xstart.data = NULL;
+  __pyx_pybuffernd_xstart.rcbuffer = &__pyx_pybuffer_xstart;
+  __pyx_pybuffer_xend.pybuffer.buf = NULL;
+  __pyx_pybuffer_xend.refcount = 0;
+  __pyx_pybuffernd_xend.data = NULL;
+  __pyx_pybuffernd_xend.rcbuffer = &__pyx_pybuffer_xend;
+  __pyx_pybuffer_ystart.pybuffer.buf = NULL;
+  __pyx_pybuffer_ystart.refcount = 0;
+  __pyx_pybuffernd_ystart.data = NULL;
+  __pyx_pybuffernd_ystart.rcbuffer = &__pyx_pybuffer_ystart;
+  __pyx_pybuffer_yend.pybuffer.buf = NULL;
+  __pyx_pybuffer_yend.refcount = 0;
+  __pyx_pybuffernd_yend.data = NULL;
+  __pyx_pybuffernd_yend.rcbuffer = &__pyx_pybuffer_yend;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.BlockUnion._find_next_block_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = -1;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_xstart);
+  __Pyx_XDECREF((PyObject *)__pyx_v_xend);
+  __Pyx_XDECREF((PyObject *)__pyx_v_ystart);
+  __Pyx_XDECREF((PyObject *)__pyx_v_yend);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 721:         """
+
 722:         Wow, this got complicated in a hurry
+
 723: 
+
 724:         mode 0: block started in index x
+
 725:         mode 1: block started in index y
+
 726:         """
+
 727:         cdef:
+
 728:             ndarray[int32_t, ndim=1] xstart, xend, ystart, yend
+
 729:             int32_t xi, yi, xnblocks, ynblocks, nend
+
 730: 
+
+731:         if mode != 0 and mode != 1:
+
  switch (__pyx_v_mode) {
+    case 0:
+    case 1:
+    __pyx_t_1 = 0;
+    break;
+    default:
+    __pyx_t_1 = 1;
+    break;
+  }
+  if (unlikely(__pyx_t_1)) {
+/* … */
+  }
+
+732:             raise Exception('Mode must be 0 or 1')
+
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 732, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+    __PYX_ERR(0, 732, __pyx_L1_error)
+/* … */
+  __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_Mode_must_be_0_or_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 732, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__11);
+  __Pyx_GIVEREF(__pyx_tuple__11);
+
 733: 
+
 734:         # so symmetric code will work
+
+735:         if mode == 0:
+
  __pyx_t_1 = ((__pyx_v_mode == 0) != 0);
+  if (__pyx_t_1) {
+/* … */
+    goto __pyx_L4;
+  }
+
+736:             xstart = self.xstart
+
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.xstart);
+    __Pyx_INCREF(__pyx_t_2);
+    {
+      __Pyx_BufFmt_StackElem __pyx_stack[1];
+      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
+      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+      if (unlikely(__pyx_t_3 < 0)) {
+        PyErr_Fetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
+        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer, (PyObject*)__pyx_v_xstart, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+          Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_6);
+          __Pyx_RaiseBufferFallbackError();
+        } else {
+          PyErr_Restore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+        }
+        __pyx_t_4 = __pyx_t_5 = __pyx_t_6 = 0;
+      }
+      __pyx_pybuffernd_xstart.diminfo[0].strides = __pyx_pybuffernd_xstart.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xstart.diminfo[0].shape = __pyx_pybuffernd_xstart.rcbuffer->pybuffer.shape[0];
+      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 736, __pyx_L1_error)
+    }
+    __pyx_v_xstart = ((PyArrayObject *)__pyx_t_2);
+    __pyx_t_2 = 0;
+
+737:             xend = self.xend
+
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.xend);
+    __Pyx_INCREF(__pyx_t_2);
+    {
+      __Pyx_BufFmt_StackElem __pyx_stack[1];
+      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
+      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xend.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+      if (unlikely(__pyx_t_3 < 0)) {
+        PyErr_Fetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
+        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xend.rcbuffer->pybuffer, (PyObject*)__pyx_v_xend, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+          Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4);
+          __Pyx_RaiseBufferFallbackError();
+        } else {
+          PyErr_Restore(__pyx_t_6, __pyx_t_5, __pyx_t_4);
+        }
+        __pyx_t_6 = __pyx_t_5 = __pyx_t_4 = 0;
+      }
+      __pyx_pybuffernd_xend.diminfo[0].strides = __pyx_pybuffernd_xend.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xend.diminfo[0].shape = __pyx_pybuffernd_xend.rcbuffer->pybuffer.shape[0];
+      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 737, __pyx_L1_error)
+    }
+    __pyx_v_xend = ((PyArrayObject *)__pyx_t_2);
+    __pyx_t_2 = 0;
+
+738:             xi = self.xi
+
    __pyx_t_7 = __pyx_v_self->__pyx_base.xi;
+    __pyx_v_xi = __pyx_t_7;
+
 739: 
+
+740:             ystart = self.ystart
+
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.ystart);
+    __Pyx_INCREF(__pyx_t_2);
+    {
+      __Pyx_BufFmt_StackElem __pyx_stack[1];
+      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
+      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+      if (unlikely(__pyx_t_3 < 0)) {
+        PyErr_Fetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
+        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer, (PyObject*)__pyx_v_ystart, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+          Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_6);
+          __Pyx_RaiseBufferFallbackError();
+        } else {
+          PyErr_Restore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+        }
+        __pyx_t_4 = __pyx_t_5 = __pyx_t_6 = 0;
+      }
+      __pyx_pybuffernd_ystart.diminfo[0].strides = __pyx_pybuffernd_ystart.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ystart.diminfo[0].shape = __pyx_pybuffernd_ystart.rcbuffer->pybuffer.shape[0];
+      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 740, __pyx_L1_error)
+    }
+    __pyx_v_ystart = ((PyArrayObject *)__pyx_t_2);
+    __pyx_t_2 = 0;
+
+741:             yend = self.yend
+
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.yend);
+    __Pyx_INCREF(__pyx_t_2);
+    {
+      __Pyx_BufFmt_StackElem __pyx_stack[1];
+      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
+      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yend.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+      if (unlikely(__pyx_t_3 < 0)) {
+        PyErr_Fetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
+        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yend.rcbuffer->pybuffer, (PyObject*)__pyx_v_yend, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+          Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4);
+          __Pyx_RaiseBufferFallbackError();
+        } else {
+          PyErr_Restore(__pyx_t_6, __pyx_t_5, __pyx_t_4);
+        }
+        __pyx_t_6 = __pyx_t_5 = __pyx_t_4 = 0;
+      }
+      __pyx_pybuffernd_yend.diminfo[0].strides = __pyx_pybuffernd_yend.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_yend.diminfo[0].shape = __pyx_pybuffernd_yend.rcbuffer->pybuffer.shape[0];
+      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 741, __pyx_L1_error)
+    }
+    __pyx_v_yend = ((PyArrayObject *)__pyx_t_2);
+    __pyx_t_2 = 0;
+
+742:             yi = self.yi
+
    __pyx_t_7 = __pyx_v_self->__pyx_base.yi;
+    __pyx_v_yi = __pyx_t_7;
+
+743:             ynblocks = self.y.nblocks
+
    __pyx_t_7 = __pyx_v_self->__pyx_base.y->nblocks;
+    __pyx_v_ynblocks = __pyx_t_7;
+
 744:         else:
+
+745:             xstart = self.ystart
+
  /*else*/ {
+    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.ystart);
+    __Pyx_INCREF(__pyx_t_2);
+    {
+      __Pyx_BufFmt_StackElem __pyx_stack[1];
+      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
+      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+      if (unlikely(__pyx_t_3 < 0)) {
+        PyErr_Fetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
+        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer, (PyObject*)__pyx_v_xstart, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+          Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_6);
+          __Pyx_RaiseBufferFallbackError();
+        } else {
+          PyErr_Restore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+        }
+        __pyx_t_4 = __pyx_t_5 = __pyx_t_6 = 0;
+      }
+      __pyx_pybuffernd_xstart.diminfo[0].strides = __pyx_pybuffernd_xstart.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xstart.diminfo[0].shape = __pyx_pybuffernd_xstart.rcbuffer->pybuffer.shape[0];
+      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 745, __pyx_L1_error)
+    }
+    __pyx_v_xstart = ((PyArrayObject *)__pyx_t_2);
+    __pyx_t_2 = 0;
+
+746:             xend = self.yend
+
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.yend);
+    __Pyx_INCREF(__pyx_t_2);
+    {
+      __Pyx_BufFmt_StackElem __pyx_stack[1];
+      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
+      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xend.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+      if (unlikely(__pyx_t_3 < 0)) {
+        PyErr_Fetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
+        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xend.rcbuffer->pybuffer, (PyObject*)__pyx_v_xend, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+          Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4);
+          __Pyx_RaiseBufferFallbackError();
+        } else {
+          PyErr_Restore(__pyx_t_6, __pyx_t_5, __pyx_t_4);
+        }
+        __pyx_t_6 = __pyx_t_5 = __pyx_t_4 = 0;
+      }
+      __pyx_pybuffernd_xend.diminfo[0].strides = __pyx_pybuffernd_xend.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xend.diminfo[0].shape = __pyx_pybuffernd_xend.rcbuffer->pybuffer.shape[0];
+      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 746, __pyx_L1_error)
+    }
+    __pyx_v_xend = ((PyArrayObject *)__pyx_t_2);
+    __pyx_t_2 = 0;
+
+747:             xi = self.yi
+
    __pyx_t_7 = __pyx_v_self->__pyx_base.yi;
+    __pyx_v_xi = __pyx_t_7;
+
 748: 
+
+749:             ystart = self.xstart
+
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.xstart);
+    __Pyx_INCREF(__pyx_t_2);
+    {
+      __Pyx_BufFmt_StackElem __pyx_stack[1];
+      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
+      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+      if (unlikely(__pyx_t_3 < 0)) {
+        PyErr_Fetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
+        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer, (PyObject*)__pyx_v_ystart, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+          Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_6);
+          __Pyx_RaiseBufferFallbackError();
+        } else {
+          PyErr_Restore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
+        }
+        __pyx_t_4 = __pyx_t_5 = __pyx_t_6 = 0;
+      }
+      __pyx_pybuffernd_ystart.diminfo[0].strides = __pyx_pybuffernd_ystart.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ystart.diminfo[0].shape = __pyx_pybuffernd_ystart.rcbuffer->pybuffer.shape[0];
+      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 749, __pyx_L1_error)
+    }
+    __pyx_v_ystart = ((PyArrayObject *)__pyx_t_2);
+    __pyx_t_2 = 0;
+
+750:             yend = self.xend
+
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.xend);
+    __Pyx_INCREF(__pyx_t_2);
+    {
+      __Pyx_BufFmt_StackElem __pyx_stack[1];
+      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
+      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yend.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
+      if (unlikely(__pyx_t_3 < 0)) {
+        PyErr_Fetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
+        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yend.rcbuffer->pybuffer, (PyObject*)__pyx_v_yend, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
+          Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4);
+          __Pyx_RaiseBufferFallbackError();
+        } else {
+          PyErr_Restore(__pyx_t_6, __pyx_t_5, __pyx_t_4);
+        }
+        __pyx_t_6 = __pyx_t_5 = __pyx_t_4 = 0;
+      }
+      __pyx_pybuffernd_yend.diminfo[0].strides = __pyx_pybuffernd_yend.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_yend.diminfo[0].shape = __pyx_pybuffernd_yend.rcbuffer->pybuffer.shape[0];
+      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 750, __pyx_L1_error)
+    }
+    __pyx_v_yend = ((PyArrayObject *)__pyx_t_2);
+    __pyx_t_2 = 0;
+
+751:             yi = self.xi
+
    __pyx_t_7 = __pyx_v_self->__pyx_base.xi;
+    __pyx_v_yi = __pyx_t_7;
+
+752:             ynblocks = self.x.nblocks
+
    __pyx_t_7 = __pyx_v_self->__pyx_base.x->nblocks;
+    __pyx_v_ynblocks = __pyx_t_7;
+  }
+  __pyx_L4:;
+
 753: 
+
+754:         nend = xend[xi]
+
  __pyx_t_8 = __pyx_v_xi;
+  __pyx_t_3 = -1;
+  if (__pyx_t_8 < 0) {
+    __pyx_t_8 += __pyx_pybuffernd_xend.diminfo[0].shape;
+    if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0;
+  } else if (unlikely(__pyx_t_8 >= __pyx_pybuffernd_xend.diminfo[0].shape)) __pyx_t_3 = 0;
+  if (unlikely(__pyx_t_3 != -1)) {
+    __Pyx_RaiseBufferIndexError(__pyx_t_3);
+    __PYX_ERR(0, 754, __pyx_L1_error)
+  }
+  __pyx_v_nend = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xend.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_xend.diminfo[0].strides));
+
 755: 
+
 756:         # done with y?
+
+757:         if yi == ynblocks:
+
  __pyx_t_1 = ((__pyx_v_yi == __pyx_v_ynblocks) != 0);
+  if (__pyx_t_1) {
+/* … */
+  }
+
+758:             self._set_current_indices(xi + 1, yi, mode)
+
    __pyx_t_2 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._set_current_indices(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *)__pyx_v_self), (__pyx_v_xi + 1), __pyx_v_yi, __pyx_v_mode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+759:             return nend
+
    __pyx_r = __pyx_v_nend;
+    goto __pyx_L0;
+
+760:         elif nend < ystart[yi]:
+
  __pyx_t_8 = __pyx_v_yi;
+  __pyx_t_3 = -1;
+  if (__pyx_t_8 < 0) {
+    __pyx_t_8 += __pyx_pybuffernd_ystart.diminfo[0].shape;
+    if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0;
+  } else if (unlikely(__pyx_t_8 >= __pyx_pybuffernd_ystart.diminfo[0].shape)) __pyx_t_3 = 0;
+  if (unlikely(__pyx_t_3 != -1)) {
+    __Pyx_RaiseBufferIndexError(__pyx_t_3);
+    __PYX_ERR(0, 760, __pyx_L1_error)
+  }
+  __pyx_t_1 = ((__pyx_v_nend < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ystart.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_ystart.diminfo[0].strides))) != 0);
+  if (__pyx_t_1) {
+/* … */
+  }
+
 761:             # block ends before y block
+
+762:             self._set_current_indices(xi + 1, yi, mode)
+
    __pyx_t_2 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._set_current_indices(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *)__pyx_v_self), (__pyx_v_xi + 1), __pyx_v_yi, __pyx_v_mode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 762, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
+763:             return nend
+
    __pyx_r = __pyx_v_nend;
+    goto __pyx_L0;
+
 764:         else:
+
+765:             while yi < ynblocks and nend > yend[yi]:
+
  /*else*/ {
+    while (1) {
+      __pyx_t_9 = ((__pyx_v_yi < __pyx_v_ynblocks) != 0);
+      if (__pyx_t_9) {
+      } else {
+        __pyx_t_1 = __pyx_t_9;
+        goto __pyx_L8_bool_binop_done;
+      }
+      __pyx_t_8 = __pyx_v_yi;
+      __pyx_t_3 = -1;
+      if (__pyx_t_8 < 0) {
+        __pyx_t_8 += __pyx_pybuffernd_yend.diminfo[0].shape;
+        if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0;
+      } else if (unlikely(__pyx_t_8 >= __pyx_pybuffernd_yend.diminfo[0].shape)) __pyx_t_3 = 0;
+      if (unlikely(__pyx_t_3 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_3);
+        __PYX_ERR(0, 765, __pyx_L1_error)
+      }
+      __pyx_t_9 = ((__pyx_v_nend > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yend.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_yend.diminfo[0].strides))) != 0);
+      __pyx_t_1 = __pyx_t_9;
+      __pyx_L8_bool_binop_done:;
+      if (!__pyx_t_1) break;
+
+766:                 yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+
 767: 
+
+768:             self._set_current_indices(xi + 1, yi, mode)
+
    __pyx_t_2 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._set_current_indices(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *)__pyx_v_self), (__pyx_v_xi + 1), __pyx_v_yi, __pyx_v_mode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 768, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_2);
+    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+
 769: 
+
+770:             if yi == ynblocks:
+
    __pyx_t_1 = ((__pyx_v_yi == __pyx_v_ynblocks) != 0);
+    if (__pyx_t_1) {
+/* … */
+    }
+
+771:                 return nend
+
      __pyx_r = __pyx_v_nend;
+      goto __pyx_L0;
+
 772: 
+
+773:             if nend < ystart[yi]:
+
    __pyx_t_8 = __pyx_v_yi;
+    __pyx_t_3 = -1;
+    if (__pyx_t_8 < 0) {
+      __pyx_t_8 += __pyx_pybuffernd_ystart.diminfo[0].shape;
+      if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0;
+    } else if (unlikely(__pyx_t_8 >= __pyx_pybuffernd_ystart.diminfo[0].shape)) __pyx_t_3 = 0;
+    if (unlikely(__pyx_t_3 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_3);
+      __PYX_ERR(0, 773, __pyx_L1_error)
+    }
+    __pyx_t_1 = ((__pyx_v_nend < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ystart.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_ystart.diminfo[0].strides))) != 0);
+    if (__pyx_t_1) {
+/* … */
+    }
+
 774:                 # we're done, return the block end
+
+775:                 return nend
+
      __pyx_r = __pyx_v_nend;
+      goto __pyx_L0;
+
 776:             else:
+
 777:                 # merge blocks, continue searching
+
 778:                 # this also catches the case where blocks
+
+779:                 return self._find_next_block_end(1 - mode)
+
    /*else*/ {
+      __pyx_t_7 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *)__pyx_v_self->__pyx_base.__pyx_vtab)->_find_next_block_end(__pyx_v_self, (1 - __pyx_v_mode)); if (unlikely(__pyx_t_7 == ((__pyx_t_5numpy_int32_t)-1))) __PYX_ERR(0, 779, __pyx_L1_error)
+      __pyx_r = __pyx_t_7;
+      goto __pyx_L0;
+    }
+  }
+
 780: 
+
 781: 
+
 782: # -----------------------------------------------------------------------------
+
 783: # Sparse arithmetic
+
 784: 
+
 785: include "sparse_op_helper.pxi"
+
 786: 
+
 787: 
+
 788: # -----------------------------------------------------------------------------
+
 789: # SparseArray mask create operations
+
 790: 
+
+791: def make_mask_object_ndarray(ndarray[object, ndim=1] arr, object fill_value):
+
/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_139make_mask_object_ndarray(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6pandas_5_libs_6sparse_139make_mask_object_ndarray = {"make_mask_object_ndarray", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pandas_5_libs_6sparse_139make_mask_object_ndarray, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_139make_mask_object_ndarray(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  PyArrayObject *__pyx_v_arr = 0;
+  PyObject *__pyx_v_fill_value = 0;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("make_mask_object_ndarray (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arr,&__pyx_n_s_fill_value,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_arr)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fill_value)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("make_mask_object_ndarray", 1, 2, 2, 1); __PYX_ERR(0, 791, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "make_mask_object_ndarray") < 0)) __PYX_ERR(0, 791, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_arr = ((PyArrayObject *)values[0]);
+    __pyx_v_fill_value = values[1];
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("make_mask_object_ndarray", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 791, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.make_mask_object_ndarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) __PYX_ERR(0, 791, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_138make_mask_object_ndarray(__pyx_self, __pyx_v_arr, __pyx_v_fill_value);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_138make_mask_object_ndarray(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_fill_value) {
+  PyObject *__pyx_v_value = 0;
+  Py_ssize_t __pyx_v_i;
+  Py_ssize_t __pyx_v_new_length;
+  PyArrayObject *__pyx_v_mask = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_arr;
+  __Pyx_Buffer __pyx_pybuffer_arr;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_mask;
+  __Pyx_Buffer __pyx_pybuffer_mask;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("make_mask_object_ndarray", 0);
+  __pyx_pybuffer_mask.pybuffer.buf = NULL;
+  __pyx_pybuffer_mask.refcount = 0;
+  __pyx_pybuffernd_mask.data = NULL;
+  __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask;
+  __pyx_pybuffer_arr.pybuffer.buf = NULL;
+  __pyx_pybuffer_arr.refcount = 0;
+  __pyx_pybuffernd_arr.data = NULL;
+  __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr;
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 791, __pyx_L1_error)
+  }
+  __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0];
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.make_mask_object_ndarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer);
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF(__pyx_v_value);
+  __Pyx_XDECREF((PyObject *)__pyx_v_mask);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+/* … */
+  __pyx_tuple__31 = PyTuple_Pack(6, __pyx_n_s_arr, __pyx_n_s_fill_value, __pyx_n_s_value, __pyx_n_s_i, __pyx_n_s_new_length, __pyx_n_s_mask); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 791, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_tuple__31);
+  __Pyx_GIVEREF(__pyx_tuple__31);
+/* … */
+  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_6pandas_5_libs_6sparse_139make_mask_object_ndarray, NULL, __pyx_n_s_pandas__libs_sparse); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 791, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_make_mask_object_ndarray, __pyx_t_1) < 0) __PYX_ERR(0, 791, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pandas__libs_sparse_pyx, __pyx_n_s_make_mask_object_ndarray, 791, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 791, __pyx_L1_error)
+
 792:     cdef:
+
 793:         object value
+
 794:         Py_ssize_t i
+
+795:         Py_ssize_t new_length = len(arr)
+
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_arr)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 795, __pyx_L1_error)
+  __pyx_v_new_length = __pyx_t_1;
+
 796:         ndarray[int8_t, ndim=1] mask
+
 797: 
+
+798:     mask = np.ones(new_length, dtype=np.int8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 798, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 798, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_new_length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 798, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 798, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_GIVEREF(__pyx_t_2);
+  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
+  __pyx_t_2 = 0;
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 798, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 798, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 798, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 798, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 798, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 798, __pyx_L1_error)
+  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
+    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_8 < 0)) {
+      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
+      }
+      __pyx_t_9 = __pyx_t_10 = __pyx_t_11 = 0;
+    }
+    __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 798, __pyx_L1_error)
+  }
+  __pyx_t_7 = 0;
+  __pyx_v_mask = ((PyArrayObject *)__pyx_t_6);
+  __pyx_t_6 = 0;
+
 799: 
+
+800:     for i in range(new_length):
+
  __pyx_t_1 = __pyx_v_new_length;
+  __pyx_t_12 = __pyx_t_1;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_i = __pyx_t_13;
+
+801:         value = arr[i]
+
    __pyx_t_14 = __pyx_v_i;
+    __pyx_t_8 = -1;
+    if (__pyx_t_14 < 0) {
+      __pyx_t_14 += __pyx_pybuffernd_arr.diminfo[0].shape;
+      if (unlikely(__pyx_t_14 < 0)) __pyx_t_8 = 0;
+    } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_arr.diminfo[0].shape)) __pyx_t_8 = 0;
+    if (unlikely(__pyx_t_8 != -1)) {
+      __Pyx_RaiseBufferIndexError(__pyx_t_8);
+      __PYX_ERR(0, 801, __pyx_L1_error)
+    }
+    __pyx_t_6 = (PyObject *) *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_arr.diminfo[0].strides);
+    __Pyx_INCREF((PyObject*)__pyx_t_6);
+    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6);
+    __pyx_t_6 = 0;
+
+802:         if value == fill_value and type(value) == type(fill_value):
+
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_value, __pyx_v_fill_value, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 802, __pyx_L1_error)
+    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 802, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (__pyx_t_16) {
+    } else {
+      __pyx_t_15 = __pyx_t_16;
+      goto __pyx_L6_bool_binop_done;
+    }
+    __pyx_t_6 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_value)), ((PyObject *)Py_TYPE(__pyx_v_fill_value)), Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 802, __pyx_L1_error)
+    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 802, __pyx_L1_error)
+    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+    __pyx_t_15 = __pyx_t_16;
+    __pyx_L6_bool_binop_done:;
+    if (__pyx_t_15) {
+/* … */
+    }
+  }
+
+803:             mask[i] = 0
+
      __pyx_t_14 = __pyx_v_i;
+      __pyx_t_8 = -1;
+      if (__pyx_t_14 < 0) {
+        __pyx_t_14 += __pyx_pybuffernd_mask.diminfo[0].shape;
+        if (unlikely(__pyx_t_14 < 0)) __pyx_t_8 = 0;
+      } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_mask.diminfo[0].shape)) __pyx_t_8 = 0;
+      if (unlikely(__pyx_t_8 != -1)) {
+        __Pyx_RaiseBufferIndexError(__pyx_t_8);
+        __PYX_ERR(0, 803, __pyx_L1_error)
+      }
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_mask.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_mask.diminfo[0].strides) = 0;
+
 804: 
+
+805:     return mask.view(dtype=bool)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_mask), __pyx_n_s_view); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 805, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_6);
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 805, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 805, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 805, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __pyx_r = __pyx_t_4;
+  __pyx_t_4 = 0;
+  goto __pyx_L0;
+
diff --git a/pandas/_libs/sparse_op_helper.html b/pandas/_libs/sparse_op_helper.html new file mode 100644 index 0000000000000..9c7cb436b4f5a --- /dev/null +++ b/pandas/_libs/sparse_op_helper.html @@ -0,0 +1,33878 @@ + + + + + + Cython: sparse_op_helper.pxi + + + +

Generated by Cython 0.29.24

+

+ Yellow lines hint at Python interaction.
+ Click on a line that starts with a "+" to see the C code that Cython generated for it. +

+

Raw output: sparse_op_helper.pxi

+
 0001: """
+
 0002: Template for each `dtype` helper function for sparse ops
+
 0003: 
+
 0004: WARNING: DO NOT edit .pxi FILE directly, .pxi is generated from .pxi.in
+
 0005: """
+
 0006: 
+
 0007: # ----------------------------------------------------------------------
+
 0008: # Sparse op
+
 0009: # ----------------------------------------------------------------------
+
 0010: 
+
 0011: ctypedef fused sparse_t:
+
 0012:     float64_t
+
 0013:     int64_t
+
 0014: 
+
 0015: 
+
+0016: cdef inline float64_t __div__(sparse_t a, sparse_t b):
+
static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_t_5numpy_float64_t __pyx_v_a, __pyx_t_5numpy_float64_t __pyx_v_b) {
+  __pyx_t_5numpy_float64_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__pyx_fuse_0__div__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("pandas._libs.sparse.__div__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_t_5numpy_int64_t __pyx_v_a, __pyx_t_5numpy_int64_t __pyx_v_b) {
+  __pyx_t_5numpy_float64_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__pyx_fuse_1__div__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("pandas._libs.sparse.__div__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+0017:     if b == 0:
+
  __pyx_t_1 = ((__pyx_v_b == 0.0) != 0);
+  if (__pyx_t_1) {
+/* … */
+  }
+/* … */
+  __pyx_t_1 = ((__pyx_v_b == 0) != 0);
+  if (__pyx_t_1) {
+/* … */
+  }
+
+0018:         if a > 0:
+
    __pyx_t_1 = ((__pyx_v_a > 0.0) != 0);
+    if (__pyx_t_1) {
+/* … */
+    }
+/* … */
+    __pyx_t_1 = ((__pyx_v_a > 0) != 0);
+    if (__pyx_t_1) {
+/* … */
+    }
+
+0019:             return INF
+
      __pyx_r = __pyx_v_6pandas_5_libs_6sparse_INF;
+      goto __pyx_L0;
+/* … */
+      __pyx_r = __pyx_v_6pandas_5_libs_6sparse_INF;
+      goto __pyx_L0;
+
+0020:         elif a < 0:
+
    __pyx_t_1 = ((__pyx_v_a < 0.0) != 0);
+    if (__pyx_t_1) {
+/* … */
+    }
+/* … */
+    __pyx_t_1 = ((__pyx_v_a < 0) != 0);
+    if (__pyx_t_1) {
+/* … */
+    }
+
+0021:             return -INF
+
      __pyx_r = (-__pyx_v_6pandas_5_libs_6sparse_INF);
+      goto __pyx_L0;
+/* … */
+      __pyx_r = (-__pyx_v_6pandas_5_libs_6sparse_INF);
+      goto __pyx_L0;
+
 0022:         else:
+
+0023:             return NaN
+
    /*else*/ {
+      __pyx_r = __pyx_v_6pandas_5_libs_6sparse_NaN;
+      goto __pyx_L0;
+    }
+/* … */
+    /*else*/ {
+      __pyx_r = __pyx_v_6pandas_5_libs_6sparse_NaN;
+      goto __pyx_L0;
+    }
+
 0024:     else:
+
+0025:         return float(a) / b
+
  /*else*/ {
+    if (unlikely(__pyx_v_b == 0)) {
+      PyErr_SetString(PyExc_ZeroDivisionError, "float division");
+      __PYX_ERR(2, 25, __pyx_L1_error)
+    }
+    __pyx_r = (((__pyx_t_5numpy_float64_t)((double)__pyx_v_a)) / __pyx_v_b);
+    goto __pyx_L0;
+  }
+/* … */
+  /*else*/ {
+    if (unlikely(__pyx_v_b == 0)) {
+      PyErr_SetString(PyExc_ZeroDivisionError, "float division");
+      __PYX_ERR(2, 25, __pyx_L1_error)
+    }
+    __pyx_r = (((double)__pyx_v_a) / ((double)__pyx_v_b));
+    goto __pyx_L0;
+  }
+
 0026: 
+
 0027: 
+
+0028: cdef inline float64_t __truediv__(sparse_t a, sparse_t b):
+
static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_t_5numpy_float64_t __pyx_v_a, __pyx_t_5numpy_float64_t __pyx_v_b) {
+  __pyx_t_5numpy_float64_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__pyx_fuse_0__truediv__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_t_5numpy_int64_t __pyx_v_a, __pyx_t_5numpy_int64_t __pyx_v_b) {
+  __pyx_t_5numpy_float64_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__pyx_fuse_1__truediv__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+0029:     return __div__(a, b)
+
  __pyx_r = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_a, __pyx_v_b);
+  goto __pyx_L0;
+/* … */
+  __pyx_r = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_a, __pyx_v_b);
+  goto __pyx_L0;
+
 0030: 
+
 0031: 
+
+0032: cdef inline sparse_t __mod__(sparse_t a, sparse_t b):
+
static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_t_5numpy_float64_t __pyx_v_a, __pyx_t_5numpy_float64_t __pyx_v_b) {
+  __pyx_t_5numpy_float64_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__pyx_fuse_0__mod__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("pandas._libs.sparse.__mod__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static CYTHON_INLINE __pyx_t_5numpy_int64_t __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_t_5numpy_int64_t __pyx_v_a, __pyx_t_5numpy_int64_t __pyx_v_b) {
+  __pyx_t_5numpy_int64_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__pyx_fuse_1__mod__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("pandas._libs.sparse.__mod__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+0033:     if b == 0:
+
  __pyx_t_1 = ((__pyx_v_b == 0.0) != 0);
+  if (__pyx_t_1) {
+/* … */
+  }
+/* … */
+  __pyx_t_1 = ((__pyx_v_b == 0) != 0);
+  if (__pyx_t_1) {
+/* … */
+  }
+
 0034:         if sparse_t is float64_t:
+
+0035:             return NaN
+
    __pyx_r = __pyx_v_6pandas_5_libs_6sparse_NaN;
+    goto __pyx_L0;
+
 0036:         else:
+
+0037:             return 0
+
    __pyx_r = 0;
+    goto __pyx_L0;
+
 0038:     else:
+
+0039:         return a % b
+
  /*else*/ {
+    if (unlikely(__pyx_v_b == 0)) {
+      PyErr_SetString(PyExc_ZeroDivisionError, "float divmod()");
+      __PYX_ERR(2, 39, __pyx_L1_error)
+    }
+    __pyx_r = __Pyx_mod___pyx_t_5numpy_float64_t(__pyx_v_a, __pyx_v_b);
+    goto __pyx_L0;
+  }
+/* … */
+  /*else*/ {
+    if (unlikely(__pyx_v_b == 0)) {
+      PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
+      __PYX_ERR(2, 39, __pyx_L1_error)
+    }
+    __pyx_r = __Pyx_mod___pyx_t_5numpy_int64_t(__pyx_v_a, __pyx_v_b);
+    goto __pyx_L0;
+  }
+
 0040: 
+
 0041: 
+
+0042: cdef inline sparse_t __floordiv__(sparse_t a, sparse_t b):
+
static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_t_5numpy_float64_t __pyx_v_a, __pyx_t_5numpy_float64_t __pyx_v_b) {
+  __pyx_t_5numpy_float64_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__pyx_fuse_0__floordiv__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("pandas._libs.sparse.__floordiv__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static CYTHON_INLINE __pyx_t_5numpy_int64_t __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_t_5numpy_int64_t __pyx_v_a, __pyx_t_5numpy_int64_t __pyx_v_b) {
+  __pyx_t_5numpy_int64_t __pyx_r;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("__pyx_fuse_1__floordiv__", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_WriteUnraisable("pandas._libs.sparse.__floordiv__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+0043:     if b == 0:
+
  __pyx_t_1 = ((__pyx_v_b == 0.0) != 0);
+  if (__pyx_t_1) {
+/* … */
+  }
+/* … */
+  __pyx_t_1 = ((__pyx_v_b == 0) != 0);
+  if (__pyx_t_1) {
+/* … */
+  }
+
 0044:         if sparse_t is float64_t:
+
+0045:             return NaN
+
    __pyx_r = __pyx_v_6pandas_5_libs_6sparse_NaN;
+    goto __pyx_L0;
+
 0046:         else:
+
+0047:             return 0
+
    __pyx_r = 0;
+    goto __pyx_L0;
+
 0048:     else:
+
+0049:         return a // b
+
  /*else*/ {
+    if (unlikely(__pyx_v_b == 0)) {
+      PyErr_SetString(PyExc_ZeroDivisionError, "float division");
+      __PYX_ERR(2, 49, __pyx_L1_error)
+    }
+    __pyx_r = floor(__pyx_v_a / __pyx_v_b);
+    goto __pyx_L0;
+  }
+/* … */
+  /*else*/ {
+    if (unlikely(__pyx_v_b == 0)) {
+      PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
+      __PYX_ERR(2, 49, __pyx_L1_error)
+    }
+    else if (sizeof(__pyx_t_5numpy_int64_t) == sizeof(long) && (!(((__pyx_t_5numpy_int64_t)-1) > 0)) && unlikely(__pyx_v_b == (__pyx_t_5numpy_int64_t)-1)  && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_a))) {
+      PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
+      __PYX_ERR(2, 49, __pyx_L1_error)
+    }
+    __pyx_r = __Pyx_div___pyx_t_5numpy_int64_t(__pyx_v_a, __pyx_v_b);
+    goto __pyx_L0;
+  }
+
 0050: 
+
 0051: 
+
 0052: # ----------------------------------------------------------------------
+
 0053: # sparse array op
+
 0054: # ----------------------------------------------------------------------
+
 0055: 
+
 0056: 
+
 0057: @cython.wraparound(False)
+
 0058: @cython.boundscheck(False)
+
+0059: cdef inline tuple block_op_add_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_add_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_add_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0060:                                                 BlockIndex xindex,
+
 0061:                                                 float64_t xfill,
+
 0062:                                                 float64_t[:] y_,
+
 0063:                                                 BlockIndex yindex,
+
 0064:                                                 float64_t yfill):
+
 0065:     '''
+
 0066:     Binary operator on BlockIndex objects with fill values
+
 0067:     '''
+
 0068: 
+
 0069:     cdef:
+
 0070:         BlockIndex out_index
+
+0071:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+0072:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 0073:         int32_t xloc, yloc
+
+0074:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 0075: 
+
 0076:         float64_t[:] x, y
+
 0077:         ndarray[float64_t, ndim=1] out
+
 0078: 
+
 0079:     # to suppress Cython warning
+
+0080:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0081:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0082: 
+
+0083:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 83, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+0084:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 84, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 84, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 84, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 84, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 84, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 84, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 84, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 84, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 84, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 84, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 84, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0085: 
+
 0086:     # Wow, what a hack job. Need to do something about this
+
 0087: 
+
 0088:     # walk the two SparseVectors, adding matched locations...
+
+0089:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+0090:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0091:             # use y fill value
+
+0092:             out[out_i] = x[xi] + yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
+
+0093:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0094: 
+
 0095:             # advance x location
+
+0096:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0097:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0098:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0099:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+0100:             continue
+
      goto __pyx_L3_continue;
+
 0101: 
+
+0102:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0103:             # use x fill value
+
+0104:             out[out_i] = xfill + y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+0105:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0106: 
+
 0107:             # advance y location
+
+0108:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0109:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0110:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0111:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+0112:             continue
+
      goto __pyx_L3_continue;
+
 0113: 
+
+0114:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+0115:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 0116: 
+
 0117:         # each index in the out_index had to come from either x, y, or both
+
+0118:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+0119:             out[out_i] = x[xi] + y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) + (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0120:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0121:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0122: 
+
 0123:             # advance both locations
+
+0124:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0125:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0126:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0127:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0128: 
+
+0129:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0130:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0131:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0132:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0133: 
+
+0134:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 0135:             # use y fill value
+
+0136:             out[out_i] = x[xi] + yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
+
+0137:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0138: 
+
 0139:             # advance x location
+
+0140:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0141:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0142:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0143:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0144:         else:
+
 0145:             # use x fill value
+
+0146:             out[out_i] = xfill + y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0147:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0148: 
+
 0149:             # advance y location
+
+0150:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0151:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+0152:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0153:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0154: 
+
+0155:     return out, out_index, xfill + yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_xfill + __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 155, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 155, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0156: 
+
 0157: 
+
 0158: @cython.wraparound(False)
+
 0159: @cython.boundscheck(False)
+
+0160: cdef inline tuple int_op_add_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_add_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_add_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0161:                                               IntIndex xindex,
+
 0162:                                               float64_t xfill,
+
 0163:                                               float64_t[:] y_,
+
 0164:                                               IntIndex yindex,
+
 0165:                                               float64_t yfill):
+
 0166:     cdef:
+
 0167:         IntIndex out_index
+
+0168:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 0169:         int32_t xloc, yloc
+
 0170:         int32_t[:] xindices, yindices, out_indices
+
 0171:         float64_t[:] x, y
+
 0172:         ndarray[float64_t, ndim=1] out
+
 0173: 
+
 0174:     # suppress Cython compiler warnings due to inlining
+
+0175:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0176:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0177: 
+
 0178:     # need to do this first to know size of result array
+
+0179:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 179, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+0180:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 180, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 180, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 180, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 180, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 180, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 180, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 180, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 180, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 180, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 180, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 180, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0181: 
+
+0182:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 182, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0183:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 183, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0184:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 184, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 0185: 
+
 0186:     # walk the two SparseVectors, adding matched locations...
+
+0187:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+0188:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0189:             # use x fill value
+
+0190:             out[out_i] = xfill + y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0191:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0192:             continue
+
      goto __pyx_L3_continue;
+
 0193: 
+
+0194:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0195:             # use y fill value
+
+0196:             out[out_i] = x[xi] + yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
+
+0197:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0198:             continue
+
      goto __pyx_L3_continue;
+
 0199: 
+
+0200:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+0201:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 0202: 
+
 0203:         # each index in the out_index had to come from either x, y, or both
+
+0204:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+0205:             out[out_i] = x[xi] + y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) + (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+0206:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0207:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0208:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 0209:             # use y fill value
+
+0210:             out[out_i] = x[xi] + yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
+
+0211:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0212:         else:
+
 0213:             # use x fill value
+
+0214:             out[out_i] = xfill + y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+0215:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 0216: 
+
+0217:     return out, out_index, xfill + yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_xfill + __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 217, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 217, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0218: 
+
 0219: 
+
+0220: cpdef sparse_add_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_3sparse_add_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_add_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_add_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_3sparse_add_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_3sparse_add_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_add_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_add_float64", 1, 6, 6, 1); __PYX_ERR(2, 220, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_add_float64", 1, 6, 6, 2); __PYX_ERR(2, 220, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_add_float64", 1, 6, 6, 3); __PYX_ERR(2, 220, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_add_float64", 1, 6, 6, 4); __PYX_ERR(2, 220, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_add_float64", 1, 6, 6, 5); __PYX_ERR(2, 220, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_add_float64") < 0)) __PYX_ERR(2, 220, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 220, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 221, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 222, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 223, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_add_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 220, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 221, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 223, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_2sparse_add_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_2sparse_add_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_add_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 220, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 220, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_add_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 220, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0221:                                   SparseIndex xindex, float64_t xfill,
+
 0222:                                   float64_t[:] y,
+
 0223:                                   SparseIndex yindex, float64_t yfill):
+
 0224: 
+
+0225:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+0226:         return block_op_add_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 226, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 226, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 226, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_add_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 226, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+0227:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 227, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 227, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 227, __pyx_L1_error)
+
+0228:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+0229:         return int_op_add_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 229, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 229, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 229, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_add_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 229, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+0230:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 230, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 230, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 230, __pyx_L1_error)
+
 0231:     else:
+
+0232:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 232, __pyx_L1_error)
+  }
+
 0233: 
+
 0234: 
+
+0235: cpdef sparse_fill_add_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_5sparse_fill_add_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_add_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_add_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_5sparse_fill_add_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_5sparse_fill_add_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_add_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_add_float64", 1, 2, 2, 1); __PYX_ERR(2, 235, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_add_float64") < 0)) __PYX_ERR(2, 235, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 235, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 236, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_add_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 235, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_4sparse_fill_add_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_4sparse_fill_add_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_add_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_add_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 235, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0236:                                        float64_t yfill):
+
+0237:     return xfill + yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_xfill + __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 237, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0238: 
+
 0239: 
+
 0240: @cython.wraparound(False)
+
 0241: @cython.boundscheck(False)
+
+0242: cdef inline tuple block_op_add_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_add_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_add_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0243:                                                 BlockIndex xindex,
+
 0244:                                                 int64_t xfill,
+
 0245:                                                 int64_t[:] y_,
+
 0246:                                                 BlockIndex yindex,
+
 0247:                                                 int64_t yfill):
+
 0248:     '''
+
 0249:     Binary operator on BlockIndex objects with fill values
+
 0250:     '''
+
 0251: 
+
 0252:     cdef:
+
 0253:         BlockIndex out_index
+
+0254:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+0255:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 0256:         int32_t xloc, yloc
+
+0257:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 0258: 
+
 0259:         int64_t[:] x, y
+
 0260:         ndarray[int64_t, ndim=1] out
+
 0261: 
+
 0262:     # to suppress Cython warning
+
+0263:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0264:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0265: 
+
+0266:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 266, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+0267:     out = np.empty(out_index.npoints, dtype=np.int64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 267, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 267, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 267, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 267, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 267, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 267, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 267, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 267, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 267, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 267, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 267, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0268: 
+
 0269:     # Wow, what a hack job. Need to do something about this
+
 0270: 
+
 0271:     # walk the two SparseVectors, adding matched locations...
+
+0272:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+0273:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0274:             # use y fill value
+
+0275:             out[out_i] = x[xi] + yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
+
+0276:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0277: 
+
 0278:             # advance x location
+
+0279:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0280:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0281:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0282:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+0283:             continue
+
      goto __pyx_L3_continue;
+
 0284: 
+
+0285:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0286:             # use x fill value
+
+0287:             out[out_i] = xfill + y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+0288:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0289: 
+
 0290:             # advance y location
+
+0291:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0292:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0293:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0294:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+0295:             continue
+
      goto __pyx_L3_continue;
+
 0296: 
+
+0297:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+0298:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 0299: 
+
 0300:         # each index in the out_index had to come from either x, y, or both
+
+0301:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+0302:             out[out_i] = x[xi] + y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) + (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0303:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0304:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0305: 
+
 0306:             # advance both locations
+
+0307:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0308:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0309:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0310:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0311: 
+
+0312:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0313:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0314:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0315:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0316: 
+
+0317:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 0318:             # use y fill value
+
+0319:             out[out_i] = x[xi] + yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
+
+0320:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0321: 
+
 0322:             # advance x location
+
+0323:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0324:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0325:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0326:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0327:         else:
+
 0328:             # use x fill value
+
+0329:             out[out_i] = xfill + y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0330:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0331: 
+
 0332:             # advance y location
+
+0333:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0334:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+0335:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0336:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0337: 
+
+0338:     return out, out_index, xfill + yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill + __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 338, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 338, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0339: 
+
 0340: 
+
 0341: @cython.wraparound(False)
+
 0342: @cython.boundscheck(False)
+
+0343: cdef inline tuple int_op_add_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_add_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_add_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0344:                                               IntIndex xindex,
+
 0345:                                               int64_t xfill,
+
 0346:                                               int64_t[:] y_,
+
 0347:                                               IntIndex yindex,
+
 0348:                                               int64_t yfill):
+
 0349:     cdef:
+
 0350:         IntIndex out_index
+
+0351:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 0352:         int32_t xloc, yloc
+
 0353:         int32_t[:] xindices, yindices, out_indices
+
 0354:         int64_t[:] x, y
+
 0355:         ndarray[int64_t, ndim=1] out
+
 0356: 
+
 0357:     # suppress Cython compiler warnings due to inlining
+
+0358:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0359:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0360: 
+
 0361:     # need to do this first to know size of result array
+
+0362:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 362, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+0363:     out = np.empty(out_index.npoints, dtype=np.int64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 363, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 363, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 363, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 363, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 363, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 363, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 363, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 363, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 363, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 363, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 363, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0364: 
+
+0365:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 365, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0366:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 366, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0367:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 367, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 0368: 
+
 0369:     # walk the two SparseVectors, adding matched locations...
+
+0370:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+0371:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0372:             # use x fill value
+
+0373:             out[out_i] = xfill + y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0374:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0375:             continue
+
      goto __pyx_L3_continue;
+
 0376: 
+
+0377:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0378:             # use y fill value
+
+0379:             out[out_i] = x[xi] + yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
+
+0380:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0381:             continue
+
      goto __pyx_L3_continue;
+
 0382: 
+
+0383:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+0384:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 0385: 
+
 0386:         # each index in the out_index had to come from either x, y, or both
+
+0387:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+0388:             out[out_i] = x[xi] + y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) + (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+0389:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0390:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0391:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 0392:             # use y fill value
+
+0393:             out[out_i] = x[xi] + yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
+
+0394:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0395:         else:
+
 0396:             # use x fill value
+
+0397:             out[out_i] = xfill + y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+0398:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 0399: 
+
+0400:     return out, out_index, xfill + yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill + __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 400, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 400, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0401: 
+
 0402: 
+
+0403: cpdef sparse_add_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_7sparse_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_add_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_add_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_7sparse_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_7sparse_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_add_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_add_int64", 1, 6, 6, 1); __PYX_ERR(2, 403, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_add_int64", 1, 6, 6, 2); __PYX_ERR(2, 403, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_add_int64", 1, 6, 6, 3); __PYX_ERR(2, 403, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_add_int64", 1, 6, 6, 4); __PYX_ERR(2, 403, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_add_int64", 1, 6, 6, 5); __PYX_ERR(2, 403, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_add_int64") < 0)) __PYX_ERR(2, 403, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 403, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 404, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 405, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 406, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_add_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 403, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 404, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 406, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_6sparse_add_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_6sparse_add_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_add_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 403, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 403, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_add_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 403, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0404:                                   SparseIndex xindex, int64_t xfill,
+
 0405:                                   int64_t[:] y,
+
 0406:                                   SparseIndex yindex, int64_t yfill):
+
 0407: 
+
+0408:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+0409:         return block_op_add_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 409, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 409, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 409, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_add_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 409, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+0410:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 410, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 410, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 410, __pyx_L1_error)
+
+0411:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+0412:         return int_op_add_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 412, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 412, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 412, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_add_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 412, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+0413:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 413, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 413, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 413, __pyx_L1_error)
+
 0414:     else:
+
+0415:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 415, __pyx_L1_error)
+  }
+
 0416: 
+
 0417: 
+
+0418: cpdef sparse_fill_add_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_9sparse_fill_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_add_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_add_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_9sparse_fill_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_9sparse_fill_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_add_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_add_int64", 1, 2, 2, 1); __PYX_ERR(2, 418, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_add_int64") < 0)) __PYX_ERR(2, 418, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 418, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 419, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_add_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 418, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8sparse_fill_add_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8sparse_fill_add_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_add_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_add_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 418, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0419:                                        int64_t yfill):
+
+0420:     return xfill + yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill + __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 420, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0421: 
+
 0422: 
+
 0423: @cython.wraparound(False)
+
 0424: @cython.boundscheck(False)
+
+0425: cdef inline tuple block_op_sub_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_sub_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_sub_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0426:                                                 BlockIndex xindex,
+
 0427:                                                 float64_t xfill,
+
 0428:                                                 float64_t[:] y_,
+
 0429:                                                 BlockIndex yindex,
+
 0430:                                                 float64_t yfill):
+
 0431:     '''
+
 0432:     Binary operator on BlockIndex objects with fill values
+
 0433:     '''
+
 0434: 
+
 0435:     cdef:
+
 0436:         BlockIndex out_index
+
+0437:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+0438:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 0439:         int32_t xloc, yloc
+
+0440:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 0441: 
+
 0442:         float64_t[:] x, y
+
 0443:         ndarray[float64_t, ndim=1] out
+
 0444: 
+
 0445:     # to suppress Cython warning
+
+0446:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0447:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0448: 
+
+0449:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 449, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+0450:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 450, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 450, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 450, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 450, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 450, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 450, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 450, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 450, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 450, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 450, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 450, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0451: 
+
 0452:     # Wow, what a hack job. Need to do something about this
+
 0453: 
+
 0454:     # walk the two SparseVectors, adding matched locations...
+
+0455:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+0456:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0457:             # use y fill value
+
+0458:             out[out_i] = x[xi] - yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
+
+0459:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0460: 
+
 0461:             # advance x location
+
+0462:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0463:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0464:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0465:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+0466:             continue
+
      goto __pyx_L3_continue;
+
 0467: 
+
+0468:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0469:             # use x fill value
+
+0470:             out[out_i] = xfill - y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+0471:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0472: 
+
 0473:             # advance y location
+
+0474:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0475:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0476:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0477:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+0478:             continue
+
      goto __pyx_L3_continue;
+
 0479: 
+
+0480:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+0481:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 0482: 
+
 0483:         # each index in the out_index had to come from either x, y, or both
+
+0484:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+0485:             out[out_i] = x[xi] - y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) - (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0486:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0487:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0488: 
+
 0489:             # advance both locations
+
+0490:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0491:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0492:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0493:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0494: 
+
+0495:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0496:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0497:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0498:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0499: 
+
+0500:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 0501:             # use y fill value
+
+0502:             out[out_i] = x[xi] - yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
+
+0503:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0504: 
+
 0505:             # advance x location
+
+0506:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0507:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0508:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0509:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0510:         else:
+
 0511:             # use x fill value
+
+0512:             out[out_i] = xfill - y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0513:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0514: 
+
 0515:             # advance y location
+
+0516:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0517:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+0518:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0519:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0520: 
+
+0521:     return out, out_index, xfill - yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_xfill - __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 521, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 521, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0522: 
+
 0523: 
+
 0524: @cython.wraparound(False)
+
 0525: @cython.boundscheck(False)
+
+0526: cdef inline tuple int_op_sub_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_sub_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_sub_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0527:                                               IntIndex xindex,
+
 0528:                                               float64_t xfill,
+
 0529:                                               float64_t[:] y_,
+
 0530:                                               IntIndex yindex,
+
 0531:                                               float64_t yfill):
+
 0532:     cdef:
+
 0533:         IntIndex out_index
+
+0534:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 0535:         int32_t xloc, yloc
+
 0536:         int32_t[:] xindices, yindices, out_indices
+
 0537:         float64_t[:] x, y
+
 0538:         ndarray[float64_t, ndim=1] out
+
 0539: 
+
 0540:     # suppress Cython compiler warnings due to inlining
+
+0541:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0542:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0543: 
+
 0544:     # need to do this first to know size of result array
+
+0545:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 545, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+0546:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 546, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 546, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 546, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 546, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 546, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 546, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 546, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 546, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 546, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 546, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 546, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0547: 
+
+0548:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 548, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0549:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 549, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0550:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 550, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 0551: 
+
 0552:     # walk the two SparseVectors, adding matched locations...
+
+0553:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+0554:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0555:             # use x fill value
+
+0556:             out[out_i] = xfill - y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0557:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0558:             continue
+
      goto __pyx_L3_continue;
+
 0559: 
+
+0560:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0561:             # use y fill value
+
+0562:             out[out_i] = x[xi] - yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
+
+0563:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0564:             continue
+
      goto __pyx_L3_continue;
+
 0565: 
+
+0566:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+0567:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 0568: 
+
 0569:         # each index in the out_index had to come from either x, y, or both
+
+0570:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+0571:             out[out_i] = x[xi] - y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) - (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+0572:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0573:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0574:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 0575:             # use y fill value
+
+0576:             out[out_i] = x[xi] - yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
+
+0577:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0578:         else:
+
 0579:             # use x fill value
+
+0580:             out[out_i] = xfill - y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+0581:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 0582: 
+
+0583:     return out, out_index, xfill - yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_xfill - __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 583, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 583, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0584: 
+
 0585: 
+
+0586: cpdef sparse_sub_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_11sparse_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_sub_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_sub_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_11sparse_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_11sparse_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_sub_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_sub_float64", 1, 6, 6, 1); __PYX_ERR(2, 586, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_sub_float64", 1, 6, 6, 2); __PYX_ERR(2, 586, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_sub_float64", 1, 6, 6, 3); __PYX_ERR(2, 586, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_sub_float64", 1, 6, 6, 4); __PYX_ERR(2, 586, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_sub_float64", 1, 6, 6, 5); __PYX_ERR(2, 586, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_sub_float64") < 0)) __PYX_ERR(2, 586, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 586, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 587, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 588, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 589, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_sub_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 586, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 587, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 589, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10sparse_sub_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10sparse_sub_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_sub_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 586, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 586, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_sub_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 586, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0587:                                   SparseIndex xindex, float64_t xfill,
+
 0588:                                   float64_t[:] y,
+
 0589:                                   SparseIndex yindex, float64_t yfill):
+
 0590: 
+
+0591:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+0592:         return block_op_sub_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 592, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 592, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 592, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_sub_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 592, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+0593:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 593, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 593, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 593, __pyx_L1_error)
+
+0594:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+0595:         return int_op_sub_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 595, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 595, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 595, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_sub_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 595, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+0596:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 596, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 596, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 596, __pyx_L1_error)
+
 0597:     else:
+
+0598:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 598, __pyx_L1_error)
+  }
+
 0599: 
+
 0600: 
+
+0601: cpdef sparse_fill_sub_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_13sparse_fill_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_sub_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_sub_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_13sparse_fill_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_13sparse_fill_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_sub_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_sub_float64", 1, 2, 2, 1); __PYX_ERR(2, 601, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_sub_float64") < 0)) __PYX_ERR(2, 601, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 601, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 602, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_sub_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 601, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_12sparse_fill_sub_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_12sparse_fill_sub_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_sub_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_sub_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 601, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0602:                                        float64_t yfill):
+
+0603:     return xfill - yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_xfill - __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 603, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0604: 
+
 0605: 
+
 0606: @cython.wraparound(False)
+
 0607: @cython.boundscheck(False)
+
+0608: cdef inline tuple block_op_sub_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_sub_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_sub_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0609:                                                 BlockIndex xindex,
+
 0610:                                                 int64_t xfill,
+
 0611:                                                 int64_t[:] y_,
+
 0612:                                                 BlockIndex yindex,
+
 0613:                                                 int64_t yfill):
+
 0614:     '''
+
 0615:     Binary operator on BlockIndex objects with fill values
+
 0616:     '''
+
 0617: 
+
 0618:     cdef:
+
 0619:         BlockIndex out_index
+
+0620:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+0621:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 0622:         int32_t xloc, yloc
+
+0623:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 0624: 
+
 0625:         int64_t[:] x, y
+
 0626:         ndarray[int64_t, ndim=1] out
+
 0627: 
+
 0628:     # to suppress Cython warning
+
+0629:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0630:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0631: 
+
+0632:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 632, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+0633:     out = np.empty(out_index.npoints, dtype=np.int64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 633, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 633, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 633, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 633, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 633, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 633, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 633, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 633, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 633, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 633, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 633, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0634: 
+
 0635:     # Wow, what a hack job. Need to do something about this
+
 0636: 
+
 0637:     # walk the two SparseVectors, adding matched locations...
+
+0638:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+0639:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0640:             # use y fill value
+
+0641:             out[out_i] = x[xi] - yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
+
+0642:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0643: 
+
 0644:             # advance x location
+
+0645:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0646:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0647:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0648:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+0649:             continue
+
      goto __pyx_L3_continue;
+
 0650: 
+
+0651:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0652:             # use x fill value
+
+0653:             out[out_i] = xfill - y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+0654:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0655: 
+
 0656:             # advance y location
+
+0657:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0658:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0659:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0660:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+0661:             continue
+
      goto __pyx_L3_continue;
+
 0662: 
+
+0663:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+0664:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 0665: 
+
 0666:         # each index in the out_index had to come from either x, y, or both
+
+0667:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+0668:             out[out_i] = x[xi] - y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) - (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0669:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0670:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0671: 
+
 0672:             # advance both locations
+
+0673:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0674:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0675:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0676:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0677: 
+
+0678:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0679:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0680:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0681:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0682: 
+
+0683:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 0684:             # use y fill value
+
+0685:             out[out_i] = x[xi] - yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
+
+0686:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0687: 
+
 0688:             # advance x location
+
+0689:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0690:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0691:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0692:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0693:         else:
+
 0694:             # use x fill value
+
+0695:             out[out_i] = xfill - y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0696:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0697: 
+
 0698:             # advance y location
+
+0699:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0700:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+0701:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0702:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0703: 
+
+0704:     return out, out_index, xfill - yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill - __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 704, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 704, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0705: 
+
 0706: 
+
 0707: @cython.wraparound(False)
+
 0708: @cython.boundscheck(False)
+
+0709: cdef inline tuple int_op_sub_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_sub_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_sub_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0710:                                               IntIndex xindex,
+
 0711:                                               int64_t xfill,
+
 0712:                                               int64_t[:] y_,
+
 0713:                                               IntIndex yindex,
+
 0714:                                               int64_t yfill):
+
 0715:     cdef:
+
 0716:         IntIndex out_index
+
+0717:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 0718:         int32_t xloc, yloc
+
 0719:         int32_t[:] xindices, yindices, out_indices
+
 0720:         int64_t[:] x, y
+
 0721:         ndarray[int64_t, ndim=1] out
+
 0722: 
+
 0723:     # suppress Cython compiler warnings due to inlining
+
+0724:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0725:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0726: 
+
 0727:     # need to do this first to know size of result array
+
+0728:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 728, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+0729:     out = np.empty(out_index.npoints, dtype=np.int64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 729, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 729, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 729, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 729, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 729, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 729, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 729, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 729, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 729, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 729, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 729, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0730: 
+
+0731:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 731, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0732:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 732, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0733:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 733, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 0734: 
+
 0735:     # walk the two SparseVectors, adding matched locations...
+
+0736:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+0737:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0738:             # use x fill value
+
+0739:             out[out_i] = xfill - y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0740:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0741:             continue
+
      goto __pyx_L3_continue;
+
 0742: 
+
+0743:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0744:             # use y fill value
+
+0745:             out[out_i] = x[xi] - yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
+
+0746:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0747:             continue
+
      goto __pyx_L3_continue;
+
 0748: 
+
+0749:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+0750:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 0751: 
+
 0752:         # each index in the out_index had to come from either x, y, or both
+
+0753:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+0754:             out[out_i] = x[xi] - y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) - (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+0755:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0756:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0757:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 0758:             # use y fill value
+
+0759:             out[out_i] = x[xi] - yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
+
+0760:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0761:         else:
+
 0762:             # use x fill value
+
+0763:             out[out_i] = xfill - y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+0764:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 0765: 
+
+0766:     return out, out_index, xfill - yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill - __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 766, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 766, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0767: 
+
 0768: 
+
+0769: cpdef sparse_sub_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_15sparse_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_sub_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_sub_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_15sparse_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_15sparse_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_sub_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_sub_int64", 1, 6, 6, 1); __PYX_ERR(2, 769, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_sub_int64", 1, 6, 6, 2); __PYX_ERR(2, 769, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_sub_int64", 1, 6, 6, 3); __PYX_ERR(2, 769, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_sub_int64", 1, 6, 6, 4); __PYX_ERR(2, 769, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_sub_int64", 1, 6, 6, 5); __PYX_ERR(2, 769, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_sub_int64") < 0)) __PYX_ERR(2, 769, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 769, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 770, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 771, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 772, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_sub_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 769, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 770, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 772, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_14sparse_sub_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_14sparse_sub_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_sub_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 769, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 769, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_sub_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 769, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0770:                                   SparseIndex xindex, int64_t xfill,
+
 0771:                                   int64_t[:] y,
+
 0772:                                   SparseIndex yindex, int64_t yfill):
+
 0773: 
+
+0774:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+0775:         return block_op_sub_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 775, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 775, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 775, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_sub_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 775, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+0776:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 776, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 776, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 776, __pyx_L1_error)
+
+0777:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+0778:         return int_op_sub_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 778, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 778, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 778, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_sub_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 778, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+0779:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 779, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 779, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 779, __pyx_L1_error)
+
 0780:     else:
+
+0781:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 781, __pyx_L1_error)
+  }
+
 0782: 
+
 0783: 
+
+0784: cpdef sparse_fill_sub_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_17sparse_fill_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_sub_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_sub_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_17sparse_fill_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_17sparse_fill_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_sub_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_sub_int64", 1, 2, 2, 1); __PYX_ERR(2, 784, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_sub_int64") < 0)) __PYX_ERR(2, 784, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 784, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 785, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_sub_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 784, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_16sparse_fill_sub_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_16sparse_fill_sub_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_sub_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_sub_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 784, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0785:                                        int64_t yfill):
+
+0786:     return xfill - yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill - __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 786, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0787: 
+
 0788: 
+
 0789: @cython.wraparound(False)
+
 0790: @cython.boundscheck(False)
+
+0791: cdef inline tuple block_op_mul_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_mul_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_mul_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0792:                                                 BlockIndex xindex,
+
 0793:                                                 float64_t xfill,
+
 0794:                                                 float64_t[:] y_,
+
 0795:                                                 BlockIndex yindex,
+
 0796:                                                 float64_t yfill):
+
 0797:     '''
+
 0798:     Binary operator on BlockIndex objects with fill values
+
 0799:     '''
+
 0800: 
+
 0801:     cdef:
+
 0802:         BlockIndex out_index
+
+0803:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+0804:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 0805:         int32_t xloc, yloc
+
+0806:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 0807: 
+
 0808:         float64_t[:] x, y
+
 0809:         ndarray[float64_t, ndim=1] out
+
 0810: 
+
 0811:     # to suppress Cython warning
+
+0812:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0813:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0814: 
+
+0815:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 815, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+0816:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 816, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 816, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 816, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 816, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 816, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 816, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 816, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 816, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 816, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 816, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 816, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0817: 
+
 0818:     # Wow, what a hack job. Need to do something about this
+
 0819: 
+
 0820:     # walk the two SparseVectors, adding matched locations...
+
+0821:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+0822:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0823:             # use y fill value
+
+0824:             out[out_i] = x[xi] * yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
+
+0825:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0826: 
+
 0827:             # advance x location
+
+0828:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0829:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0830:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0831:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+0832:             continue
+
      goto __pyx_L3_continue;
+
 0833: 
+
+0834:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0835:             # use x fill value
+
+0836:             out[out_i] = xfill * y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+0837:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0838: 
+
 0839:             # advance y location
+
+0840:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0841:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0842:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0843:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+0844:             continue
+
      goto __pyx_L3_continue;
+
 0845: 
+
+0846:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+0847:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 0848: 
+
 0849:         # each index in the out_index had to come from either x, y, or both
+
+0850:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+0851:             out[out_i] = x[xi] * y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) * (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0852:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0853:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0854: 
+
 0855:             # advance both locations
+
+0856:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0857:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0858:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0859:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0860: 
+
+0861:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0862:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0863:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0864:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0865: 
+
+0866:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 0867:             # use y fill value
+
+0868:             out[out_i] = x[xi] * yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
+
+0869:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0870: 
+
 0871:             # advance x location
+
+0872:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0873:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0874:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0875:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0876:         else:
+
 0877:             # use x fill value
+
+0878:             out[out_i] = xfill * y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0879:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0880: 
+
 0881:             # advance y location
+
+0882:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0883:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+0884:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0885:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0886: 
+
+0887:     return out, out_index, xfill * yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_xfill * __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 887, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 887, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0888: 
+
 0889: 
+
 0890: @cython.wraparound(False)
+
 0891: @cython.boundscheck(False)
+
+0892: cdef inline tuple int_op_mul_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_mul_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_mul_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0893:                                               IntIndex xindex,
+
 0894:                                               float64_t xfill,
+
 0895:                                               float64_t[:] y_,
+
 0896:                                               IntIndex yindex,
+
 0897:                                               float64_t yfill):
+
 0898:     cdef:
+
 0899:         IntIndex out_index
+
+0900:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 0901:         int32_t xloc, yloc
+
 0902:         int32_t[:] xindices, yindices, out_indices
+
 0903:         float64_t[:] x, y
+
 0904:         ndarray[float64_t, ndim=1] out
+
 0905: 
+
 0906:     # suppress Cython compiler warnings due to inlining
+
+0907:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0908:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0909: 
+
 0910:     # need to do this first to know size of result array
+
+0911:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 911, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+0912:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 912, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 912, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 912, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 912, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 912, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 912, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 912, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 912, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 912, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 912, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 912, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0913: 
+
+0914:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 914, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0915:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 915, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0916:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 916, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 0917: 
+
 0918:     # walk the two SparseVectors, adding matched locations...
+
+0919:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+0920:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0921:             # use x fill value
+
+0922:             out[out_i] = xfill * y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+0923:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0924:             continue
+
      goto __pyx_L3_continue;
+
 0925: 
+
+0926:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0927:             # use y fill value
+
+0928:             out[out_i] = x[xi] * yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
+
+0929:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0930:             continue
+
      goto __pyx_L3_continue;
+
 0931: 
+
+0932:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+0933:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 0934: 
+
 0935:         # each index in the out_index had to come from either x, y, or both
+
+0936:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+0937:             out[out_i] = x[xi] * y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) * (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+0938:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0939:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0940:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 0941:             # use y fill value
+
+0942:             out[out_i] = x[xi] * yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
+
+0943:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0944:         else:
+
 0945:             # use x fill value
+
+0946:             out[out_i] = xfill * y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+0947:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 0948: 
+
+0949:     return out, out_index, xfill * yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_xfill * __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 949, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 949, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0950: 
+
 0951: 
+
+0952: cpdef sparse_mul_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_19sparse_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_mul_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_mul_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_19sparse_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_19sparse_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_mul_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mul_float64", 1, 6, 6, 1); __PYX_ERR(2, 952, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mul_float64", 1, 6, 6, 2); __PYX_ERR(2, 952, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mul_float64", 1, 6, 6, 3); __PYX_ERR(2, 952, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mul_float64", 1, 6, 6, 4); __PYX_ERR(2, 952, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mul_float64", 1, 6, 6, 5); __PYX_ERR(2, 952, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_mul_float64") < 0)) __PYX_ERR(2, 952, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 952, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 953, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 954, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 955, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_mul_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 952, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 953, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 955, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_18sparse_mul_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_18sparse_mul_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_mul_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 952, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 952, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_mul_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 952, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0953:                                   SparseIndex xindex, float64_t xfill,
+
 0954:                                   float64_t[:] y,
+
 0955:                                   SparseIndex yindex, float64_t yfill):
+
 0956: 
+
+0957:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+0958:         return block_op_mul_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 958, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 958, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 958, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_mul_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 958, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+0959:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 959, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 959, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 959, __pyx_L1_error)
+
+0960:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+0961:         return int_op_mul_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 961, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 961, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 961, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_mul_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 961, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+0962:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 962, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 962, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 962, __pyx_L1_error)
+
 0963:     else:
+
+0964:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 964, __pyx_L1_error)
+  }
+
 0965: 
+
 0966: 
+
+0967: cpdef sparse_fill_mul_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_21sparse_fill_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_mul_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_mul_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_21sparse_fill_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_21sparse_fill_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_mul_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_mul_float64", 1, 2, 2, 1); __PYX_ERR(2, 967, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_mul_float64") < 0)) __PYX_ERR(2, 967, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 967, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 968, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_mul_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 967, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_20sparse_fill_mul_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_20sparse_fill_mul_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_mul_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_mul_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 967, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0968:                                        float64_t yfill):
+
+0969:     return xfill * yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_xfill * __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 969, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 0970: 
+
 0971: 
+
 0972: @cython.wraparound(False)
+
 0973: @cython.boundscheck(False)
+
+0974: cdef inline tuple block_op_mul_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_mul_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_mul_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 0975:                                                 BlockIndex xindex,
+
 0976:                                                 int64_t xfill,
+
 0977:                                                 int64_t[:] y_,
+
 0978:                                                 BlockIndex yindex,
+
 0979:                                                 int64_t yfill):
+
 0980:     '''
+
 0981:     Binary operator on BlockIndex objects with fill values
+
 0982:     '''
+
 0983: 
+
 0984:     cdef:
+
 0985:         BlockIndex out_index
+
+0986:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+0987:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 0988:         int32_t xloc, yloc
+
+0989:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 0990: 
+
 0991:         int64_t[:] x, y
+
 0992:         ndarray[int64_t, ndim=1] out
+
 0993: 
+
 0994:     # to suppress Cython warning
+
+0995:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0996:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0997: 
+
+0998:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 998, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+0999:     out = np.empty(out_index.npoints, dtype=np.int64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 999, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 999, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 999, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 999, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 999, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 999, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 999, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 999, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 999, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 999, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 999, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1000: 
+
 1001:     # Wow, what a hack job. Need to do something about this
+
 1002: 
+
 1003:     # walk the two SparseVectors, adding matched locations...
+
+1004:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+1005:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1006:             # use y fill value
+
+1007:             out[out_i] = x[xi] * yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
+
+1008:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1009: 
+
 1010:             # advance x location
+
+1011:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1012:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1013:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1014:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+1015:             continue
+
      goto __pyx_L3_continue;
+
 1016: 
+
+1017:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1018:             # use x fill value
+
+1019:             out[out_i] = xfill * y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+1020:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1021: 
+
 1022:             # advance y location
+
+1023:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1024:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1025:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1026:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+1027:             continue
+
      goto __pyx_L3_continue;
+
 1028: 
+
+1029:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+1030:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 1031: 
+
 1032:         # each index in the out_index had to come from either x, y, or both
+
+1033:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+1034:             out[out_i] = x[xi] * y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) * (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1035:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1036:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1037: 
+
 1038:             # advance both locations
+
+1039:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1040:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1041:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1042:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1043: 
+
+1044:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1045:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1046:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1047:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1048: 
+
+1049:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 1050:             # use y fill value
+
+1051:             out[out_i] = x[xi] * yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
+
+1052:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1053: 
+
 1054:             # advance x location
+
+1055:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1056:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1057:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1058:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1059:         else:
+
 1060:             # use x fill value
+
+1061:             out[out_i] = xfill * y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1062:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1063: 
+
 1064:             # advance y location
+
+1065:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1066:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+1067:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1068:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1069: 
+
+1070:     return out, out_index, xfill * yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill * __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1070, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1070, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1071: 
+
 1072: 
+
 1073: @cython.wraparound(False)
+
 1074: @cython.boundscheck(False)
+
+1075: cdef inline tuple int_op_mul_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_mul_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_mul_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1076:                                               IntIndex xindex,
+
 1077:                                               int64_t xfill,
+
 1078:                                               int64_t[:] y_,
+
 1079:                                               IntIndex yindex,
+
 1080:                                               int64_t yfill):
+
 1081:     cdef:
+
 1082:         IntIndex out_index
+
+1083:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 1084:         int32_t xloc, yloc
+
 1085:         int32_t[:] xindices, yindices, out_indices
+
 1086:         int64_t[:] x, y
+
 1087:         ndarray[int64_t, ndim=1] out
+
 1088: 
+
 1089:     # suppress Cython compiler warnings due to inlining
+
+1090:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1091:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1092: 
+
 1093:     # need to do this first to know size of result array
+
+1094:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1094, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+1095:     out = np.empty(out_index.npoints, dtype=np.int64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1095, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1095, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1095, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1095, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1095, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1095, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1095, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1095, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1095, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 1095, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1095, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1096: 
+
+1097:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1097, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1098:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1098, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1099:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1099, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 1100: 
+
 1101:     # walk the two SparseVectors, adding matched locations...
+
+1102:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+1103:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1104:             # use x fill value
+
+1105:             out[out_i] = xfill * y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1106:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1107:             continue
+
      goto __pyx_L3_continue;
+
 1108: 
+
+1109:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1110:             # use y fill value
+
+1111:             out[out_i] = x[xi] * yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
+
+1112:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1113:             continue
+
      goto __pyx_L3_continue;
+
 1114: 
+
+1115:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+1116:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 1117: 
+
 1118:         # each index in the out_index had to come from either x, y, or both
+
+1119:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+1120:             out[out_i] = x[xi] * y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) * (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+1121:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1122:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1123:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 1124:             # use y fill value
+
+1125:             out[out_i] = x[xi] * yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
+
+1126:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1127:         else:
+
 1128:             # use x fill value
+
+1129:             out[out_i] = xfill * y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+1130:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 1131: 
+
+1132:     return out, out_index, xfill * yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill * __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1132, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1132, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1133: 
+
 1134: 
+
+1135: cpdef sparse_mul_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_23sparse_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_mul_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_mul_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_23sparse_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_23sparse_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_mul_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mul_int64", 1, 6, 6, 1); __PYX_ERR(2, 1135, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mul_int64", 1, 6, 6, 2); __PYX_ERR(2, 1135, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mul_int64", 1, 6, 6, 3); __PYX_ERR(2, 1135, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mul_int64", 1, 6, 6, 4); __PYX_ERR(2, 1135, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mul_int64", 1, 6, 6, 5); __PYX_ERR(2, 1135, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_mul_int64") < 0)) __PYX_ERR(2, 1135, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 1135, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1136, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 1137, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1138, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_mul_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1135, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 1136, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1138, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_22sparse_mul_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_22sparse_mul_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_mul_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 1135, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1135, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_mul_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1135, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1136:                                   SparseIndex xindex, int64_t xfill,
+
 1137:                                   int64_t[:] y,
+
 1138:                                   SparseIndex yindex, int64_t yfill):
+
 1139: 
+
+1140:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+1141:         return block_op_mul_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1141, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1141, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1141, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_mul_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1141, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+1142:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1142, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1142, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1142, __pyx_L1_error)
+
+1143:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+1144:         return int_op_mul_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1144, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1144, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1144, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_mul_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1144, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+1145:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1145, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1145, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1145, __pyx_L1_error)
+
 1146:     else:
+
+1147:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 1147, __pyx_L1_error)
+  }
+
 1148: 
+
 1149: 
+
+1150: cpdef sparse_fill_mul_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_25sparse_fill_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_mul_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_mul_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_25sparse_fill_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_25sparse_fill_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_mul_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_mul_int64", 1, 2, 2, 1); __PYX_ERR(2, 1150, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_mul_int64") < 0)) __PYX_ERR(2, 1150, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1150, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1151, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_mul_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1150, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_24sparse_fill_mul_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_24sparse_fill_mul_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_mul_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_mul_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1150, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1151:                                        int64_t yfill):
+
+1152:     return xfill * yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill * __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1152, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1153: 
+
 1154: 
+
 1155: @cython.wraparound(False)
+
 1156: @cython.boundscheck(False)
+
+1157: cdef inline tuple block_op_div_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_div_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_div_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1158:                                                 BlockIndex xindex,
+
 1159:                                                 float64_t xfill,
+
 1160:                                                 float64_t[:] y_,
+
 1161:                                                 BlockIndex yindex,
+
 1162:                                                 float64_t yfill):
+
 1163:     '''
+
 1164:     Binary operator on BlockIndex objects with fill values
+
 1165:     '''
+
 1166: 
+
 1167:     cdef:
+
 1168:         BlockIndex out_index
+
+1169:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+1170:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 1171:         int32_t xloc, yloc
+
+1172:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 1173: 
+
 1174:         float64_t[:] x, y
+
 1175:         ndarray[float64_t, ndim=1] out
+
 1176: 
+
 1177:     # to suppress Cython warning
+
+1178:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1179:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1180: 
+
+1181:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1181, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+1182:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1182, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1182, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 1182, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1182, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1183: 
+
 1184:     # Wow, what a hack job. Need to do something about this
+
 1185: 
+
 1186:     # walk the two SparseVectors, adding matched locations...
+
+1187:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+1188:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1189:             # use y fill value
+
+1190:             out[out_i] = __div__(x[xi], yfill)
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1191:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1192: 
+
 1193:             # advance x location
+
+1194:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1195:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1196:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1197:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+1198:             continue
+
      goto __pyx_L3_continue;
+
 1199: 
+
+1200:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1201:             # use x fill value
+
+1202:             out[out_i] = __div__(xfill, y[yi])
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+1203:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1204: 
+
 1205:             # advance y location
+
+1206:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1207:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1208:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1209:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+1210:             continue
+
      goto __pyx_L3_continue;
+
 1211: 
+
+1212:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+1213:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 1214: 
+
 1215:         # each index in the out_index had to come from either x, y, or both
+
+1216:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+1217:             out[out_i] = __div__(x[xi], y[yi])
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1218:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1219:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1220: 
+
 1221:             # advance both locations
+
+1222:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1223:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1224:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1225:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1226: 
+
+1227:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1228:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1229:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1230:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1231: 
+
+1232:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 1233:             # use y fill value
+
+1234:             out[out_i] = __div__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1235:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1236: 
+
 1237:             # advance x location
+
+1238:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1239:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1240:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1241:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1242:         else:
+
 1243:             # use x fill value
+
+1244:             out[out_i] = __div__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1245:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1246: 
+
 1247:             # advance y location
+
+1248:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1249:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+1250:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1251:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1252: 
+
+1253:     return out, out_index, __div__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1253, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1253, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1254: 
+
 1255: 
+
 1256: @cython.wraparound(False)
+
 1257: @cython.boundscheck(False)
+
+1258: cdef inline tuple int_op_div_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_div_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_div_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1259:                                               IntIndex xindex,
+
 1260:                                               float64_t xfill,
+
 1261:                                               float64_t[:] y_,
+
 1262:                                               IntIndex yindex,
+
 1263:                                               float64_t yfill):
+
 1264:     cdef:
+
 1265:         IntIndex out_index
+
+1266:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 1267:         int32_t xloc, yloc
+
 1268:         int32_t[:] xindices, yindices, out_indices
+
 1269:         float64_t[:] x, y
+
 1270:         ndarray[float64_t, ndim=1] out
+
 1271: 
+
 1272:     # suppress Cython compiler warnings due to inlining
+
+1273:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1274:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1275: 
+
 1276:     # need to do this first to know size of result array
+
+1277:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1277, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+1278:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1278, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1278, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1278, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1278, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1278, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1278, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1278, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1278, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1278, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 1278, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1278, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1279: 
+
+1280:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1280, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1281:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1281, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1282:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1282, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 1283: 
+
 1284:     # walk the two SparseVectors, adding matched locations...
+
+1285:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+1286:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1287:             # use x fill value
+
+1288:             out[out_i] = __div__(xfill, y[yi])
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1289:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1290:             continue
+
      goto __pyx_L3_continue;
+
 1291: 
+
+1292:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1293:             # use y fill value
+
+1294:             out[out_i] = __div__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1295:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1296:             continue
+
      goto __pyx_L3_continue;
+
 1297: 
+
+1298:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+1299:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 1300: 
+
 1301:         # each index in the out_index had to come from either x, y, or both
+
+1302:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+1303:             out[out_i] = __div__(x[xi], y[yi])
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+1304:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1305:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1306:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 1307:             # use y fill value
+
+1308:             out[out_i] = __div__(x[xi], yfill)
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1309:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1310:         else:
+
 1311:             # use x fill value
+
+1312:             out[out_i] = __div__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+1313:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 1314: 
+
+1315:     return out, out_index, __div__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1315, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1315, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1316: 
+
 1317: 
+
+1318: cpdef sparse_div_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_27sparse_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_div_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_div_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_27sparse_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_27sparse_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_div_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_div_float64", 1, 6, 6, 1); __PYX_ERR(2, 1318, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_div_float64", 1, 6, 6, 2); __PYX_ERR(2, 1318, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_div_float64", 1, 6, 6, 3); __PYX_ERR(2, 1318, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_div_float64", 1, 6, 6, 4); __PYX_ERR(2, 1318, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_div_float64", 1, 6, 6, 5); __PYX_ERR(2, 1318, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_div_float64") < 0)) __PYX_ERR(2, 1318, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 1318, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1319, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 1320, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1321, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_div_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1318, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 1319, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1321, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_26sparse_div_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_26sparse_div_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_div_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 1318, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1318, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_div_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1318, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1319:                                   SparseIndex xindex, float64_t xfill,
+
 1320:                                   float64_t[:] y,
+
 1321:                                   SparseIndex yindex, float64_t yfill):
+
 1322: 
+
+1323:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+1324:         return block_op_div_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1324, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1324, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1324, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_div_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1324, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+1325:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1325, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1325, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1325, __pyx_L1_error)
+
+1326:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+1327:         return int_op_div_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1327, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1327, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1327, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_div_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1327, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+1328:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1328, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1328, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1328, __pyx_L1_error)
+
 1329:     else:
+
+1330:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 1330, __pyx_L1_error)
+  }
+
 1331: 
+
 1332: 
+
+1333: cpdef sparse_fill_div_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_29sparse_fill_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_div_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_div_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_29sparse_fill_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_29sparse_fill_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_div_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_div_float64", 1, 2, 2, 1); __PYX_ERR(2, 1333, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_div_float64") < 0)) __PYX_ERR(2, 1333, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1333, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1334, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_div_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1333, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_28sparse_fill_div_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_28sparse_fill_div_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_div_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_div_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1333, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1334:                                        float64_t yfill):
+
+1335:     return __div__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1335, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1336: 
+
 1337: 
+
 1338: @cython.wraparound(False)
+
 1339: @cython.boundscheck(False)
+
+1340: cdef inline tuple block_op_div_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_div_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_div_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1341:                                                 BlockIndex xindex,
+
 1342:                                                 int64_t xfill,
+
 1343:                                                 int64_t[:] y_,
+
 1344:                                                 BlockIndex yindex,
+
 1345:                                                 int64_t yfill):
+
 1346:     '''
+
 1347:     Binary operator on BlockIndex objects with fill values
+
 1348:     '''
+
 1349: 
+
 1350:     cdef:
+
 1351:         BlockIndex out_index
+
+1352:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+1353:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 1354:         int32_t xloc, yloc
+
+1355:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 1356: 
+
 1357:         int64_t[:] x, y
+
 1358:         ndarray[float64_t, ndim=1] out
+
 1359: 
+
 1360:     # to suppress Cython warning
+
+1361:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1362:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1363: 
+
+1364:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1364, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+1365:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1365, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1365, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1365, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1365, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1365, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1365, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1365, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1365, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1365, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 1365, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1365, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1366: 
+
 1367:     # Wow, what a hack job. Need to do something about this
+
 1368: 
+
 1369:     # walk the two SparseVectors, adding matched locations...
+
+1370:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+1371:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1372:             # use y fill value
+
+1373:             out[out_i] = __div__(x[xi], yfill)
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1374:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1375: 
+
 1376:             # advance x location
+
+1377:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1378:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1379:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1380:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+1381:             continue
+
      goto __pyx_L3_continue;
+
 1382: 
+
+1383:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1384:             # use x fill value
+
+1385:             out[out_i] = __div__(xfill, y[yi])
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+1386:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1387: 
+
 1388:             # advance y location
+
+1389:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1390:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1391:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1392:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+1393:             continue
+
      goto __pyx_L3_continue;
+
 1394: 
+
+1395:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+1396:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 1397: 
+
 1398:         # each index in the out_index had to come from either x, y, or both
+
+1399:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+1400:             out[out_i] = __div__(x[xi], y[yi])
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1401:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1402:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1403: 
+
 1404:             # advance both locations
+
+1405:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1406:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1407:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1408:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1409: 
+
+1410:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1411:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1412:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1413:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1414: 
+
+1415:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 1416:             # use y fill value
+
+1417:             out[out_i] = __div__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1418:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1419: 
+
 1420:             # advance x location
+
+1421:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1422:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1423:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1424:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1425:         else:
+
 1426:             # use x fill value
+
+1427:             out[out_i] = __div__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1428:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1429: 
+
 1430:             # advance y location
+
+1431:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1432:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+1433:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1434:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1435: 
+
+1436:     return out, out_index, __div__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1436, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1436, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1437: 
+
 1438: 
+
 1439: @cython.wraparound(False)
+
 1440: @cython.boundscheck(False)
+
+1441: cdef inline tuple int_op_div_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_div_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_div_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1442:                                               IntIndex xindex,
+
 1443:                                               int64_t xfill,
+
 1444:                                               int64_t[:] y_,
+
 1445:                                               IntIndex yindex,
+
 1446:                                               int64_t yfill):
+
 1447:     cdef:
+
 1448:         IntIndex out_index
+
+1449:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 1450:         int32_t xloc, yloc
+
 1451:         int32_t[:] xindices, yindices, out_indices
+
 1452:         int64_t[:] x, y
+
 1453:         ndarray[float64_t, ndim=1] out
+
 1454: 
+
 1455:     # suppress Cython compiler warnings due to inlining
+
+1456:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1457:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1458: 
+
 1459:     # need to do this first to know size of result array
+
+1460:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1460, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+1461:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1461, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1461, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 1461, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1461, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1462: 
+
+1463:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1463, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1464:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1464, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1465:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1465, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 1466: 
+
 1467:     # walk the two SparseVectors, adding matched locations...
+
+1468:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+1469:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1470:             # use x fill value
+
+1471:             out[out_i] = __div__(xfill, y[yi])
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1472:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1473:             continue
+
      goto __pyx_L3_continue;
+
 1474: 
+
+1475:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1476:             # use y fill value
+
+1477:             out[out_i] = __div__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1478:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1479:             continue
+
      goto __pyx_L3_continue;
+
 1480: 
+
+1481:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+1482:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 1483: 
+
 1484:         # each index in the out_index had to come from either x, y, or both
+
+1485:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+1486:             out[out_i] = __div__(x[xi], y[yi])
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+1487:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1488:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1489:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 1490:             # use y fill value
+
+1491:             out[out_i] = __div__(x[xi], yfill)
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1492:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1493:         else:
+
 1494:             # use x fill value
+
+1495:             out[out_i] = __div__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+1496:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 1497: 
+
+1498:     return out, out_index, __div__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1498, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1498, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1499: 
+
 1500: 
+
+1501: cpdef sparse_div_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_31sparse_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_div_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_div_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_31sparse_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_31sparse_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_div_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_div_int64", 1, 6, 6, 1); __PYX_ERR(2, 1501, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_div_int64", 1, 6, 6, 2); __PYX_ERR(2, 1501, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_div_int64", 1, 6, 6, 3); __PYX_ERR(2, 1501, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_div_int64", 1, 6, 6, 4); __PYX_ERR(2, 1501, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_div_int64", 1, 6, 6, 5); __PYX_ERR(2, 1501, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_div_int64") < 0)) __PYX_ERR(2, 1501, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 1501, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1502, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 1503, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1504, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_div_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1501, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 1502, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1504, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_30sparse_div_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_30sparse_div_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_div_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 1501, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1501, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_div_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1501, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1502:                                   SparseIndex xindex, int64_t xfill,
+
 1503:                                   int64_t[:] y,
+
 1504:                                   SparseIndex yindex, int64_t yfill):
+
 1505: 
+
+1506:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+1507:         return block_op_div_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1507, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1507, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1507, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_div_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1507, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+1508:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1508, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1508, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1508, __pyx_L1_error)
+
+1509:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+1510:         return int_op_div_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1510, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1510, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1510, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_div_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1510, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+1511:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1511, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1511, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1511, __pyx_L1_error)
+
 1512:     else:
+
+1513:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 1513, __pyx_L1_error)
+  }
+
 1514: 
+
 1515: 
+
+1516: cpdef sparse_fill_div_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_33sparse_fill_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_div_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_div_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_33sparse_fill_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_33sparse_fill_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_div_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_div_int64", 1, 2, 2, 1); __PYX_ERR(2, 1516, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_div_int64") < 0)) __PYX_ERR(2, 1516, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1516, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1517, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_div_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1516, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_32sparse_fill_div_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_32sparse_fill_div_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_div_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_div_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1516, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1517:                                        int64_t yfill):
+
+1518:     return __div__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1518, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1519: 
+
 1520: 
+
 1521: @cython.wraparound(False)
+
 1522: @cython.boundscheck(False)
+
+1523: cdef inline tuple block_op_mod_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_mod_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_mod_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1524:                                                 BlockIndex xindex,
+
 1525:                                                 float64_t xfill,
+
 1526:                                                 float64_t[:] y_,
+
 1527:                                                 BlockIndex yindex,
+
 1528:                                                 float64_t yfill):
+
 1529:     '''
+
 1530:     Binary operator on BlockIndex objects with fill values
+
 1531:     '''
+
 1532: 
+
 1533:     cdef:
+
 1534:         BlockIndex out_index
+
+1535:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+1536:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 1537:         int32_t xloc, yloc
+
+1538:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 1539: 
+
 1540:         float64_t[:] x, y
+
 1541:         ndarray[float64_t, ndim=1] out
+
 1542: 
+
 1543:     # to suppress Cython warning
+
+1544:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1545:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1546: 
+
+1547:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1547, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+1548:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1548, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1548, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1548, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1548, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1548, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1548, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1548, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1548, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1548, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 1548, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1548, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1549: 
+
 1550:     # Wow, what a hack job. Need to do something about this
+
 1551: 
+
 1552:     # walk the two SparseVectors, adding matched locations...
+
+1553:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+1554:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1555:             # use y fill value
+
+1556:             out[out_i] = __mod__(x[xi], yfill)
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1557:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1558: 
+
 1559:             # advance x location
+
+1560:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1561:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1562:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1563:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+1564:             continue
+
      goto __pyx_L3_continue;
+
 1565: 
+
+1566:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1567:             # use x fill value
+
+1568:             out[out_i] = __mod__(xfill, y[yi])
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+1569:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1570: 
+
 1571:             # advance y location
+
+1572:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1573:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1574:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1575:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+1576:             continue
+
      goto __pyx_L3_continue;
+
 1577: 
+
+1578:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+1579:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 1580: 
+
 1581:         # each index in the out_index had to come from either x, y, or both
+
+1582:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+1583:             out[out_i] = __mod__(x[xi], y[yi])
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1584:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1585:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1586: 
+
 1587:             # advance both locations
+
+1588:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1589:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1590:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1591:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1592: 
+
+1593:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1594:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1595:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1596:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1597: 
+
+1598:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 1599:             # use y fill value
+
+1600:             out[out_i] = __mod__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1601:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1602: 
+
 1603:             # advance x location
+
+1604:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1605:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1606:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1607:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1608:         else:
+
 1609:             # use x fill value
+
+1610:             out[out_i] = __mod__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1611:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1612: 
+
 1613:             # advance y location
+
+1614:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1615:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+1616:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1617:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1618: 
+
+1619:     return out, out_index, __mod__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1619, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1619, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1620: 
+
 1621: 
+
 1622: @cython.wraparound(False)
+
 1623: @cython.boundscheck(False)
+
+1624: cdef inline tuple int_op_mod_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_mod_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_mod_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1625:                                               IntIndex xindex,
+
 1626:                                               float64_t xfill,
+
 1627:                                               float64_t[:] y_,
+
 1628:                                               IntIndex yindex,
+
 1629:                                               float64_t yfill):
+
 1630:     cdef:
+
 1631:         IntIndex out_index
+
+1632:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 1633:         int32_t xloc, yloc
+
 1634:         int32_t[:] xindices, yindices, out_indices
+
 1635:         float64_t[:] x, y
+
 1636:         ndarray[float64_t, ndim=1] out
+
 1637: 
+
 1638:     # suppress Cython compiler warnings due to inlining
+
+1639:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1640:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1641: 
+
 1642:     # need to do this first to know size of result array
+
+1643:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1643, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+1644:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1644, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1644, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1644, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1644, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1644, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1644, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1644, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1644, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1644, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 1644, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1644, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1645: 
+
+1646:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1646, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1647:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1647, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1648:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1648, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 1649: 
+
 1650:     # walk the two SparseVectors, adding matched locations...
+
+1651:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+1652:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1653:             # use x fill value
+
+1654:             out[out_i] = __mod__(xfill, y[yi])
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1655:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1656:             continue
+
      goto __pyx_L3_continue;
+
 1657: 
+
+1658:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1659:             # use y fill value
+
+1660:             out[out_i] = __mod__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1661:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1662:             continue
+
      goto __pyx_L3_continue;
+
 1663: 
+
+1664:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+1665:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 1666: 
+
 1667:         # each index in the out_index had to come from either x, y, or both
+
+1668:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+1669:             out[out_i] = __mod__(x[xi], y[yi])
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+1670:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1671:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1672:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 1673:             # use y fill value
+
+1674:             out[out_i] = __mod__(x[xi], yfill)
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1675:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1676:         else:
+
 1677:             # use x fill value
+
+1678:             out[out_i] = __mod__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+1679:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 1680: 
+
+1681:     return out, out_index, __mod__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1681, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1681, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1682: 
+
 1683: 
+
+1684: cpdef sparse_mod_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_35sparse_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_mod_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_mod_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_35sparse_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_35sparse_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_mod_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mod_float64", 1, 6, 6, 1); __PYX_ERR(2, 1684, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mod_float64", 1, 6, 6, 2); __PYX_ERR(2, 1684, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mod_float64", 1, 6, 6, 3); __PYX_ERR(2, 1684, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mod_float64", 1, 6, 6, 4); __PYX_ERR(2, 1684, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mod_float64", 1, 6, 6, 5); __PYX_ERR(2, 1684, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_mod_float64") < 0)) __PYX_ERR(2, 1684, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 1684, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1685, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 1686, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1687, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_mod_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1684, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 1685, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1687, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_34sparse_mod_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_34sparse_mod_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_mod_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 1684, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1684, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_mod_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1684, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1685:                                   SparseIndex xindex, float64_t xfill,
+
 1686:                                   float64_t[:] y,
+
 1687:                                   SparseIndex yindex, float64_t yfill):
+
 1688: 
+
+1689:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+1690:         return block_op_mod_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1690, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1690, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1690, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_mod_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1690, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+1691:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1691, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1691, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1691, __pyx_L1_error)
+
+1692:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+1693:         return int_op_mod_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1693, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1693, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1693, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_mod_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1693, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+1694:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1694, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1694, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1694, __pyx_L1_error)
+
 1695:     else:
+
+1696:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 1696, __pyx_L1_error)
+  }
+
 1697: 
+
 1698: 
+
+1699: cpdef sparse_fill_mod_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_37sparse_fill_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_mod_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_mod_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_37sparse_fill_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_37sparse_fill_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_mod_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_mod_float64", 1, 2, 2, 1); __PYX_ERR(2, 1699, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_mod_float64") < 0)) __PYX_ERR(2, 1699, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1699, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1700, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_mod_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1699, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_36sparse_fill_mod_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_36sparse_fill_mod_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_mod_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_mod_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1699, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1700:                                        float64_t yfill):
+
+1701:     return __mod__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1701, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1702: 
+
 1703: 
+
 1704: @cython.wraparound(False)
+
 1705: @cython.boundscheck(False)
+
+1706: cdef inline tuple block_op_mod_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_mod_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_mod_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1707:                                                 BlockIndex xindex,
+
 1708:                                                 int64_t xfill,
+
 1709:                                                 int64_t[:] y_,
+
 1710:                                                 BlockIndex yindex,
+
 1711:                                                 int64_t yfill):
+
 1712:     '''
+
 1713:     Binary operator on BlockIndex objects with fill values
+
 1714:     '''
+
 1715: 
+
 1716:     cdef:
+
 1717:         BlockIndex out_index
+
+1718:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+1719:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 1720:         int32_t xloc, yloc
+
+1721:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 1722: 
+
 1723:         int64_t[:] x, y
+
 1724:         ndarray[int64_t, ndim=1] out
+
 1725: 
+
 1726:     # to suppress Cython warning
+
+1727:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1728:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1729: 
+
+1730:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1730, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+1731:     out = np.empty(out_index.npoints, dtype=np.int64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1731, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1731, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1731, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1731, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1731, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1731, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1731, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1731, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1731, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 1731, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1731, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1732: 
+
 1733:     # Wow, what a hack job. Need to do something about this
+
 1734: 
+
 1735:     # walk the two SparseVectors, adding matched locations...
+
+1736:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+1737:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1738:             # use y fill value
+
+1739:             out[out_i] = __mod__(x[xi], yfill)
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1740:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1741: 
+
 1742:             # advance x location
+
+1743:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1744:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1745:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1746:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+1747:             continue
+
      goto __pyx_L3_continue;
+
 1748: 
+
+1749:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1750:             # use x fill value
+
+1751:             out[out_i] = __mod__(xfill, y[yi])
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+1752:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1753: 
+
 1754:             # advance y location
+
+1755:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1756:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1757:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1758:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+1759:             continue
+
      goto __pyx_L3_continue;
+
 1760: 
+
+1761:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+1762:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 1763: 
+
 1764:         # each index in the out_index had to come from either x, y, or both
+
+1765:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+1766:             out[out_i] = __mod__(x[xi], y[yi])
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1767:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1768:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1769: 
+
 1770:             # advance both locations
+
+1771:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1772:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1773:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1774:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1775: 
+
+1776:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1777:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1778:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1779:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1780: 
+
+1781:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 1782:             # use y fill value
+
+1783:             out[out_i] = __mod__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1784:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1785: 
+
 1786:             # advance x location
+
+1787:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1788:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1789:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1790:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1791:         else:
+
 1792:             # use x fill value
+
+1793:             out[out_i] = __mod__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1794:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1795: 
+
 1796:             # advance y location
+
+1797:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1798:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+1799:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1800:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1801: 
+
+1802:     return out, out_index, __mod__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1802, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1802, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1803: 
+
 1804: 
+
 1805: @cython.wraparound(False)
+
 1806: @cython.boundscheck(False)
+
+1807: cdef inline tuple int_op_mod_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_mod_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_mod_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1808:                                               IntIndex xindex,
+
 1809:                                               int64_t xfill,
+
 1810:                                               int64_t[:] y_,
+
 1811:                                               IntIndex yindex,
+
 1812:                                               int64_t yfill):
+
 1813:     cdef:
+
 1814:         IntIndex out_index
+
+1815:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 1816:         int32_t xloc, yloc
+
 1817:         int32_t[:] xindices, yindices, out_indices
+
 1818:         int64_t[:] x, y
+
 1819:         ndarray[int64_t, ndim=1] out
+
 1820: 
+
 1821:     # suppress Cython compiler warnings due to inlining
+
+1822:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1823:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1824: 
+
 1825:     # need to do this first to know size of result array
+
+1826:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1826, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+1827:     out = np.empty(out_index.npoints, dtype=np.int64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1827, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1827, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1827, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1827, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1827, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1827, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1827, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1827, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1827, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 1827, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1827, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1828: 
+
+1829:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1829, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1830:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1830, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1831:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1831, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 1832: 
+
 1833:     # walk the two SparseVectors, adding matched locations...
+
+1834:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+1835:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1836:             # use x fill value
+
+1837:             out[out_i] = __mod__(xfill, y[yi])
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1838:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1839:             continue
+
      goto __pyx_L3_continue;
+
 1840: 
+
+1841:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1842:             # use y fill value
+
+1843:             out[out_i] = __mod__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1844:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1845:             continue
+
      goto __pyx_L3_continue;
+
 1846: 
+
+1847:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+1848:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 1849: 
+
 1850:         # each index in the out_index had to come from either x, y, or both
+
+1851:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+1852:             out[out_i] = __mod__(x[xi], y[yi])
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+1853:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1854:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1855:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 1856:             # use y fill value
+
+1857:             out[out_i] = __mod__(x[xi], yfill)
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1858:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1859:         else:
+
 1860:             # use x fill value
+
+1861:             out[out_i] = __mod__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+1862:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 1863: 
+
+1864:     return out, out_index, __mod__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1864, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1864, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1865: 
+
 1866: 
+
+1867: cpdef sparse_mod_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_39sparse_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_mod_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_mod_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_39sparse_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_39sparse_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_mod_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mod_int64", 1, 6, 6, 1); __PYX_ERR(2, 1867, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mod_int64", 1, 6, 6, 2); __PYX_ERR(2, 1867, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mod_int64", 1, 6, 6, 3); __PYX_ERR(2, 1867, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mod_int64", 1, 6, 6, 4); __PYX_ERR(2, 1867, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_mod_int64", 1, 6, 6, 5); __PYX_ERR(2, 1867, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_mod_int64") < 0)) __PYX_ERR(2, 1867, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 1867, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1868, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 1869, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1870, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_mod_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1867, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 1868, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1870, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_38sparse_mod_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_38sparse_mod_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_mod_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 1867, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1867, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_mod_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1867, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1868:                                   SparseIndex xindex, int64_t xfill,
+
 1869:                                   int64_t[:] y,
+
 1870:                                   SparseIndex yindex, int64_t yfill):
+
 1871: 
+
+1872:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+1873:         return block_op_mod_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1873, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1873, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1873, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_mod_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1873, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+1874:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1874, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1874, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1874, __pyx_L1_error)
+
+1875:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+1876:         return int_op_mod_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1876, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1876, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1876, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_mod_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1876, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+1877:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1877, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1877, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1877, __pyx_L1_error)
+
 1878:     else:
+
+1879:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 1879, __pyx_L1_error)
+  }
+
 1880: 
+
 1881: 
+
+1882: cpdef sparse_fill_mod_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_41sparse_fill_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_mod_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_mod_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_41sparse_fill_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_41sparse_fill_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_mod_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_mod_int64", 1, 2, 2, 1); __PYX_ERR(2, 1882, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_mod_int64") < 0)) __PYX_ERR(2, 1882, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1882, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1883, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_mod_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1882, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_40sparse_fill_mod_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_40sparse_fill_mod_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_mod_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_mod_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1882, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1883:                                        int64_t yfill):
+
+1884:     return __mod__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int64(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1884, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1885: 
+
 1886: 
+
 1887: @cython.wraparound(False)
+
 1888: @cython.boundscheck(False)
+
+1889: cdef inline tuple block_op_truediv_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_truediv_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_truediv_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1890:                                                 BlockIndex xindex,
+
 1891:                                                 float64_t xfill,
+
 1892:                                                 float64_t[:] y_,
+
 1893:                                                 BlockIndex yindex,
+
 1894:                                                 float64_t yfill):
+
 1895:     '''
+
 1896:     Binary operator on BlockIndex objects with fill values
+
 1897:     '''
+
 1898: 
+
 1899:     cdef:
+
 1900:         BlockIndex out_index
+
+1901:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+1902:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 1903:         int32_t xloc, yloc
+
+1904:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 1905: 
+
 1906:         float64_t[:] x, y
+
 1907:         ndarray[float64_t, ndim=1] out
+
 1908: 
+
 1909:     # to suppress Cython warning
+
+1910:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1911:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1912: 
+
+1913:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1913, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+1914:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1914, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1914, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1914, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1914, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1914, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1914, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1914, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1914, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1914, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 1914, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1914, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1915: 
+
 1916:     # Wow, what a hack job. Need to do something about this
+
 1917: 
+
 1918:     # walk the two SparseVectors, adding matched locations...
+
+1919:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+1920:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1921:             # use y fill value
+
+1922:             out[out_i] = __truediv__(x[xi], yfill)
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1923:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1924: 
+
 1925:             # advance x location
+
+1926:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1927:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1928:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1929:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+1930:             continue
+
      goto __pyx_L3_continue;
+
 1931: 
+
+1932:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1933:             # use x fill value
+
+1934:             out[out_i] = __truediv__(xfill, y[yi])
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+1935:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1936: 
+
 1937:             # advance y location
+
+1938:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1939:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1940:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1941:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+1942:             continue
+
      goto __pyx_L3_continue;
+
 1943: 
+
+1944:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+1945:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 1946: 
+
 1947:         # each index in the out_index had to come from either x, y, or both
+
+1948:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+1949:             out[out_i] = __truediv__(x[xi], y[yi])
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1950:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1951:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1952: 
+
 1953:             # advance both locations
+
+1954:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1955:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1956:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1957:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1958: 
+
+1959:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1960:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1961:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1962:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1963: 
+
+1964:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 1965:             # use y fill value
+
+1966:             out[out_i] = __truediv__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+1967:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1968: 
+
 1969:             # advance x location
+
+1970:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1971:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1972:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1973:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1974:         else:
+
 1975:             # use x fill value
+
+1976:             out[out_i] = __truediv__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+1977:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1978: 
+
 1979:             # advance y location
+
+1980:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1981:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+1982:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1983:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1984: 
+
+1985:     return out, out_index, __truediv__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1985, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1985, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 1986: 
+
 1987: 
+
 1988: @cython.wraparound(False)
+
 1989: @cython.boundscheck(False)
+
+1990: cdef inline tuple int_op_truediv_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_truediv_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_truediv_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 1991:                                               IntIndex xindex,
+
 1992:                                               float64_t xfill,
+
 1993:                                               float64_t[:] y_,
+
 1994:                                               IntIndex yindex,
+
 1995:                                               float64_t yfill):
+
 1996:     cdef:
+
 1997:         IntIndex out_index
+
+1998:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 1999:         int32_t xloc, yloc
+
 2000:         int32_t[:] xindices, yindices, out_indices
+
 2001:         float64_t[:] x, y
+
 2002:         ndarray[float64_t, ndim=1] out
+
 2003: 
+
 2004:     # suppress Cython compiler warnings due to inlining
+
+2005:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2006:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2007: 
+
 2008:     # need to do this first to know size of result array
+
+2009:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2009, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+2010:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2010, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2010, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2010, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2010, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2010, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2010, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2010, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2010, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2010, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 2010, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2010, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2011: 
+
+2012:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2012, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2013:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2013, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2014:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2014, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 2015: 
+
 2016:     # walk the two SparseVectors, adding matched locations...
+
+2017:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+2018:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2019:             # use x fill value
+
+2020:             out[out_i] = __truediv__(xfill, y[yi])
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2021:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2022:             continue
+
      goto __pyx_L3_continue;
+
 2023: 
+
+2024:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2025:             # use y fill value
+
+2026:             out[out_i] = __truediv__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2027:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2028:             continue
+
      goto __pyx_L3_continue;
+
 2029: 
+
+2030:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+2031:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 2032: 
+
 2033:         # each index in the out_index had to come from either x, y, or both
+
+2034:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+2035:             out[out_i] = __truediv__(x[xi], y[yi])
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+2036:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2037:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2038:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 2039:             # use y fill value
+
+2040:             out[out_i] = __truediv__(x[xi], yfill)
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2041:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2042:         else:
+
 2043:             # use x fill value
+
+2044:             out[out_i] = __truediv__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+2045:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 2046: 
+
+2047:     return out, out_index, __truediv__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2047, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2047, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2048: 
+
 2049: 
+
+2050: cpdef sparse_truediv_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_43sparse_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_truediv_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_truediv_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_43sparse_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_43sparse_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_truediv_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_truediv_float64", 1, 6, 6, 1); __PYX_ERR(2, 2050, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_truediv_float64", 1, 6, 6, 2); __PYX_ERR(2, 2050, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_truediv_float64", 1, 6, 6, 3); __PYX_ERR(2, 2050, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_truediv_float64", 1, 6, 6, 4); __PYX_ERR(2, 2050, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_truediv_float64", 1, 6, 6, 5); __PYX_ERR(2, 2050, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_truediv_float64") < 0)) __PYX_ERR(2, 2050, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 2050, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2051, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 2052, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2053, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_truediv_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2050, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 2051, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2053, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_42sparse_truediv_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_42sparse_truediv_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_truediv_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 2050, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2050, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_truediv_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2050, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2051:                                   SparseIndex xindex, float64_t xfill,
+
 2052:                                   float64_t[:] y,
+
 2053:                                   SparseIndex yindex, float64_t yfill):
+
 2054: 
+
+2055:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+2056:         return block_op_truediv_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2056, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2056, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2056, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_truediv_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2056, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+2057:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2057, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2057, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2057, __pyx_L1_error)
+
+2058:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+2059:         return int_op_truediv_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2059, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2059, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2059, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_truediv_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2059, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+2060:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2060, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2060, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2060, __pyx_L1_error)
+
 2061:     else:
+
+2062:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 2062, __pyx_L1_error)
+  }
+
 2063: 
+
 2064: 
+
+2065: cpdef sparse_fill_truediv_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_45sparse_fill_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_truediv_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_truediv_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_45sparse_fill_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_45sparse_fill_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_truediv_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_truediv_float64", 1, 2, 2, 1); __PYX_ERR(2, 2065, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_truediv_float64") < 0)) __PYX_ERR(2, 2065, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2065, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2066, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_truediv_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2065, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_44sparse_fill_truediv_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_44sparse_fill_truediv_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_truediv_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_truediv_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2065, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2066:                                        float64_t yfill):
+
+2067:     return __truediv__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2067, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2068: 
+
 2069: 
+
 2070: @cython.wraparound(False)
+
 2071: @cython.boundscheck(False)
+
+2072: cdef inline tuple block_op_truediv_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_truediv_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_truediv_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2073:                                                 BlockIndex xindex,
+
 2074:                                                 int64_t xfill,
+
 2075:                                                 int64_t[:] y_,
+
 2076:                                                 BlockIndex yindex,
+
 2077:                                                 int64_t yfill):
+
 2078:     '''
+
 2079:     Binary operator on BlockIndex objects with fill values
+
 2080:     '''
+
 2081: 
+
 2082:     cdef:
+
 2083:         BlockIndex out_index
+
+2084:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+2085:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 2086:         int32_t xloc, yloc
+
+2087:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 2088: 
+
 2089:         int64_t[:] x, y
+
 2090:         ndarray[float64_t, ndim=1] out
+
 2091: 
+
 2092:     # to suppress Cython warning
+
+2093:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2094:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2095: 
+
+2096:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2096, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+2097:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2097, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2097, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2097, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2097, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2097, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2097, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2097, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2097, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2097, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 2097, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2097, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2098: 
+
 2099:     # Wow, what a hack job. Need to do something about this
+
 2100: 
+
 2101:     # walk the two SparseVectors, adding matched locations...
+
+2102:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+2103:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2104:             # use y fill value
+
+2105:             out[out_i] = __truediv__(x[xi], yfill)
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2106:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2107: 
+
 2108:             # advance x location
+
+2109:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2110:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2111:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2112:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+2113:             continue
+
      goto __pyx_L3_continue;
+
 2114: 
+
+2115:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2116:             # use x fill value
+
+2117:             out[out_i] = __truediv__(xfill, y[yi])
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+2118:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2119: 
+
 2120:             # advance y location
+
+2121:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2122:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2123:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2124:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+2125:             continue
+
      goto __pyx_L3_continue;
+
 2126: 
+
+2127:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+2128:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 2129: 
+
 2130:         # each index in the out_index had to come from either x, y, or both
+
+2131:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+2132:             out[out_i] = __truediv__(x[xi], y[yi])
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2133:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2134:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2135: 
+
 2136:             # advance both locations
+
+2137:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2138:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2139:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2140:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2141: 
+
+2142:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2143:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2144:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2145:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2146: 
+
+2147:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 2148:             # use y fill value
+
+2149:             out[out_i] = __truediv__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2150:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2151: 
+
 2152:             # advance x location
+
+2153:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2154:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2155:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2156:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2157:         else:
+
 2158:             # use x fill value
+
+2159:             out[out_i] = __truediv__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2160:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2161: 
+
 2162:             # advance y location
+
+2163:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2164:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+2165:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2166:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2167: 
+
+2168:     return out, out_index, __truediv__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2168, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2168, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2169: 
+
 2170: 
+
 2171: @cython.wraparound(False)
+
 2172: @cython.boundscheck(False)
+
+2173: cdef inline tuple int_op_truediv_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_truediv_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_truediv_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2174:                                               IntIndex xindex,
+
 2175:                                               int64_t xfill,
+
 2176:                                               int64_t[:] y_,
+
 2177:                                               IntIndex yindex,
+
 2178:                                               int64_t yfill):
+
 2179:     cdef:
+
 2180:         IntIndex out_index
+
+2181:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 2182:         int32_t xloc, yloc
+
 2183:         int32_t[:] xindices, yindices, out_indices
+
 2184:         int64_t[:] x, y
+
 2185:         ndarray[float64_t, ndim=1] out
+
 2186: 
+
 2187:     # suppress Cython compiler warnings due to inlining
+
+2188:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2189:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2190: 
+
 2191:     # need to do this first to know size of result array
+
+2192:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2192, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+2193:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2193, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2193, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2193, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2193, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2193, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2193, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2193, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2193, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2193, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 2193, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2193, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2194: 
+
+2195:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2195, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2196:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2196, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2197:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2197, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 2198: 
+
 2199:     # walk the two SparseVectors, adding matched locations...
+
+2200:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+2201:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2202:             # use x fill value
+
+2203:             out[out_i] = __truediv__(xfill, y[yi])
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2204:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2205:             continue
+
      goto __pyx_L3_continue;
+
 2206: 
+
+2207:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2208:             # use y fill value
+
+2209:             out[out_i] = __truediv__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2210:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2211:             continue
+
      goto __pyx_L3_continue;
+
 2212: 
+
+2213:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+2214:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 2215: 
+
 2216:         # each index in the out_index had to come from either x, y, or both
+
+2217:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+2218:             out[out_i] = __truediv__(x[xi], y[yi])
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+2219:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2220:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2221:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 2222:             # use y fill value
+
+2223:             out[out_i] = __truediv__(x[xi], yfill)
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2224:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2225:         else:
+
 2226:             # use x fill value
+
+2227:             out[out_i] = __truediv__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+2228:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 2229: 
+
+2230:     return out, out_index, __truediv__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2230, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2230, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2231: 
+
 2232: 
+
+2233: cpdef sparse_truediv_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_47sparse_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_truediv_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_truediv_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_47sparse_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_47sparse_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_truediv_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_truediv_int64", 1, 6, 6, 1); __PYX_ERR(2, 2233, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_truediv_int64", 1, 6, 6, 2); __PYX_ERR(2, 2233, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_truediv_int64", 1, 6, 6, 3); __PYX_ERR(2, 2233, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_truediv_int64", 1, 6, 6, 4); __PYX_ERR(2, 2233, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_truediv_int64", 1, 6, 6, 5); __PYX_ERR(2, 2233, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_truediv_int64") < 0)) __PYX_ERR(2, 2233, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 2233, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2234, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 2235, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2236, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_truediv_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2233, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 2234, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2236, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_46sparse_truediv_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_46sparse_truediv_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_truediv_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 2233, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2233, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_truediv_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2233, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2234:                                   SparseIndex xindex, int64_t xfill,
+
 2235:                                   int64_t[:] y,
+
 2236:                                   SparseIndex yindex, int64_t yfill):
+
 2237: 
+
+2238:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+2239:         return block_op_truediv_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2239, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_truediv_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2239, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+2240:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2240, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2240, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2240, __pyx_L1_error)
+
+2241:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+2242:         return int_op_truediv_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2242, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2242, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2242, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_truediv_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2242, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+2243:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2243, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2243, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2243, __pyx_L1_error)
+
 2244:     else:
+
+2245:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 2245, __pyx_L1_error)
+  }
+
 2246: 
+
 2247: 
+
+2248: cpdef sparse_fill_truediv_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_49sparse_fill_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_truediv_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_truediv_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_49sparse_fill_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_49sparse_fill_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_truediv_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_truediv_int64", 1, 2, 2, 1); __PYX_ERR(2, 2248, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_truediv_int64") < 0)) __PYX_ERR(2, 2248, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2248, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2249, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_truediv_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2248, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_48sparse_fill_truediv_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_48sparse_fill_truediv_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_truediv_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_truediv_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2248, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2249:                                        int64_t yfill):
+
+2250:     return __truediv__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2250, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2251: 
+
 2252: 
+
 2253: @cython.wraparound(False)
+
 2254: @cython.boundscheck(False)
+
+2255: cdef inline tuple block_op_floordiv_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_floordiv_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_floordiv_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2256:                                                 BlockIndex xindex,
+
 2257:                                                 float64_t xfill,
+
 2258:                                                 float64_t[:] y_,
+
 2259:                                                 BlockIndex yindex,
+
 2260:                                                 float64_t yfill):
+
 2261:     '''
+
 2262:     Binary operator on BlockIndex objects with fill values
+
 2263:     '''
+
 2264: 
+
 2265:     cdef:
+
 2266:         BlockIndex out_index
+
+2267:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+2268:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 2269:         int32_t xloc, yloc
+
+2270:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 2271: 
+
 2272:         float64_t[:] x, y
+
 2273:         ndarray[float64_t, ndim=1] out
+
 2274: 
+
 2275:     # to suppress Cython warning
+
+2276:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2277:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2278: 
+
+2279:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2279, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+2280:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2280, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2280, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2280, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2280, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2280, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2280, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2280, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2280, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2280, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 2280, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2280, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2281: 
+
 2282:     # Wow, what a hack job. Need to do something about this
+
 2283: 
+
 2284:     # walk the two SparseVectors, adding matched locations...
+
+2285:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+2286:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2287:             # use y fill value
+
+2288:             out[out_i] = __floordiv__(x[xi], yfill)
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2289:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2290: 
+
 2291:             # advance x location
+
+2292:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2293:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2294:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2295:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+2296:             continue
+
      goto __pyx_L3_continue;
+
 2297: 
+
+2298:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2299:             # use x fill value
+
+2300:             out[out_i] = __floordiv__(xfill, y[yi])
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+2301:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2302: 
+
 2303:             # advance y location
+
+2304:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2305:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2306:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2307:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+2308:             continue
+
      goto __pyx_L3_continue;
+
 2309: 
+
+2310:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+2311:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 2312: 
+
 2313:         # each index in the out_index had to come from either x, y, or both
+
+2314:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+2315:             out[out_i] = __floordiv__(x[xi], y[yi])
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2316:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2317:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2318: 
+
 2319:             # advance both locations
+
+2320:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2321:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2322:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2323:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2324: 
+
+2325:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2326:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2327:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2328:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2329: 
+
+2330:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 2331:             # use y fill value
+
+2332:             out[out_i] = __floordiv__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2333:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2334: 
+
 2335:             # advance x location
+
+2336:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2337:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2338:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2339:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2340:         else:
+
 2341:             # use x fill value
+
+2342:             out[out_i] = __floordiv__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2343:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2344: 
+
 2345:             # advance y location
+
+2346:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2347:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+2348:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2349:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2350: 
+
+2351:     return out, out_index, __floordiv__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2351, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2351, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2352: 
+
 2353: 
+
 2354: @cython.wraparound(False)
+
 2355: @cython.boundscheck(False)
+
+2356: cdef inline tuple int_op_floordiv_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_floordiv_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_floordiv_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2357:                                               IntIndex xindex,
+
 2358:                                               float64_t xfill,
+
 2359:                                               float64_t[:] y_,
+
 2360:                                               IntIndex yindex,
+
 2361:                                               float64_t yfill):
+
 2362:     cdef:
+
 2363:         IntIndex out_index
+
+2364:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 2365:         int32_t xloc, yloc
+
 2366:         int32_t[:] xindices, yindices, out_indices
+
 2367:         float64_t[:] x, y
+
 2368:         ndarray[float64_t, ndim=1] out
+
 2369: 
+
 2370:     # suppress Cython compiler warnings due to inlining
+
+2371:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2372:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2373: 
+
 2374:     # need to do this first to know size of result array
+
+2375:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2375, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+2376:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2376, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2376, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2376, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2376, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2376, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2376, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2376, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2376, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2376, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 2376, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2376, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2377: 
+
+2378:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2378, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2379:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2379, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2380:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2380, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 2381: 
+
 2382:     # walk the two SparseVectors, adding matched locations...
+
+2383:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+2384:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2385:             # use x fill value
+
+2386:             out[out_i] = __floordiv__(xfill, y[yi])
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2387:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2388:             continue
+
      goto __pyx_L3_continue;
+
 2389: 
+
+2390:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2391:             # use y fill value
+
+2392:             out[out_i] = __floordiv__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2393:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2394:             continue
+
      goto __pyx_L3_continue;
+
 2395: 
+
+2396:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+2397:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 2398: 
+
 2399:         # each index in the out_index had to come from either x, y, or both
+
+2400:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+2401:             out[out_i] = __floordiv__(x[xi], y[yi])
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+2402:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2403:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2404:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 2405:             # use y fill value
+
+2406:             out[out_i] = __floordiv__(x[xi], yfill)
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2407:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2408:         else:
+
 2409:             # use x fill value
+
+2410:             out[out_i] = __floordiv__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+2411:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 2412: 
+
+2413:     return out, out_index, __floordiv__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2413, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2413, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2414: 
+
 2415: 
+
+2416: cpdef sparse_floordiv_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_51sparse_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_floordiv_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_floordiv_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_51sparse_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_51sparse_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_floordiv_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_float64", 1, 6, 6, 1); __PYX_ERR(2, 2416, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_float64", 1, 6, 6, 2); __PYX_ERR(2, 2416, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_float64", 1, 6, 6, 3); __PYX_ERR(2, 2416, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_float64", 1, 6, 6, 4); __PYX_ERR(2, 2416, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_float64", 1, 6, 6, 5); __PYX_ERR(2, 2416, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_floordiv_float64") < 0)) __PYX_ERR(2, 2416, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 2416, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2417, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 2418, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2419, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_floordiv_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2416, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 2417, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2419, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_50sparse_floordiv_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_50sparse_floordiv_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_floordiv_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 2416, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2416, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_floordiv_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2416, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2417:                                   SparseIndex xindex, float64_t xfill,
+
 2418:                                   float64_t[:] y,
+
 2419:                                   SparseIndex yindex, float64_t yfill):
+
 2420: 
+
+2421:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+2422:         return block_op_floordiv_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2422, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2422, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2422, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_floordiv_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2422, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+2423:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2423, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2423, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2423, __pyx_L1_error)
+
+2424:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+2425:         return int_op_floordiv_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2425, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2425, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2425, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_floordiv_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2425, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+2426:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2426, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2426, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2426, __pyx_L1_error)
+
 2427:     else:
+
+2428:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 2428, __pyx_L1_error)
+  }
+
 2429: 
+
 2430: 
+
+2431: cpdef sparse_fill_floordiv_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_53sparse_fill_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_floordiv_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_floordiv_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_53sparse_fill_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_53sparse_fill_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_floordiv_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_floordiv_float64", 1, 2, 2, 1); __PYX_ERR(2, 2431, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_floordiv_float64") < 0)) __PYX_ERR(2, 2431, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2431, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2432, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_floordiv_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2431, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_52sparse_fill_floordiv_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_52sparse_fill_floordiv_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_floordiv_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_floordiv_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2431, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2432:                                        float64_t yfill):
+
+2433:     return __floordiv__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2433, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2434: 
+
 2435: 
+
 2436: @cython.wraparound(False)
+
 2437: @cython.boundscheck(False)
+
+2438: cdef inline tuple block_op_floordiv_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_floordiv_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_floordiv_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2439:                                                 BlockIndex xindex,
+
 2440:                                                 int64_t xfill,
+
 2441:                                                 int64_t[:] y_,
+
 2442:                                                 BlockIndex yindex,
+
 2443:                                                 int64_t yfill):
+
 2444:     '''
+
 2445:     Binary operator on BlockIndex objects with fill values
+
 2446:     '''
+
 2447: 
+
 2448:     cdef:
+
 2449:         BlockIndex out_index
+
+2450:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+2451:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 2452:         int32_t xloc, yloc
+
+2453:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 2454: 
+
 2455:         int64_t[:] x, y
+
 2456:         ndarray[int64_t, ndim=1] out
+
 2457: 
+
 2458:     # to suppress Cython warning
+
+2459:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2460:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2461: 
+
+2462:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2462, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+2463:     out = np.empty(out_index.npoints, dtype=np.int64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2463, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2463, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2463, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2463, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2463, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2463, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2463, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2463, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2463, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 2463, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2463, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2464: 
+
 2465:     # Wow, what a hack job. Need to do something about this
+
 2466: 
+
 2467:     # walk the two SparseVectors, adding matched locations...
+
+2468:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+2469:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2470:             # use y fill value
+
+2471:             out[out_i] = __floordiv__(x[xi], yfill)
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2472:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2473: 
+
 2474:             # advance x location
+
+2475:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2476:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2477:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2478:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+2479:             continue
+
      goto __pyx_L3_continue;
+
 2480: 
+
+2481:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2482:             # use x fill value
+
+2483:             out[out_i] = __floordiv__(xfill, y[yi])
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+2484:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2485: 
+
 2486:             # advance y location
+
+2487:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2488:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2489:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2490:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+2491:             continue
+
      goto __pyx_L3_continue;
+
 2492: 
+
+2493:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+2494:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 2495: 
+
 2496:         # each index in the out_index had to come from either x, y, or both
+
+2497:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+2498:             out[out_i] = __floordiv__(x[xi], y[yi])
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2499:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2500:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2501: 
+
 2502:             # advance both locations
+
+2503:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2504:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2505:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2506:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2507: 
+
+2508:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2509:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2510:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2511:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2512: 
+
+2513:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 2514:             # use y fill value
+
+2515:             out[out_i] = __floordiv__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2516:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2517: 
+
 2518:             # advance x location
+
+2519:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2520:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2521:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2522:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2523:         else:
+
 2524:             # use x fill value
+
+2525:             out[out_i] = __floordiv__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2526:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2527: 
+
 2528:             # advance y location
+
+2529:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2530:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+2531:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2532:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2533: 
+
+2534:     return out, out_index, __floordiv__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2534, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2534, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2535: 
+
 2536: 
+
 2537: @cython.wraparound(False)
+
 2538: @cython.boundscheck(False)
+
+2539: cdef inline tuple int_op_floordiv_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_floordiv_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_floordiv_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2540:                                               IntIndex xindex,
+
 2541:                                               int64_t xfill,
+
 2542:                                               int64_t[:] y_,
+
 2543:                                               IntIndex yindex,
+
 2544:                                               int64_t yfill):
+
 2545:     cdef:
+
 2546:         IntIndex out_index
+
+2547:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 2548:         int32_t xloc, yloc
+
 2549:         int32_t[:] xindices, yindices, out_indices
+
 2550:         int64_t[:] x, y
+
 2551:         ndarray[int64_t, ndim=1] out
+
 2552: 
+
 2553:     # suppress Cython compiler warnings due to inlining
+
+2554:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2555:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2556: 
+
 2557:     # need to do this first to know size of result array
+
+2558:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2558, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+2559:     out = np.empty(out_index.npoints, dtype=np.int64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2559, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2559, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2559, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2559, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2559, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2559, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2559, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2559, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2559, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 2559, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2559, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2560: 
+
+2561:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2561, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2562:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2562, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2563:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2563, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 2564: 
+
 2565:     # walk the two SparseVectors, adding matched locations...
+
+2566:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+2567:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2568:             # use x fill value
+
+2569:             out[out_i] = __floordiv__(xfill, y[yi])
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2570:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2571:             continue
+
      goto __pyx_L3_continue;
+
 2572: 
+
+2573:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2574:             # use y fill value
+
+2575:             out[out_i] = __floordiv__(x[xi], yfill)
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2576:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2577:             continue
+
      goto __pyx_L3_continue;
+
 2578: 
+
+2579:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+2580:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 2581: 
+
 2582:         # each index in the out_index had to come from either x, y, or both
+
+2583:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+2584:             out[out_i] = __floordiv__(x[xi], y[yi])
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+2585:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2586:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2587:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 2588:             # use y fill value
+
+2589:             out[out_i] = __floordiv__(x[xi], yfill)
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2590:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2591:         else:
+
 2592:             # use x fill value
+
+2593:             out[out_i] = __floordiv__(xfill, y[yi])
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+2594:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 2595: 
+
+2596:     return out, out_index, __floordiv__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2596, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2596, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2597: 
+
 2598: 
+
+2599: cpdef sparse_floordiv_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_55sparse_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_floordiv_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_floordiv_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_55sparse_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_55sparse_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_floordiv_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_int64", 1, 6, 6, 1); __PYX_ERR(2, 2599, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_int64", 1, 6, 6, 2); __PYX_ERR(2, 2599, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_int64", 1, 6, 6, 3); __PYX_ERR(2, 2599, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_int64", 1, 6, 6, 4); __PYX_ERR(2, 2599, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_int64", 1, 6, 6, 5); __PYX_ERR(2, 2599, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_floordiv_int64") < 0)) __PYX_ERR(2, 2599, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 2599, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2600, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 2601, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2602, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_floordiv_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2599, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 2600, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2602, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_54sparse_floordiv_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_54sparse_floordiv_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_floordiv_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 2599, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2599, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_floordiv_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2599, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2600:                                   SparseIndex xindex, int64_t xfill,
+
 2601:                                   int64_t[:] y,
+
 2602:                                   SparseIndex yindex, int64_t yfill):
+
 2603: 
+
+2604:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+2605:         return block_op_floordiv_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2605, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2605, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2605, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_floordiv_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2605, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+2606:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2606, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2606, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2606, __pyx_L1_error)
+
+2607:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+2608:         return int_op_floordiv_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2608, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2608, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2608, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_floordiv_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2608, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+2609:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2609, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2609, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2609, __pyx_L1_error)
+
 2610:     else:
+
+2611:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 2611, __pyx_L1_error)
+  }
+
 2612: 
+
 2613: 
+
+2614: cpdef sparse_fill_floordiv_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_57sparse_fill_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_floordiv_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_floordiv_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_57sparse_fill_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_57sparse_fill_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_floordiv_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_floordiv_int64", 1, 2, 2, 1); __PYX_ERR(2, 2614, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_floordiv_int64") < 0)) __PYX_ERR(2, 2614, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2614, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2615, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_floordiv_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2614, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_56sparse_fill_floordiv_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_56sparse_fill_floordiv_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_floordiv_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_floordiv_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2614, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2615:                                        int64_t yfill):
+
+2616:     return __floordiv__(xfill, yfill)
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int64(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2616, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2617: 
+
 2618: 
+
 2619: @cython.wraparound(False)
+
 2620: @cython.boundscheck(False)
+
+2621: cdef inline tuple block_op_pow_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_pow_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_pow_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2622:                                                 BlockIndex xindex,
+
 2623:                                                 float64_t xfill,
+
 2624:                                                 float64_t[:] y_,
+
 2625:                                                 BlockIndex yindex,
+
 2626:                                                 float64_t yfill):
+
 2627:     '''
+
 2628:     Binary operator on BlockIndex objects with fill values
+
 2629:     '''
+
 2630: 
+
 2631:     cdef:
+
 2632:         BlockIndex out_index
+
+2633:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+2634:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 2635:         int32_t xloc, yloc
+
+2636:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 2637: 
+
 2638:         float64_t[:] x, y
+
 2639:         ndarray[float64_t, ndim=1] out
+
 2640: 
+
 2641:     # to suppress Cython warning
+
+2642:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2643:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2644: 
+
+2645:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2645, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+2646:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2646, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2646, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2646, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2646, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2646, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2646, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2646, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2646, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2646, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 2646, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2646, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2647: 
+
 2648:     # Wow, what a hack job. Need to do something about this
+
 2649: 
+
 2650:     # walk the two SparseVectors, adding matched locations...
+
+2651:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+2652:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2653:             # use y fill value
+
+2654:             out[out_i] = x[xi] ** yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = pow((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2655:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2656: 
+
 2657:             # advance x location
+
+2658:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2659:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2660:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2661:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+2662:             continue
+
      goto __pyx_L3_continue;
+
 2663: 
+
+2664:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2665:             # use x fill value
+
+2666:             out[out_i] = xfill ** y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = pow(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+2667:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2668: 
+
 2669:             # advance y location
+
+2670:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2671:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2672:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2673:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+2674:             continue
+
      goto __pyx_L3_continue;
+
 2675: 
+
+2676:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+2677:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 2678: 
+
 2679:         # each index in the out_index had to come from either x, y, or both
+
+2680:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+2681:             out[out_i] = x[xi] ** y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = pow((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2682:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2683:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2684: 
+
 2685:             # advance both locations
+
+2686:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2687:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2688:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2689:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2690: 
+
+2691:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2692:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2693:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2694:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2695: 
+
+2696:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 2697:             # use y fill value
+
+2698:             out[out_i] = x[xi] ** yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = pow((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2699:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2700: 
+
 2701:             # advance x location
+
+2702:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2703:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2704:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2705:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2706:         else:
+
 2707:             # use x fill value
+
+2708:             out[out_i] = xfill ** y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = pow(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2709:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2710: 
+
 2711:             # advance y location
+
+2712:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2713:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+2714:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2715:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2716: 
+
+2717:     return out, out_index, xfill ** yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(pow(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2717, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2717, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2718: 
+
 2719: 
+
 2720: @cython.wraparound(False)
+
 2721: @cython.boundscheck(False)
+
+2722: cdef inline tuple int_op_pow_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_pow_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_pow_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2723:                                               IntIndex xindex,
+
 2724:                                               float64_t xfill,
+
 2725:                                               float64_t[:] y_,
+
 2726:                                               IntIndex yindex,
+
 2727:                                               float64_t yfill):
+
 2728:     cdef:
+
 2729:         IntIndex out_index
+
+2730:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 2731:         int32_t xloc, yloc
+
 2732:         int32_t[:] xindices, yindices, out_indices
+
 2733:         float64_t[:] x, y
+
 2734:         ndarray[float64_t, ndim=1] out
+
 2735: 
+
 2736:     # suppress Cython compiler warnings due to inlining
+
+2737:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2738:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2739: 
+
 2740:     # need to do this first to know size of result array
+
+2741:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2741, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+2742:     out = np.empty(out_index.npoints, dtype=np.float64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2742, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2742, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2742, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2742, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2742, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2742, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2742, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2742, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2742, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 2742, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2742, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2743: 
+
+2744:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2744, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2745:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2745, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2746:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2746, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 2747: 
+
 2748:     # walk the two SparseVectors, adding matched locations...
+
+2749:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+2750:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2751:             # use x fill value
+
+2752:             out[out_i] = xfill ** y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = pow(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2753:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2754:             continue
+
      goto __pyx_L3_continue;
+
 2755: 
+
+2756:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2757:             # use y fill value
+
+2758:             out[out_i] = x[xi] ** yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = pow((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2759:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2760:             continue
+
      goto __pyx_L3_continue;
+
 2761: 
+
+2762:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+2763:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 2764: 
+
 2765:         # each index in the out_index had to come from either x, y, or both
+
+2766:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+2767:             out[out_i] = x[xi] ** y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = pow((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+2768:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2769:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2770:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 2771:             # use y fill value
+
+2772:             out[out_i] = x[xi] ** yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = pow((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2773:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2774:         else:
+
 2775:             # use x fill value
+
+2776:             out[out_i] = xfill ** y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = pow(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+2777:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 2778: 
+
+2779:     return out, out_index, xfill ** yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = PyFloat_FromDouble(pow(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2779, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2779, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2780: 
+
 2781: 
+
+2782: cpdef sparse_pow_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_59sparse_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_pow_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_pow_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_59sparse_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_59sparse_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_pow_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_pow_float64", 1, 6, 6, 1); __PYX_ERR(2, 2782, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_pow_float64", 1, 6, 6, 2); __PYX_ERR(2, 2782, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_pow_float64", 1, 6, 6, 3); __PYX_ERR(2, 2782, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_pow_float64", 1, 6, 6, 4); __PYX_ERR(2, 2782, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_pow_float64", 1, 6, 6, 5); __PYX_ERR(2, 2782, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_pow_float64") < 0)) __PYX_ERR(2, 2782, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 2782, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2783, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 2784, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2785, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_pow_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2782, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 2783, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2785, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_58sparse_pow_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_58sparse_pow_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_pow_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 2782, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2782, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_pow_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2782, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2783:                                   SparseIndex xindex, float64_t xfill,
+
 2784:                                   float64_t[:] y,
+
 2785:                                   SparseIndex yindex, float64_t yfill):
+
 2786: 
+
+2787:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+2788:         return block_op_pow_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2788, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2788, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2788, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_pow_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2788, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+2789:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2789, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2789, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2789, __pyx_L1_error)
+
+2790:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+2791:         return int_op_pow_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2791, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2791, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2791, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_pow_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2791, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+2792:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2792, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2792, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2792, __pyx_L1_error)
+
 2793:     else:
+
+2794:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 2794, __pyx_L1_error)
+  }
+
 2795: 
+
 2796: 
+
+2797: cpdef sparse_fill_pow_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_61sparse_fill_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_pow_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_pow_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_61sparse_fill_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_61sparse_fill_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_pow_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_pow_float64", 1, 2, 2, 1); __PYX_ERR(2, 2797, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_pow_float64") < 0)) __PYX_ERR(2, 2797, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2797, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2798, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_pow_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2797, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_60sparse_fill_pow_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_60sparse_fill_pow_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_pow_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_pow_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2797, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2798:                                        float64_t yfill):
+
+2799:     return xfill ** yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = PyFloat_FromDouble(pow(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2799, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2800: 
+
 2801: 
+
 2802: @cython.wraparound(False)
+
 2803: @cython.boundscheck(False)
+
+2804: cdef inline tuple block_op_pow_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_pow_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_pow_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2805:                                                 BlockIndex xindex,
+
 2806:                                                 int64_t xfill,
+
 2807:                                                 int64_t[:] y_,
+
 2808:                                                 BlockIndex yindex,
+
 2809:                                                 int64_t yfill):
+
 2810:     '''
+
 2811:     Binary operator on BlockIndex objects with fill values
+
 2812:     '''
+
 2813: 
+
 2814:     cdef:
+
 2815:         BlockIndex out_index
+
+2816:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+2817:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 2818:         int32_t xloc, yloc
+
+2819:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 2820: 
+
 2821:         int64_t[:] x, y
+
 2822:         ndarray[int64_t, ndim=1] out
+
 2823: 
+
 2824:     # to suppress Cython warning
+
+2825:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2826:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2827: 
+
+2828:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2828, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+2829:     out = np.empty(out_index.npoints, dtype=np.int64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2829, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2829, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2829, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2829, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2829, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2829, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2829, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2829, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2829, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 2829, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2829, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2830: 
+
 2831:     # Wow, what a hack job. Need to do something about this
+
 2832: 
+
 2833:     # walk the two SparseVectors, adding matched locations...
+
+2834:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+2835:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2836:             # use y fill value
+
+2837:             out[out_i] = x[xi] ** yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2838:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2839: 
+
 2840:             # advance x location
+
+2841:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2842:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2843:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2844:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+2845:             continue
+
      goto __pyx_L3_continue;
+
 2846: 
+
+2847:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2848:             # use x fill value
+
+2849:             out[out_i] = xfill ** y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+2850:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2851: 
+
 2852:             # advance y location
+
+2853:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2854:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2855:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2856:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+2857:             continue
+
      goto __pyx_L3_continue;
+
 2858: 
+
+2859:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+2860:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 2861: 
+
 2862:         # each index in the out_index had to come from either x, y, or both
+
+2863:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+2864:             out[out_i] = x[xi] ** y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2865:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2866:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2867: 
+
 2868:             # advance both locations
+
+2869:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2870:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2871:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2872:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2873: 
+
+2874:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2875:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2876:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2877:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2878: 
+
+2879:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 2880:             # use y fill value
+
+2881:             out[out_i] = x[xi] ** yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2882:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2883: 
+
 2884:             # advance x location
+
+2885:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2886:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2887:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2888:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2889:         else:
+
 2890:             # use x fill value
+
+2891:             out[out_i] = xfill ** y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2892:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2893: 
+
 2894:             # advance y location
+
+2895:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2896:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+2897:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2898:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2899: 
+
+2900:     return out, out_index, xfill ** yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2900, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2900, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2901: 
+
 2902: 
+
 2903: @cython.wraparound(False)
+
 2904: @cython.boundscheck(False)
+
+2905: cdef inline tuple int_op_pow_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_pow_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_pow_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2906:                                               IntIndex xindex,
+
 2907:                                               int64_t xfill,
+
 2908:                                               int64_t[:] y_,
+
 2909:                                               IntIndex yindex,
+
 2910:                                               int64_t yfill):
+
 2911:     cdef:
+
 2912:         IntIndex out_index
+
+2913:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 2914:         int32_t xloc, yloc
+
 2915:         int32_t[:] xindices, yindices, out_indices
+
 2916:         int64_t[:] x, y
+
 2917:         ndarray[int64_t, ndim=1] out
+
 2918: 
+
 2919:     # suppress Cython compiler warnings due to inlining
+
+2920:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2921:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2922: 
+
 2923:     # need to do this first to know size of result array
+
+2924:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2924, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+2925:     out = np.empty(out_index.npoints, dtype=np.int64)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2925, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2925, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2925, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2925, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2925, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2925, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2925, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2925, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2925, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 2925, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2925, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2926: 
+
+2927:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2927, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2928:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2928, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2929:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2929, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 2930: 
+
 2931:     # walk the two SparseVectors, adding matched locations...
+
+2932:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+2933:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2934:             # use x fill value
+
+2935:             out[out_i] = xfill ** y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+2936:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2937:             continue
+
      goto __pyx_L3_continue;
+
 2938: 
+
+2939:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2940:             # use y fill value
+
+2941:             out[out_i] = x[xi] ** yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2942:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2943:             continue
+
      goto __pyx_L3_continue;
+
 2944: 
+
+2945:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+2946:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 2947: 
+
 2948:         # each index in the out_index had to come from either x, y, or both
+
+2949:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+2950:             out[out_i] = x[xi] ** y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+2951:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2952:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2953:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 2954:             # use y fill value
+
+2955:             out[out_i] = x[xi] ** yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
+
+2956:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2957:         else:
+
 2958:             # use x fill value
+
+2959:             out[out_i] = xfill ** y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+2960:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 2961: 
+
+2962:     return out, out_index, xfill ** yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2962, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2962, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2963: 
+
 2964: 
+
+2965: cpdef sparse_pow_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_63sparse_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_pow_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_pow_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_63sparse_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_63sparse_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_pow_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_pow_int64", 1, 6, 6, 1); __PYX_ERR(2, 2965, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_pow_int64", 1, 6, 6, 2); __PYX_ERR(2, 2965, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_pow_int64", 1, 6, 6, 3); __PYX_ERR(2, 2965, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_pow_int64", 1, 6, 6, 4); __PYX_ERR(2, 2965, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_pow_int64", 1, 6, 6, 5); __PYX_ERR(2, 2965, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_pow_int64") < 0)) __PYX_ERR(2, 2965, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 2965, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2966, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 2967, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2968, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_pow_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2965, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 2966, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2968, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_62sparse_pow_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_62sparse_pow_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_pow_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 2965, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2965, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_pow_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2965, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2966:                                   SparseIndex xindex, int64_t xfill,
+
 2967:                                   int64_t[:] y,
+
 2968:                                   SparseIndex yindex, int64_t yfill):
+
 2969: 
+
+2970:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+2971:         return block_op_pow_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2971, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2971, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2971, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_pow_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2971, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+2972:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2972, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2972, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2972, __pyx_L1_error)
+
+2973:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+2974:         return int_op_pow_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2974, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2974, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2974, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_pow_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2974, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+2975:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2975, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2975, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2975, __pyx_L1_error)
+
 2976:     else:
+
+2977:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 2977, __pyx_L1_error)
+  }
+
 2978: 
+
 2979: 
+
+2980: cpdef sparse_fill_pow_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_65sparse_fill_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_pow_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_pow_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_65sparse_fill_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_65sparse_fill_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_pow_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_pow_int64", 1, 2, 2, 1); __PYX_ERR(2, 2980, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_pow_int64") < 0)) __PYX_ERR(2, 2980, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2980, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2981, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_pow_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2980, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_64sparse_fill_pow_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_64sparse_fill_pow_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_pow_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_pow_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2980, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2981:                                        int64_t yfill):
+
+2982:     return xfill ** yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int64(__Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2982, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 2983: 
+
 2984: 
+
 2985: @cython.wraparound(False)
+
 2986: @cython.boundscheck(False)
+
+2987: cdef inline tuple block_op_eq_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_eq_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_eq_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 2988:                                                 BlockIndex xindex,
+
 2989:                                                 float64_t xfill,
+
 2990:                                                 float64_t[:] y_,
+
 2991:                                                 BlockIndex yindex,
+
 2992:                                                 float64_t yfill):
+
 2993:     '''
+
 2994:     Binary operator on BlockIndex objects with fill values
+
 2995:     '''
+
 2996: 
+
 2997:     cdef:
+
 2998:         BlockIndex out_index
+
+2999:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+3000:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 3001:         int32_t xloc, yloc
+
+3002:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 3003: 
+
 3004:         float64_t[:] x, y
+
 3005:         ndarray[uint8_t, ndim=1] out
+
 3006: 
+
 3007:     # to suppress Cython warning
+
+3008:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3009:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3010: 
+
+3011:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3011, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+3012:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3012, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3012, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3012, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3012, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3012, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3012, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3012, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3012, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3012, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 3012, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3012, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3013: 
+
 3014:     # Wow, what a hack job. Need to do something about this
+
 3015: 
+
 3016:     # walk the two SparseVectors, adding matched locations...
+
+3017:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+3018:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3019:             # use y fill value
+
+3020:             out[out_i] = x[xi] == yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
+
+3021:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3022: 
+
 3023:             # advance x location
+
+3024:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3025:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3026:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3027:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+3028:             continue
+
      goto __pyx_L3_continue;
+
 3029: 
+
+3030:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3031:             # use x fill value
+
+3032:             out[out_i] = xfill == y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+3033:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3034: 
+
 3035:             # advance y location
+
+3036:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3037:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3038:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3039:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+3040:             continue
+
      goto __pyx_L3_continue;
+
 3041: 
+
+3042:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+3043:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 3044: 
+
 3045:         # each index in the out_index had to come from either x, y, or both
+
+3046:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+3047:             out[out_i] = x[xi] == y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) == (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3048:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3049:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3050: 
+
 3051:             # advance both locations
+
+3052:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3053:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3054:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3055:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3056: 
+
+3057:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3058:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3059:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3060:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3061: 
+
+3062:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 3063:             # use y fill value
+
+3064:             out[out_i] = x[xi] == yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
+
+3065:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3066: 
+
 3067:             # advance x location
+
+3068:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3069:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3070:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3071:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3072:         else:
+
 3073:             # use x fill value
+
+3074:             out[out_i] = xfill == y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3075:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3076: 
+
 3077:             # advance y location
+
+3078:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3079:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+3080:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3081:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3082: 
+
+3083:     return out, out_index, xfill == yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill == __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3083, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3083, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3084: 
+
 3085: 
+
 3086: @cython.wraparound(False)
+
 3087: @cython.boundscheck(False)
+
+3088: cdef inline tuple int_op_eq_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_eq_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_eq_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3089:                                               IntIndex xindex,
+
 3090:                                               float64_t xfill,
+
 3091:                                               float64_t[:] y_,
+
 3092:                                               IntIndex yindex,
+
 3093:                                               float64_t yfill):
+
 3094:     cdef:
+
 3095:         IntIndex out_index
+
+3096:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 3097:         int32_t xloc, yloc
+
 3098:         int32_t[:] xindices, yindices, out_indices
+
 3099:         float64_t[:] x, y
+
 3100:         ndarray[uint8_t, ndim=1] out
+
 3101: 
+
 3102:     # suppress Cython compiler warnings due to inlining
+
+3103:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3104:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3105: 
+
 3106:     # need to do this first to know size of result array
+
+3107:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3107, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+3108:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3108, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3108, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3108, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3108, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3108, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3108, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3108, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3108, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3108, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 3108, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3108, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3109: 
+
+3110:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3110, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3111:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3111, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3112:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3112, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 3113: 
+
 3114:     # walk the two SparseVectors, adding matched locations...
+
+3115:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+3116:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3117:             # use x fill value
+
+3118:             out[out_i] = xfill == y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3119:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3120:             continue
+
      goto __pyx_L3_continue;
+
 3121: 
+
+3122:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3123:             # use y fill value
+
+3124:             out[out_i] = x[xi] == yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
+
+3125:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3126:             continue
+
      goto __pyx_L3_continue;
+
 3127: 
+
+3128:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+3129:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 3130: 
+
 3131:         # each index in the out_index had to come from either x, y, or both
+
+3132:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+3133:             out[out_i] = x[xi] == y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) == (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+3134:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3135:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3136:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 3137:             # use y fill value
+
+3138:             out[out_i] = x[xi] == yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
+
+3139:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3140:         else:
+
 3141:             # use x fill value
+
+3142:             out[out_i] = xfill == y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+3143:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 3144: 
+
+3145:     return out, out_index, xfill == yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill == __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3145, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3145, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3146: 
+
 3147: 
+
+3148: cpdef sparse_eq_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_67sparse_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_eq_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_eq_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_67sparse_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_67sparse_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_eq_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_eq_float64", 1, 6, 6, 1); __PYX_ERR(2, 3148, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_eq_float64", 1, 6, 6, 2); __PYX_ERR(2, 3148, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_eq_float64", 1, 6, 6, 3); __PYX_ERR(2, 3148, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_eq_float64", 1, 6, 6, 4); __PYX_ERR(2, 3148, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_eq_float64", 1, 6, 6, 5); __PYX_ERR(2, 3148, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_eq_float64") < 0)) __PYX_ERR(2, 3148, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 3148, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3149, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 3150, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3151, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_eq_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3148, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 3149, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3151, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_66sparse_eq_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_66sparse_eq_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_eq_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 3148, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3148, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_eq_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3148, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3149:                                   SparseIndex xindex, float64_t xfill,
+
 3150:                                   float64_t[:] y,
+
 3151:                                   SparseIndex yindex, float64_t yfill):
+
 3152: 
+
+3153:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+3154:         return block_op_eq_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3154, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3154, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3154, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_eq_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3154, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+3155:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3155, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3155, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3155, __pyx_L1_error)
+
+3156:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+3157:         return int_op_eq_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3157, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3157, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3157, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_eq_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3157, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+3158:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3158, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3158, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3158, __pyx_L1_error)
+
 3159:     else:
+
+3160:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 3160, __pyx_L1_error)
+  }
+
 3161: 
+
 3162: 
+
+3163: cpdef sparse_fill_eq_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_69sparse_fill_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_eq_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_eq_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_69sparse_fill_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_69sparse_fill_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_eq_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_eq_float64", 1, 2, 2, 1); __PYX_ERR(2, 3163, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_eq_float64") < 0)) __PYX_ERR(2, 3163, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3163, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3164, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_eq_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3163, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_68sparse_fill_eq_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_68sparse_fill_eq_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_eq_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_eq_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3163, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3164:                                        float64_t yfill):
+
+3165:     return xfill == yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill == __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3165, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3166: 
+
 3167: 
+
 3168: @cython.wraparound(False)
+
 3169: @cython.boundscheck(False)
+
+3170: cdef inline tuple block_op_eq_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_eq_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_eq_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3171:                                                 BlockIndex xindex,
+
 3172:                                                 int64_t xfill,
+
 3173:                                                 int64_t[:] y_,
+
 3174:                                                 BlockIndex yindex,
+
 3175:                                                 int64_t yfill):
+
 3176:     '''
+
 3177:     Binary operator on BlockIndex objects with fill values
+
 3178:     '''
+
 3179: 
+
 3180:     cdef:
+
 3181:         BlockIndex out_index
+
+3182:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+3183:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 3184:         int32_t xloc, yloc
+
+3185:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 3186: 
+
 3187:         int64_t[:] x, y
+
 3188:         ndarray[uint8_t, ndim=1] out
+
 3189: 
+
 3190:     # to suppress Cython warning
+
+3191:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3192:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3193: 
+
+3194:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3194, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+3195:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3195, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3195, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3195, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3195, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3195, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3195, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3195, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3195, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3195, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 3195, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3195, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3196: 
+
 3197:     # Wow, what a hack job. Need to do something about this
+
 3198: 
+
 3199:     # walk the two SparseVectors, adding matched locations...
+
+3200:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+3201:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3202:             # use y fill value
+
+3203:             out[out_i] = x[xi] == yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
+
+3204:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3205: 
+
 3206:             # advance x location
+
+3207:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3208:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3209:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3210:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+3211:             continue
+
      goto __pyx_L3_continue;
+
 3212: 
+
+3213:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3214:             # use x fill value
+
+3215:             out[out_i] = xfill == y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+3216:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3217: 
+
 3218:             # advance y location
+
+3219:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3220:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3221:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3222:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+3223:             continue
+
      goto __pyx_L3_continue;
+
 3224: 
+
+3225:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+3226:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 3227: 
+
 3228:         # each index in the out_index had to come from either x, y, or both
+
+3229:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+3230:             out[out_i] = x[xi] == y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) == (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3231:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3232:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3233: 
+
 3234:             # advance both locations
+
+3235:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3236:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3237:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3238:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3239: 
+
+3240:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3241:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3242:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3243:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3244: 
+
+3245:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 3246:             # use y fill value
+
+3247:             out[out_i] = x[xi] == yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
+
+3248:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3249: 
+
 3250:             # advance x location
+
+3251:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3252:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3253:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3254:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3255:         else:
+
 3256:             # use x fill value
+
+3257:             out[out_i] = xfill == y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3258:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3259: 
+
 3260:             # advance y location
+
+3261:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3262:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+3263:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3264:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3265: 
+
+3266:     return out, out_index, xfill == yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill == __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3266, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3266, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3267: 
+
 3268: 
+
 3269: @cython.wraparound(False)
+
 3270: @cython.boundscheck(False)
+
+3271: cdef inline tuple int_op_eq_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_eq_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_eq_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3272:                                               IntIndex xindex,
+
 3273:                                               int64_t xfill,
+
 3274:                                               int64_t[:] y_,
+
 3275:                                               IntIndex yindex,
+
 3276:                                               int64_t yfill):
+
 3277:     cdef:
+
 3278:         IntIndex out_index
+
+3279:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 3280:         int32_t xloc, yloc
+
 3281:         int32_t[:] xindices, yindices, out_indices
+
 3282:         int64_t[:] x, y
+
 3283:         ndarray[uint8_t, ndim=1] out
+
 3284: 
+
 3285:     # suppress Cython compiler warnings due to inlining
+
+3286:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3287:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3288: 
+
 3289:     # need to do this first to know size of result array
+
+3290:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3290, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+3291:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3291, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3291, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3291, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3291, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3291, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3291, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3291, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3291, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3291, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 3291, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3291, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3292: 
+
+3293:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3293, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3294:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3294, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3295:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3295, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 3296: 
+
 3297:     # walk the two SparseVectors, adding matched locations...
+
+3298:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+3299:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3300:             # use x fill value
+
+3301:             out[out_i] = xfill == y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3302:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3303:             continue
+
      goto __pyx_L3_continue;
+
 3304: 
+
+3305:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3306:             # use y fill value
+
+3307:             out[out_i] = x[xi] == yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
+
+3308:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3309:             continue
+
      goto __pyx_L3_continue;
+
 3310: 
+
+3311:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+3312:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 3313: 
+
 3314:         # each index in the out_index had to come from either x, y, or both
+
+3315:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+3316:             out[out_i] = x[xi] == y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) == (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+3317:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3318:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3319:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 3320:             # use y fill value
+
+3321:             out[out_i] = x[xi] == yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
+
+3322:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3323:         else:
+
 3324:             # use x fill value
+
+3325:             out[out_i] = xfill == y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+3326:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 3327: 
+
+3328:     return out, out_index, xfill == yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill == __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3328, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3328, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3329: 
+
 3330: 
+
+3331: cpdef sparse_eq_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_71sparse_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_eq_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_eq_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_71sparse_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_71sparse_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_eq_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_eq_int64", 1, 6, 6, 1); __PYX_ERR(2, 3331, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_eq_int64", 1, 6, 6, 2); __PYX_ERR(2, 3331, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_eq_int64", 1, 6, 6, 3); __PYX_ERR(2, 3331, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_eq_int64", 1, 6, 6, 4); __PYX_ERR(2, 3331, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_eq_int64", 1, 6, 6, 5); __PYX_ERR(2, 3331, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_eq_int64") < 0)) __PYX_ERR(2, 3331, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 3331, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3332, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 3333, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3334, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_eq_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3331, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 3332, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3334, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_70sparse_eq_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_70sparse_eq_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_eq_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 3331, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3331, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_eq_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3331, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3332:                                   SparseIndex xindex, int64_t xfill,
+
 3333:                                   int64_t[:] y,
+
 3334:                                   SparseIndex yindex, int64_t yfill):
+
 3335: 
+
+3336:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+3337:         return block_op_eq_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3337, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3337, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3337, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_eq_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3337, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+3338:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3338, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3338, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3338, __pyx_L1_error)
+
+3339:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+3340:         return int_op_eq_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3340, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3340, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3340, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_eq_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3340, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+3341:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3341, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3341, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3341, __pyx_L1_error)
+
 3342:     else:
+
+3343:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 3343, __pyx_L1_error)
+  }
+
 3344: 
+
 3345: 
+
+3346: cpdef sparse_fill_eq_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_73sparse_fill_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_eq_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_eq_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_73sparse_fill_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_73sparse_fill_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_eq_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_eq_int64", 1, 2, 2, 1); __PYX_ERR(2, 3346, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_eq_int64") < 0)) __PYX_ERR(2, 3346, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3346, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3347, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_eq_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3346, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_72sparse_fill_eq_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_72sparse_fill_eq_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_eq_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_eq_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3346, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3347:                                        int64_t yfill):
+
+3348:     return xfill == yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill == __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3348, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3349: 
+
 3350: 
+
 3351: @cython.wraparound(False)
+
 3352: @cython.boundscheck(False)
+
+3353: cdef inline tuple block_op_ne_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_ne_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_ne_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3354:                                                 BlockIndex xindex,
+
 3355:                                                 float64_t xfill,
+
 3356:                                                 float64_t[:] y_,
+
 3357:                                                 BlockIndex yindex,
+
 3358:                                                 float64_t yfill):
+
 3359:     '''
+
 3360:     Binary operator on BlockIndex objects with fill values
+
 3361:     '''
+
 3362: 
+
 3363:     cdef:
+
 3364:         BlockIndex out_index
+
+3365:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+3366:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 3367:         int32_t xloc, yloc
+
+3368:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 3369: 
+
 3370:         float64_t[:] x, y
+
 3371:         ndarray[uint8_t, ndim=1] out
+
 3372: 
+
 3373:     # to suppress Cython warning
+
+3374:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3375:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3376: 
+
+3377:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3377, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+3378:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3378, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3378, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3378, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3378, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3378, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3378, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3378, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3378, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3378, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 3378, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3378, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3379: 
+
 3380:     # Wow, what a hack job. Need to do something about this
+
 3381: 
+
 3382:     # walk the two SparseVectors, adding matched locations...
+
+3383:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+3384:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3385:             # use y fill value
+
+3386:             out[out_i] = x[xi] != yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
+
+3387:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3388: 
+
 3389:             # advance x location
+
+3390:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3391:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3392:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3393:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+3394:             continue
+
      goto __pyx_L3_continue;
+
 3395: 
+
+3396:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3397:             # use x fill value
+
+3398:             out[out_i] = xfill != y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+3399:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3400: 
+
 3401:             # advance y location
+
+3402:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3403:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3404:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3405:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+3406:             continue
+
      goto __pyx_L3_continue;
+
 3407: 
+
+3408:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+3409:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 3410: 
+
 3411:         # each index in the out_index had to come from either x, y, or both
+
+3412:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+3413:             out[out_i] = x[xi] != y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) != (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3414:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3415:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3416: 
+
 3417:             # advance both locations
+
+3418:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3419:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3420:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3421:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3422: 
+
+3423:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3424:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3425:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3426:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3427: 
+
+3428:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 3429:             # use y fill value
+
+3430:             out[out_i] = x[xi] != yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
+
+3431:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3432: 
+
 3433:             # advance x location
+
+3434:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3435:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3436:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3437:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3438:         else:
+
 3439:             # use x fill value
+
+3440:             out[out_i] = xfill != y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3441:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3442: 
+
 3443:             # advance y location
+
+3444:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3445:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+3446:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3447:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3448: 
+
+3449:     return out, out_index, xfill != yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill != __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3449, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3449, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3450: 
+
 3451: 
+
 3452: @cython.wraparound(False)
+
 3453: @cython.boundscheck(False)
+
+3454: cdef inline tuple int_op_ne_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_ne_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_ne_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3455:                                               IntIndex xindex,
+
 3456:                                               float64_t xfill,
+
 3457:                                               float64_t[:] y_,
+
 3458:                                               IntIndex yindex,
+
 3459:                                               float64_t yfill):
+
 3460:     cdef:
+
 3461:         IntIndex out_index
+
+3462:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 3463:         int32_t xloc, yloc
+
 3464:         int32_t[:] xindices, yindices, out_indices
+
 3465:         float64_t[:] x, y
+
 3466:         ndarray[uint8_t, ndim=1] out
+
 3467: 
+
 3468:     # suppress Cython compiler warnings due to inlining
+
+3469:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3470:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3471: 
+
 3472:     # need to do this first to know size of result array
+
+3473:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3473, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+3474:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3474, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3474, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3474, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3474, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3474, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3474, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3474, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3474, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3474, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 3474, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3474, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3475: 
+
+3476:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3476, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3477:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3477, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3478:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3478, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 3479: 
+
 3480:     # walk the two SparseVectors, adding matched locations...
+
+3481:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+3482:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3483:             # use x fill value
+
+3484:             out[out_i] = xfill != y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3485:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3486:             continue
+
      goto __pyx_L3_continue;
+
 3487: 
+
+3488:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3489:             # use y fill value
+
+3490:             out[out_i] = x[xi] != yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
+
+3491:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3492:             continue
+
      goto __pyx_L3_continue;
+
 3493: 
+
+3494:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+3495:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 3496: 
+
 3497:         # each index in the out_index had to come from either x, y, or both
+
+3498:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+3499:             out[out_i] = x[xi] != y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) != (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+3500:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3501:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3502:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 3503:             # use y fill value
+
+3504:             out[out_i] = x[xi] != yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
+
+3505:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3506:         else:
+
 3507:             # use x fill value
+
+3508:             out[out_i] = xfill != y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+3509:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 3510: 
+
+3511:     return out, out_index, xfill != yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill != __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3511, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3511, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3512: 
+
 3513: 
+
+3514: cpdef sparse_ne_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_75sparse_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_ne_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_ne_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_75sparse_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_75sparse_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_ne_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ne_float64", 1, 6, 6, 1); __PYX_ERR(2, 3514, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ne_float64", 1, 6, 6, 2); __PYX_ERR(2, 3514, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ne_float64", 1, 6, 6, 3); __PYX_ERR(2, 3514, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ne_float64", 1, 6, 6, 4); __PYX_ERR(2, 3514, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ne_float64", 1, 6, 6, 5); __PYX_ERR(2, 3514, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_ne_float64") < 0)) __PYX_ERR(2, 3514, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 3514, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3515, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 3516, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3517, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_ne_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3514, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 3515, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3517, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_74sparse_ne_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_74sparse_ne_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_ne_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 3514, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3514, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_ne_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3514, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3515:                                   SparseIndex xindex, float64_t xfill,
+
 3516:                                   float64_t[:] y,
+
 3517:                                   SparseIndex yindex, float64_t yfill):
+
 3518: 
+
+3519:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+3520:         return block_op_ne_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3520, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3520, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3520, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_ne_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3520, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+3521:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3521, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3521, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3521, __pyx_L1_error)
+
+3522:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+3523:         return int_op_ne_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3523, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3523, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3523, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_ne_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3523, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+3524:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3524, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3524, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3524, __pyx_L1_error)
+
 3525:     else:
+
+3526:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 3526, __pyx_L1_error)
+  }
+
 3527: 
+
 3528: 
+
+3529: cpdef sparse_fill_ne_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_77sparse_fill_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_ne_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_ne_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_77sparse_fill_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_77sparse_fill_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_ne_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_ne_float64", 1, 2, 2, 1); __PYX_ERR(2, 3529, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_ne_float64") < 0)) __PYX_ERR(2, 3529, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3529, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3530, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_ne_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3529, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_76sparse_fill_ne_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_76sparse_fill_ne_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_ne_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_ne_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3529, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3530:                                        float64_t yfill):
+
+3531:     return xfill != yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill != __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3531, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3532: 
+
 3533: 
+
 3534: @cython.wraparound(False)
+
 3535: @cython.boundscheck(False)
+
+3536: cdef inline tuple block_op_ne_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_ne_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_ne_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3537:                                                 BlockIndex xindex,
+
 3538:                                                 int64_t xfill,
+
 3539:                                                 int64_t[:] y_,
+
 3540:                                                 BlockIndex yindex,
+
 3541:                                                 int64_t yfill):
+
 3542:     '''
+
 3543:     Binary operator on BlockIndex objects with fill values
+
 3544:     '''
+
 3545: 
+
 3546:     cdef:
+
 3547:         BlockIndex out_index
+
+3548:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+3549:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 3550:         int32_t xloc, yloc
+
+3551:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 3552: 
+
 3553:         int64_t[:] x, y
+
 3554:         ndarray[uint8_t, ndim=1] out
+
 3555: 
+
 3556:     # to suppress Cython warning
+
+3557:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3558:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3559: 
+
+3560:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3560, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+3561:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3561, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3561, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3561, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3561, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3561, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3561, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3561, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3561, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3561, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 3561, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3561, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3562: 
+
 3563:     # Wow, what a hack job. Need to do something about this
+
 3564: 
+
 3565:     # walk the two SparseVectors, adding matched locations...
+
+3566:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+3567:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3568:             # use y fill value
+
+3569:             out[out_i] = x[xi] != yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
+
+3570:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3571: 
+
 3572:             # advance x location
+
+3573:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3574:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3575:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3576:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+3577:             continue
+
      goto __pyx_L3_continue;
+
 3578: 
+
+3579:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3580:             # use x fill value
+
+3581:             out[out_i] = xfill != y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+3582:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3583: 
+
 3584:             # advance y location
+
+3585:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3586:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3587:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3588:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+3589:             continue
+
      goto __pyx_L3_continue;
+
 3590: 
+
+3591:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+3592:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 3593: 
+
 3594:         # each index in the out_index had to come from either x, y, or both
+
+3595:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+3596:             out[out_i] = x[xi] != y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) != (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3597:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3598:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3599: 
+
 3600:             # advance both locations
+
+3601:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3602:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3603:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3604:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3605: 
+
+3606:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3607:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3608:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3609:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3610: 
+
+3611:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 3612:             # use y fill value
+
+3613:             out[out_i] = x[xi] != yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
+
+3614:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3615: 
+
 3616:             # advance x location
+
+3617:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3618:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3619:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3620:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3621:         else:
+
 3622:             # use x fill value
+
+3623:             out[out_i] = xfill != y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3624:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3625: 
+
 3626:             # advance y location
+
+3627:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3628:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+3629:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3630:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3631: 
+
+3632:     return out, out_index, xfill != yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill != __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3632, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3632, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3633: 
+
 3634: 
+
 3635: @cython.wraparound(False)
+
 3636: @cython.boundscheck(False)
+
+3637: cdef inline tuple int_op_ne_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_ne_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_ne_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3638:                                               IntIndex xindex,
+
 3639:                                               int64_t xfill,
+
 3640:                                               int64_t[:] y_,
+
 3641:                                               IntIndex yindex,
+
 3642:                                               int64_t yfill):
+
 3643:     cdef:
+
 3644:         IntIndex out_index
+
+3645:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 3646:         int32_t xloc, yloc
+
 3647:         int32_t[:] xindices, yindices, out_indices
+
 3648:         int64_t[:] x, y
+
 3649:         ndarray[uint8_t, ndim=1] out
+
 3650: 
+
 3651:     # suppress Cython compiler warnings due to inlining
+
+3652:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3653:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3654: 
+
 3655:     # need to do this first to know size of result array
+
+3656:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3656, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+3657:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3657, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3657, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3657, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3657, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3657, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3657, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3657, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3657, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3657, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 3657, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3657, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3658: 
+
+3659:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3659, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3660:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3660, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3661:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3661, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 3662: 
+
 3663:     # walk the two SparseVectors, adding matched locations...
+
+3664:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+3665:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3666:             # use x fill value
+
+3667:             out[out_i] = xfill != y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3668:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3669:             continue
+
      goto __pyx_L3_continue;
+
 3670: 
+
+3671:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3672:             # use y fill value
+
+3673:             out[out_i] = x[xi] != yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
+
+3674:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3675:             continue
+
      goto __pyx_L3_continue;
+
 3676: 
+
+3677:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+3678:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 3679: 
+
 3680:         # each index in the out_index had to come from either x, y, or both
+
+3681:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+3682:             out[out_i] = x[xi] != y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) != (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+3683:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3684:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3685:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 3686:             # use y fill value
+
+3687:             out[out_i] = x[xi] != yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
+
+3688:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3689:         else:
+
 3690:             # use x fill value
+
+3691:             out[out_i] = xfill != y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+3692:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 3693: 
+
+3694:     return out, out_index, xfill != yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill != __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3694, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3694, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3695: 
+
 3696: 
+
+3697: cpdef sparse_ne_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_79sparse_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_ne_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_ne_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_79sparse_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_79sparse_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_ne_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ne_int64", 1, 6, 6, 1); __PYX_ERR(2, 3697, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ne_int64", 1, 6, 6, 2); __PYX_ERR(2, 3697, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ne_int64", 1, 6, 6, 3); __PYX_ERR(2, 3697, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ne_int64", 1, 6, 6, 4); __PYX_ERR(2, 3697, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ne_int64", 1, 6, 6, 5); __PYX_ERR(2, 3697, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_ne_int64") < 0)) __PYX_ERR(2, 3697, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 3697, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3698, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 3699, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3700, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_ne_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3697, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 3698, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3700, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_78sparse_ne_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_78sparse_ne_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_ne_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 3697, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3697, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_ne_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3697, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3698:                                   SparseIndex xindex, int64_t xfill,
+
 3699:                                   int64_t[:] y,
+
 3700:                                   SparseIndex yindex, int64_t yfill):
+
 3701: 
+
+3702:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+3703:         return block_op_ne_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3703, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3703, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3703, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_ne_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3703, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+3704:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3704, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3704, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3704, __pyx_L1_error)
+
+3705:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+3706:         return int_op_ne_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3706, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3706, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3706, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_ne_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3706, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+3707:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3707, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3707, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3707, __pyx_L1_error)
+
 3708:     else:
+
+3709:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 3709, __pyx_L1_error)
+  }
+
 3710: 
+
 3711: 
+
+3712: cpdef sparse_fill_ne_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_81sparse_fill_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_ne_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_ne_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_81sparse_fill_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_81sparse_fill_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_ne_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_ne_int64", 1, 2, 2, 1); __PYX_ERR(2, 3712, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_ne_int64") < 0)) __PYX_ERR(2, 3712, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3712, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3713, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_ne_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3712, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_80sparse_fill_ne_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_80sparse_fill_ne_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_ne_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_ne_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3712, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3713:                                        int64_t yfill):
+
+3714:     return xfill != yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill != __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3714, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3715: 
+
 3716: 
+
 3717: @cython.wraparound(False)
+
 3718: @cython.boundscheck(False)
+
+3719: cdef inline tuple block_op_lt_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_lt_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_lt_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3720:                                                 BlockIndex xindex,
+
 3721:                                                 float64_t xfill,
+
 3722:                                                 float64_t[:] y_,
+
 3723:                                                 BlockIndex yindex,
+
 3724:                                                 float64_t yfill):
+
 3725:     '''
+
 3726:     Binary operator on BlockIndex objects with fill values
+
 3727:     '''
+
 3728: 
+
 3729:     cdef:
+
 3730:         BlockIndex out_index
+
+3731:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+3732:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 3733:         int32_t xloc, yloc
+
+3734:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 3735: 
+
 3736:         float64_t[:] x, y
+
 3737:         ndarray[uint8_t, ndim=1] out
+
 3738: 
+
 3739:     # to suppress Cython warning
+
+3740:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3741:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3742: 
+
+3743:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3743, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+3744:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3744, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3744, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3744, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3744, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3744, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3744, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3744, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3744, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3744, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 3744, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3744, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3745: 
+
 3746:     # Wow, what a hack job. Need to do something about this
+
 3747: 
+
 3748:     # walk the two SparseVectors, adding matched locations...
+
+3749:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+3750:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3751:             # use y fill value
+
+3752:             out[out_i] = x[xi] < yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
+
+3753:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3754: 
+
 3755:             # advance x location
+
+3756:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3757:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3758:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3759:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+3760:             continue
+
      goto __pyx_L3_continue;
+
 3761: 
+
+3762:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3763:             # use x fill value
+
+3764:             out[out_i] = xfill < y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+3765:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3766: 
+
 3767:             # advance y location
+
+3768:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3769:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3770:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3771:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+3772:             continue
+
      goto __pyx_L3_continue;
+
 3773: 
+
+3774:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+3775:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 3776: 
+
 3777:         # each index in the out_index had to come from either x, y, or both
+
+3778:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+3779:             out[out_i] = x[xi] < y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) < (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3780:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3781:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3782: 
+
 3783:             # advance both locations
+
+3784:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3785:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3786:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3787:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3788: 
+
+3789:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3790:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3791:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3792:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3793: 
+
+3794:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 3795:             # use y fill value
+
+3796:             out[out_i] = x[xi] < yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
+
+3797:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3798: 
+
 3799:             # advance x location
+
+3800:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3801:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3802:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3803:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3804:         else:
+
 3805:             # use x fill value
+
+3806:             out[out_i] = xfill < y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3807:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3808: 
+
 3809:             # advance y location
+
+3810:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3811:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+3812:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3813:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3814: 
+
+3815:     return out, out_index, xfill < yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill < __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3815, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3815, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3816: 
+
 3817: 
+
 3818: @cython.wraparound(False)
+
 3819: @cython.boundscheck(False)
+
+3820: cdef inline tuple int_op_lt_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_lt_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_lt_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3821:                                               IntIndex xindex,
+
 3822:                                               float64_t xfill,
+
 3823:                                               float64_t[:] y_,
+
 3824:                                               IntIndex yindex,
+
 3825:                                               float64_t yfill):
+
 3826:     cdef:
+
 3827:         IntIndex out_index
+
+3828:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 3829:         int32_t xloc, yloc
+
 3830:         int32_t[:] xindices, yindices, out_indices
+
 3831:         float64_t[:] x, y
+
 3832:         ndarray[uint8_t, ndim=1] out
+
 3833: 
+
 3834:     # suppress Cython compiler warnings due to inlining
+
+3835:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3836:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3837: 
+
 3838:     # need to do this first to know size of result array
+
+3839:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3839, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+3840:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3840, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3840, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3840, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3840, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3840, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3840, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3840, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3840, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3840, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 3840, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3840, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3841: 
+
+3842:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3842, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3843:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3843, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3844:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3844, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 3845: 
+
 3846:     # walk the two SparseVectors, adding matched locations...
+
+3847:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+3848:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3849:             # use x fill value
+
+3850:             out[out_i] = xfill < y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3851:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3852:             continue
+
      goto __pyx_L3_continue;
+
 3853: 
+
+3854:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3855:             # use y fill value
+
+3856:             out[out_i] = x[xi] < yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
+
+3857:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3858:             continue
+
      goto __pyx_L3_continue;
+
 3859: 
+
+3860:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+3861:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 3862: 
+
 3863:         # each index in the out_index had to come from either x, y, or both
+
+3864:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+3865:             out[out_i] = x[xi] < y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) < (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+3866:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3867:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3868:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 3869:             # use y fill value
+
+3870:             out[out_i] = x[xi] < yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
+
+3871:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3872:         else:
+
 3873:             # use x fill value
+
+3874:             out[out_i] = xfill < y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+3875:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 3876: 
+
+3877:     return out, out_index, xfill < yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill < __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3877, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3877, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3878: 
+
 3879: 
+
+3880: cpdef sparse_lt_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_83sparse_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_lt_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_lt_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_83sparse_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_83sparse_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_lt_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_lt_float64", 1, 6, 6, 1); __PYX_ERR(2, 3880, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_lt_float64", 1, 6, 6, 2); __PYX_ERR(2, 3880, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_lt_float64", 1, 6, 6, 3); __PYX_ERR(2, 3880, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_lt_float64", 1, 6, 6, 4); __PYX_ERR(2, 3880, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_lt_float64", 1, 6, 6, 5); __PYX_ERR(2, 3880, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_lt_float64") < 0)) __PYX_ERR(2, 3880, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 3880, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3881, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 3882, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3883, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_lt_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3880, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 3881, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3883, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_82sparse_lt_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_82sparse_lt_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_lt_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 3880, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3880, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_lt_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3880, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3881:                                   SparseIndex xindex, float64_t xfill,
+
 3882:                                   float64_t[:] y,
+
 3883:                                   SparseIndex yindex, float64_t yfill):
+
 3884: 
+
+3885:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+3886:         return block_op_lt_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3886, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3886, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3886, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_lt_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3886, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+3887:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3887, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3887, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3887, __pyx_L1_error)
+
+3888:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+3889:         return int_op_lt_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3889, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3889, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3889, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_lt_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3889, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+3890:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3890, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3890, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3890, __pyx_L1_error)
+
 3891:     else:
+
+3892:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 3892, __pyx_L1_error)
+  }
+
 3893: 
+
 3894: 
+
+3895: cpdef sparse_fill_lt_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_85sparse_fill_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_lt_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_lt_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_85sparse_fill_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_85sparse_fill_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_lt_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_lt_float64", 1, 2, 2, 1); __PYX_ERR(2, 3895, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_lt_float64") < 0)) __PYX_ERR(2, 3895, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3895, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3896, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_lt_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3895, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_84sparse_fill_lt_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_84sparse_fill_lt_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_lt_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_lt_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3895, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3896:                                        float64_t yfill):
+
+3897:     return xfill < yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill < __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3897, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3898: 
+
 3899: 
+
 3900: @cython.wraparound(False)
+
 3901: @cython.boundscheck(False)
+
+3902: cdef inline tuple block_op_lt_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_lt_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_lt_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 3903:                                                 BlockIndex xindex,
+
 3904:                                                 int64_t xfill,
+
 3905:                                                 int64_t[:] y_,
+
 3906:                                                 BlockIndex yindex,
+
 3907:                                                 int64_t yfill):
+
 3908:     '''
+
 3909:     Binary operator on BlockIndex objects with fill values
+
 3910:     '''
+
 3911: 
+
 3912:     cdef:
+
 3913:         BlockIndex out_index
+
+3914:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+3915:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 3916:         int32_t xloc, yloc
+
+3917:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 3918: 
+
 3919:         int64_t[:] x, y
+
 3920:         ndarray[uint8_t, ndim=1] out
+
 3921: 
+
 3922:     # to suppress Cython warning
+
+3923:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3924:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3925: 
+
+3926:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3926, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+3927:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3927, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3927, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3927, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3927, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3927, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3927, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3927, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3927, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3927, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 3927, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3927, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3928: 
+
 3929:     # Wow, what a hack job. Need to do something about this
+
 3930: 
+
 3931:     # walk the two SparseVectors, adding matched locations...
+
+3932:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+3933:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3934:             # use y fill value
+
+3935:             out[out_i] = x[xi] < yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
+
+3936:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3937: 
+
 3938:             # advance x location
+
+3939:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3940:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3941:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3942:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+3943:             continue
+
      goto __pyx_L3_continue;
+
 3944: 
+
+3945:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3946:             # use x fill value
+
+3947:             out[out_i] = xfill < y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+3948:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3949: 
+
 3950:             # advance y location
+
+3951:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3952:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3953:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3954:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+3955:             continue
+
      goto __pyx_L3_continue;
+
 3956: 
+
+3957:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+3958:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 3959: 
+
 3960:         # each index in the out_index had to come from either x, y, or both
+
+3961:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+3962:             out[out_i] = x[xi] < y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) < (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3963:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3964:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3965: 
+
 3966:             # advance both locations
+
+3967:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3968:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3969:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3970:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3971: 
+
+3972:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3973:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3974:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3975:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3976: 
+
+3977:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 3978:             # use y fill value
+
+3979:             out[out_i] = x[xi] < yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
+
+3980:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3981: 
+
 3982:             # advance x location
+
+3983:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3984:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3985:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3986:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3987:         else:
+
 3988:             # use x fill value
+
+3989:             out[out_i] = xfill < y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+3990:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3991: 
+
 3992:             # advance y location
+
+3993:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3994:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+3995:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3996:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3997: 
+
+3998:     return out, out_index, xfill < yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill < __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3998, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3998, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 3999: 
+
 4000: 
+
 4001: @cython.wraparound(False)
+
 4002: @cython.boundscheck(False)
+
+4003: cdef inline tuple int_op_lt_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_lt_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_lt_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4004:                                               IntIndex xindex,
+
 4005:                                               int64_t xfill,
+
 4006:                                               int64_t[:] y_,
+
 4007:                                               IntIndex yindex,
+
 4008:                                               int64_t yfill):
+
 4009:     cdef:
+
 4010:         IntIndex out_index
+
+4011:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 4012:         int32_t xloc, yloc
+
 4013:         int32_t[:] xindices, yindices, out_indices
+
 4014:         int64_t[:] x, y
+
 4015:         ndarray[uint8_t, ndim=1] out
+
 4016: 
+
 4017:     # suppress Cython compiler warnings due to inlining
+
+4018:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4019:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4020: 
+
 4021:     # need to do this first to know size of result array
+
+4022:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4022, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+4023:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4023, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4023, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4023, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4023, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4023, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4023, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4023, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4023, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4023, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 4023, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4023, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4024: 
+
+4025:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4025, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4026:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4026, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4027:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4027, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 4028: 
+
 4029:     # walk the two SparseVectors, adding matched locations...
+
+4030:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+4031:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4032:             # use x fill value
+
+4033:             out[out_i] = xfill < y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4034:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4035:             continue
+
      goto __pyx_L3_continue;
+
 4036: 
+
+4037:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4038:             # use y fill value
+
+4039:             out[out_i] = x[xi] < yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
+
+4040:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4041:             continue
+
      goto __pyx_L3_continue;
+
 4042: 
+
+4043:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+4044:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 4045: 
+
 4046:         # each index in the out_index had to come from either x, y, or both
+
+4047:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+4048:             out[out_i] = x[xi] < y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) < (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+4049:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4050:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4051:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 4052:             # use y fill value
+
+4053:             out[out_i] = x[xi] < yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
+
+4054:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4055:         else:
+
 4056:             # use x fill value
+
+4057:             out[out_i] = xfill < y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+4058:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 4059: 
+
+4060:     return out, out_index, xfill < yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill < __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4060, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4060, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4061: 
+
 4062: 
+
+4063: cpdef sparse_lt_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_87sparse_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_lt_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_lt_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_87sparse_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_87sparse_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_lt_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_lt_int64", 1, 6, 6, 1); __PYX_ERR(2, 4063, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_lt_int64", 1, 6, 6, 2); __PYX_ERR(2, 4063, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_lt_int64", 1, 6, 6, 3); __PYX_ERR(2, 4063, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_lt_int64", 1, 6, 6, 4); __PYX_ERR(2, 4063, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_lt_int64", 1, 6, 6, 5); __PYX_ERR(2, 4063, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_lt_int64") < 0)) __PYX_ERR(2, 4063, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 4063, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4064, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 4065, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4066, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_lt_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4063, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 4064, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4066, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_86sparse_lt_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_86sparse_lt_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_lt_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 4063, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4063, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_lt_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4063, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4064:                                   SparseIndex xindex, int64_t xfill,
+
 4065:                                   int64_t[:] y,
+
 4066:                                   SparseIndex yindex, int64_t yfill):
+
 4067: 
+
+4068:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+4069:         return block_op_lt_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4069, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4069, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4069, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_lt_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4069, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+4070:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4070, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4070, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4070, __pyx_L1_error)
+
+4071:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+4072:         return int_op_lt_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4072, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4072, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4072, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_lt_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4072, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+4073:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4073, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4073, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4073, __pyx_L1_error)
+
 4074:     else:
+
+4075:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 4075, __pyx_L1_error)
+  }
+
 4076: 
+
 4077: 
+
+4078: cpdef sparse_fill_lt_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_89sparse_fill_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_lt_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_lt_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_89sparse_fill_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_89sparse_fill_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_lt_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_lt_int64", 1, 2, 2, 1); __PYX_ERR(2, 4078, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_lt_int64") < 0)) __PYX_ERR(2, 4078, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4078, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4079, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_lt_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4078, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_88sparse_fill_lt_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_88sparse_fill_lt_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_lt_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_lt_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4078, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4079:                                        int64_t yfill):
+
+4080:     return xfill < yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill < __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4080, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4081: 
+
 4082: 
+
 4083: @cython.wraparound(False)
+
 4084: @cython.boundscheck(False)
+
+4085: cdef inline tuple block_op_gt_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_gt_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_gt_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4086:                                                 BlockIndex xindex,
+
 4087:                                                 float64_t xfill,
+
 4088:                                                 float64_t[:] y_,
+
 4089:                                                 BlockIndex yindex,
+
 4090:                                                 float64_t yfill):
+
 4091:     '''
+
 4092:     Binary operator on BlockIndex objects with fill values
+
 4093:     '''
+
 4094: 
+
 4095:     cdef:
+
 4096:         BlockIndex out_index
+
+4097:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+4098:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 4099:         int32_t xloc, yloc
+
+4100:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 4101: 
+
 4102:         float64_t[:] x, y
+
 4103:         ndarray[uint8_t, ndim=1] out
+
 4104: 
+
 4105:     # to suppress Cython warning
+
+4106:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4107:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4108: 
+
+4109:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4109, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+4110:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4110, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 4110, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4110, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4111: 
+
 4112:     # Wow, what a hack job. Need to do something about this
+
 4113: 
+
 4114:     # walk the two SparseVectors, adding matched locations...
+
+4115:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+4116:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4117:             # use y fill value
+
+4118:             out[out_i] = x[xi] > yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
+
+4119:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4120: 
+
 4121:             # advance x location
+
+4122:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4123:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4124:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4125:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+4126:             continue
+
      goto __pyx_L3_continue;
+
 4127: 
+
+4128:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4129:             # use x fill value
+
+4130:             out[out_i] = xfill > y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+4131:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4132: 
+
 4133:             # advance y location
+
+4134:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4135:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4136:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4137:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+4138:             continue
+
      goto __pyx_L3_continue;
+
 4139: 
+
+4140:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+4141:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 4142: 
+
 4143:         # each index in the out_index had to come from either x, y, or both
+
+4144:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+4145:             out[out_i] = x[xi] > y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) > (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4146:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4147:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4148: 
+
 4149:             # advance both locations
+
+4150:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4151:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4152:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4153:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4154: 
+
+4155:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4156:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4157:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4158:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4159: 
+
+4160:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 4161:             # use y fill value
+
+4162:             out[out_i] = x[xi] > yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
+
+4163:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4164: 
+
 4165:             # advance x location
+
+4166:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4167:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4168:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4169:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4170:         else:
+
 4171:             # use x fill value
+
+4172:             out[out_i] = xfill > y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4173:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4174: 
+
 4175:             # advance y location
+
+4176:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4177:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+4178:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4179:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4180: 
+
+4181:     return out, out_index, xfill > yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill > __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4181, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4181, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4182: 
+
 4183: 
+
 4184: @cython.wraparound(False)
+
 4185: @cython.boundscheck(False)
+
+4186: cdef inline tuple int_op_gt_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_gt_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_gt_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4187:                                               IntIndex xindex,
+
 4188:                                               float64_t xfill,
+
 4189:                                               float64_t[:] y_,
+
 4190:                                               IntIndex yindex,
+
 4191:                                               float64_t yfill):
+
 4192:     cdef:
+
 4193:         IntIndex out_index
+
+4194:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 4195:         int32_t xloc, yloc
+
 4196:         int32_t[:] xindices, yindices, out_indices
+
 4197:         float64_t[:] x, y
+
 4198:         ndarray[uint8_t, ndim=1] out
+
 4199: 
+
 4200:     # suppress Cython compiler warnings due to inlining
+
+4201:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4202:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4203: 
+
 4204:     # need to do this first to know size of result array
+
+4205:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4205, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+4206:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4206, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4206, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4206, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4206, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4206, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4206, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4206, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4206, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4206, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 4206, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4206, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4207: 
+
+4208:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4208, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4209:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4209, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4210:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4210, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 4211: 
+
 4212:     # walk the two SparseVectors, adding matched locations...
+
+4213:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+4214:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4215:             # use x fill value
+
+4216:             out[out_i] = xfill > y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4217:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4218:             continue
+
      goto __pyx_L3_continue;
+
 4219: 
+
+4220:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4221:             # use y fill value
+
+4222:             out[out_i] = x[xi] > yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
+
+4223:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4224:             continue
+
      goto __pyx_L3_continue;
+
 4225: 
+
+4226:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+4227:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 4228: 
+
 4229:         # each index in the out_index had to come from either x, y, or both
+
+4230:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+4231:             out[out_i] = x[xi] > y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) > (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+4232:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4233:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4234:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 4235:             # use y fill value
+
+4236:             out[out_i] = x[xi] > yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
+
+4237:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4238:         else:
+
 4239:             # use x fill value
+
+4240:             out[out_i] = xfill > y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+4241:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 4242: 
+
+4243:     return out, out_index, xfill > yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill > __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4243, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4243, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4244: 
+
 4245: 
+
+4246: cpdef sparse_gt_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_91sparse_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_gt_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_gt_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_91sparse_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_91sparse_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_gt_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_gt_float64", 1, 6, 6, 1); __PYX_ERR(2, 4246, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_gt_float64", 1, 6, 6, 2); __PYX_ERR(2, 4246, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_gt_float64", 1, 6, 6, 3); __PYX_ERR(2, 4246, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_gt_float64", 1, 6, 6, 4); __PYX_ERR(2, 4246, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_gt_float64", 1, 6, 6, 5); __PYX_ERR(2, 4246, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_gt_float64") < 0)) __PYX_ERR(2, 4246, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 4246, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4247, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 4248, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4249, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_gt_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4246, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 4247, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4249, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_90sparse_gt_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_90sparse_gt_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_gt_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 4246, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4246, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_gt_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4246, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4247:                                   SparseIndex xindex, float64_t xfill,
+
 4248:                                   float64_t[:] y,
+
 4249:                                   SparseIndex yindex, float64_t yfill):
+
 4250: 
+
+4251:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+4252:         return block_op_gt_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4252, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4252, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4252, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_gt_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4252, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+4253:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4253, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4253, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4253, __pyx_L1_error)
+
+4254:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+4255:         return int_op_gt_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4255, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4255, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4255, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_gt_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4255, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+4256:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4256, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4256, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4256, __pyx_L1_error)
+
 4257:     else:
+
+4258:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 4258, __pyx_L1_error)
+  }
+
 4259: 
+
 4260: 
+
+4261: cpdef sparse_fill_gt_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_93sparse_fill_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_gt_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_gt_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_93sparse_fill_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_93sparse_fill_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_gt_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_gt_float64", 1, 2, 2, 1); __PYX_ERR(2, 4261, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_gt_float64") < 0)) __PYX_ERR(2, 4261, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4261, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4262, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_gt_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4261, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_92sparse_fill_gt_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_92sparse_fill_gt_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_gt_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_gt_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4261, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4262:                                        float64_t yfill):
+
+4263:     return xfill > yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill > __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4263, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4264: 
+
 4265: 
+
 4266: @cython.wraparound(False)
+
 4267: @cython.boundscheck(False)
+
+4268: cdef inline tuple block_op_gt_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_gt_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_gt_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4269:                                                 BlockIndex xindex,
+
 4270:                                                 int64_t xfill,
+
 4271:                                                 int64_t[:] y_,
+
 4272:                                                 BlockIndex yindex,
+
 4273:                                                 int64_t yfill):
+
 4274:     '''
+
 4275:     Binary operator on BlockIndex objects with fill values
+
 4276:     '''
+
 4277: 
+
 4278:     cdef:
+
 4279:         BlockIndex out_index
+
+4280:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+4281:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 4282:         int32_t xloc, yloc
+
+4283:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 4284: 
+
 4285:         int64_t[:] x, y
+
 4286:         ndarray[uint8_t, ndim=1] out
+
 4287: 
+
 4288:     # to suppress Cython warning
+
+4289:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4290:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4291: 
+
+4292:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4292, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+4293:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4293, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4293, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4293, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4293, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4293, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4293, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4293, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4293, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4293, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 4293, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4293, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4294: 
+
 4295:     # Wow, what a hack job. Need to do something about this
+
 4296: 
+
 4297:     # walk the two SparseVectors, adding matched locations...
+
+4298:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+4299:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4300:             # use y fill value
+
+4301:             out[out_i] = x[xi] > yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
+
+4302:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4303: 
+
 4304:             # advance x location
+
+4305:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4306:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4307:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4308:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+4309:             continue
+
      goto __pyx_L3_continue;
+
 4310: 
+
+4311:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4312:             # use x fill value
+
+4313:             out[out_i] = xfill > y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+4314:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4315: 
+
 4316:             # advance y location
+
+4317:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4318:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4319:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4320:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+4321:             continue
+
      goto __pyx_L3_continue;
+
 4322: 
+
+4323:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+4324:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 4325: 
+
 4326:         # each index in the out_index had to come from either x, y, or both
+
+4327:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+4328:             out[out_i] = x[xi] > y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) > (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4329:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4330:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4331: 
+
 4332:             # advance both locations
+
+4333:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4334:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4335:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4336:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4337: 
+
+4338:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4339:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4340:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4341:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4342: 
+
+4343:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 4344:             # use y fill value
+
+4345:             out[out_i] = x[xi] > yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
+
+4346:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4347: 
+
 4348:             # advance x location
+
+4349:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4350:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4351:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4352:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4353:         else:
+
 4354:             # use x fill value
+
+4355:             out[out_i] = xfill > y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4356:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4357: 
+
 4358:             # advance y location
+
+4359:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4360:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+4361:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4362:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4363: 
+
+4364:     return out, out_index, xfill > yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill > __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4364, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4364, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4365: 
+
 4366: 
+
 4367: @cython.wraparound(False)
+
 4368: @cython.boundscheck(False)
+
+4369: cdef inline tuple int_op_gt_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_gt_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_gt_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4370:                                               IntIndex xindex,
+
 4371:                                               int64_t xfill,
+
 4372:                                               int64_t[:] y_,
+
 4373:                                               IntIndex yindex,
+
 4374:                                               int64_t yfill):
+
 4375:     cdef:
+
 4376:         IntIndex out_index
+
+4377:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 4378:         int32_t xloc, yloc
+
 4379:         int32_t[:] xindices, yindices, out_indices
+
 4380:         int64_t[:] x, y
+
 4381:         ndarray[uint8_t, ndim=1] out
+
 4382: 
+
 4383:     # suppress Cython compiler warnings due to inlining
+
+4384:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4385:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4386: 
+
 4387:     # need to do this first to know size of result array
+
+4388:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4388, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+4389:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4389, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4389, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4389, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4389, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4389, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4389, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4389, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4389, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4389, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 4389, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4389, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4390: 
+
+4391:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4391, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4392:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4392, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4393:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4393, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 4394: 
+
 4395:     # walk the two SparseVectors, adding matched locations...
+
+4396:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+4397:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4398:             # use x fill value
+
+4399:             out[out_i] = xfill > y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4400:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4401:             continue
+
      goto __pyx_L3_continue;
+
 4402: 
+
+4403:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4404:             # use y fill value
+
+4405:             out[out_i] = x[xi] > yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
+
+4406:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4407:             continue
+
      goto __pyx_L3_continue;
+
 4408: 
+
+4409:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+4410:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 4411: 
+
 4412:         # each index in the out_index had to come from either x, y, or both
+
+4413:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+4414:             out[out_i] = x[xi] > y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) > (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+4415:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4416:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4417:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 4418:             # use y fill value
+
+4419:             out[out_i] = x[xi] > yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
+
+4420:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4421:         else:
+
 4422:             # use x fill value
+
+4423:             out[out_i] = xfill > y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+4424:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 4425: 
+
+4426:     return out, out_index, xfill > yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill > __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4426, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4426, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4427: 
+
 4428: 
+
+4429: cpdef sparse_gt_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_95sparse_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_gt_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_gt_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_95sparse_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_95sparse_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_gt_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_gt_int64", 1, 6, 6, 1); __PYX_ERR(2, 4429, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_gt_int64", 1, 6, 6, 2); __PYX_ERR(2, 4429, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_gt_int64", 1, 6, 6, 3); __PYX_ERR(2, 4429, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_gt_int64", 1, 6, 6, 4); __PYX_ERR(2, 4429, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_gt_int64", 1, 6, 6, 5); __PYX_ERR(2, 4429, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_gt_int64") < 0)) __PYX_ERR(2, 4429, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 4429, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4430, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 4431, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4432, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_gt_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4429, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 4430, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4432, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_94sparse_gt_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_94sparse_gt_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_gt_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 4429, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4429, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_gt_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4429, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4430:                                   SparseIndex xindex, int64_t xfill,
+
 4431:                                   int64_t[:] y,
+
 4432:                                   SparseIndex yindex, int64_t yfill):
+
 4433: 
+
+4434:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+4435:         return block_op_gt_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4435, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4435, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4435, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_gt_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4435, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+4436:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4436, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4436, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4436, __pyx_L1_error)
+
+4437:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+4438:         return int_op_gt_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4438, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4438, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4438, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_gt_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4438, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+4439:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4439, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4439, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4439, __pyx_L1_error)
+
 4440:     else:
+
+4441:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 4441, __pyx_L1_error)
+  }
+
 4442: 
+
 4443: 
+
+4444: cpdef sparse_fill_gt_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_97sparse_fill_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_gt_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_gt_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_97sparse_fill_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_97sparse_fill_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_gt_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_gt_int64", 1, 2, 2, 1); __PYX_ERR(2, 4444, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_gt_int64") < 0)) __PYX_ERR(2, 4444, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4444, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4445, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_gt_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4444, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_96sparse_fill_gt_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_96sparse_fill_gt_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_gt_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_gt_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4444, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4445:                                        int64_t yfill):
+
+4446:     return xfill > yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill > __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4446, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4447: 
+
 4448: 
+
 4449: @cython.wraparound(False)
+
 4450: @cython.boundscheck(False)
+
+4451: cdef inline tuple block_op_le_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_le_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_le_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4452:                                                 BlockIndex xindex,
+
 4453:                                                 float64_t xfill,
+
 4454:                                                 float64_t[:] y_,
+
 4455:                                                 BlockIndex yindex,
+
 4456:                                                 float64_t yfill):
+
 4457:     '''
+
 4458:     Binary operator on BlockIndex objects with fill values
+
 4459:     '''
+
 4460: 
+
 4461:     cdef:
+
 4462:         BlockIndex out_index
+
+4463:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+4464:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 4465:         int32_t xloc, yloc
+
+4466:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 4467: 
+
 4468:         float64_t[:] x, y
+
 4469:         ndarray[uint8_t, ndim=1] out
+
 4470: 
+
 4471:     # to suppress Cython warning
+
+4472:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4473:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4474: 
+
+4475:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4475, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+4476:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4476, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4476, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4476, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4476, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4476, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4476, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4476, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4476, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4476, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 4476, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4476, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4477: 
+
 4478:     # Wow, what a hack job. Need to do something about this
+
 4479: 
+
 4480:     # walk the two SparseVectors, adding matched locations...
+
+4481:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+4482:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4483:             # use y fill value
+
+4484:             out[out_i] = x[xi] <= yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
+
+4485:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4486: 
+
 4487:             # advance x location
+
+4488:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4489:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4490:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4491:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+4492:             continue
+
      goto __pyx_L3_continue;
+
 4493: 
+
+4494:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4495:             # use x fill value
+
+4496:             out[out_i] = xfill <= y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+4497:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4498: 
+
 4499:             # advance y location
+
+4500:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4501:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4502:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4503:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+4504:             continue
+
      goto __pyx_L3_continue;
+
 4505: 
+
+4506:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+4507:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 4508: 
+
 4509:         # each index in the out_index had to come from either x, y, or both
+
+4510:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+4511:             out[out_i] = x[xi] <= y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) <= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4512:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4513:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4514: 
+
 4515:             # advance both locations
+
+4516:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4517:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4518:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4519:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4520: 
+
+4521:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4522:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4523:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4524:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4525: 
+
+4526:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 4527:             # use y fill value
+
+4528:             out[out_i] = x[xi] <= yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
+
+4529:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4530: 
+
 4531:             # advance x location
+
+4532:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4533:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4534:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4535:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4536:         else:
+
 4537:             # use x fill value
+
+4538:             out[out_i] = xfill <= y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4539:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4540: 
+
 4541:             # advance y location
+
+4542:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4543:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+4544:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4545:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4546: 
+
+4547:     return out, out_index, xfill <= yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill <= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4547, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4547, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4548: 
+
 4549: 
+
 4550: @cython.wraparound(False)
+
 4551: @cython.boundscheck(False)
+
+4552: cdef inline tuple int_op_le_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_le_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_le_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4553:                                               IntIndex xindex,
+
 4554:                                               float64_t xfill,
+
 4555:                                               float64_t[:] y_,
+
 4556:                                               IntIndex yindex,
+
 4557:                                               float64_t yfill):
+
 4558:     cdef:
+
 4559:         IntIndex out_index
+
+4560:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 4561:         int32_t xloc, yloc
+
 4562:         int32_t[:] xindices, yindices, out_indices
+
 4563:         float64_t[:] x, y
+
 4564:         ndarray[uint8_t, ndim=1] out
+
 4565: 
+
 4566:     # suppress Cython compiler warnings due to inlining
+
+4567:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4568:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4569: 
+
 4570:     # need to do this first to know size of result array
+
+4571:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4571, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+4572:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4572, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4572, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 4572, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4572, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4573: 
+
+4574:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4574, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4575:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4575, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4576:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4576, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 4577: 
+
 4578:     # walk the two SparseVectors, adding matched locations...
+
+4579:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+4580:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4581:             # use x fill value
+
+4582:             out[out_i] = xfill <= y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4583:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4584:             continue
+
      goto __pyx_L3_continue;
+
 4585: 
+
+4586:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4587:             # use y fill value
+
+4588:             out[out_i] = x[xi] <= yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
+
+4589:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4590:             continue
+
      goto __pyx_L3_continue;
+
 4591: 
+
+4592:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+4593:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 4594: 
+
 4595:         # each index in the out_index had to come from either x, y, or both
+
+4596:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+4597:             out[out_i] = x[xi] <= y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) <= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+4598:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4599:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4600:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 4601:             # use y fill value
+
+4602:             out[out_i] = x[xi] <= yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
+
+4603:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4604:         else:
+
 4605:             # use x fill value
+
+4606:             out[out_i] = xfill <= y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+4607:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 4608: 
+
+4609:     return out, out_index, xfill <= yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill <= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4609, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4609, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4610: 
+
 4611: 
+
+4612: cpdef sparse_le_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_99sparse_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_le_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_le_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_99sparse_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_99sparse_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_le_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_le_float64", 1, 6, 6, 1); __PYX_ERR(2, 4612, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_le_float64", 1, 6, 6, 2); __PYX_ERR(2, 4612, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_le_float64", 1, 6, 6, 3); __PYX_ERR(2, 4612, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_le_float64", 1, 6, 6, 4); __PYX_ERR(2, 4612, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_le_float64", 1, 6, 6, 5); __PYX_ERR(2, 4612, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_le_float64") < 0)) __PYX_ERR(2, 4612, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 4612, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4613, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 4614, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4615, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_le_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4612, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 4613, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4615, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_98sparse_le_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_98sparse_le_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_le_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 4612, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4612, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_le_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4612, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4613:                                   SparseIndex xindex, float64_t xfill,
+
 4614:                                   float64_t[:] y,
+
 4615:                                   SparseIndex yindex, float64_t yfill):
+
 4616: 
+
+4617:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+4618:         return block_op_le_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4618, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4618, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4618, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_le_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4618, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+4619:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4619, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4619, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4619, __pyx_L1_error)
+
+4620:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+4621:         return int_op_le_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4621, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4621, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4621, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_le_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4621, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+4622:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4622, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4622, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4622, __pyx_L1_error)
+
 4623:     else:
+
+4624:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 4624, __pyx_L1_error)
+  }
+
 4625: 
+
 4626: 
+
+4627: cpdef sparse_fill_le_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_101sparse_fill_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_le_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_le_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_101sparse_fill_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_101sparse_fill_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_le_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_le_float64", 1, 2, 2, 1); __PYX_ERR(2, 4627, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_le_float64") < 0)) __PYX_ERR(2, 4627, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4627, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4628, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_le_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4627, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_100sparse_fill_le_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_100sparse_fill_le_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_le_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_le_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4627, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4628:                                        float64_t yfill):
+
+4629:     return xfill <= yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill <= __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4629, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4630: 
+
 4631: 
+
 4632: @cython.wraparound(False)
+
 4633: @cython.boundscheck(False)
+
+4634: cdef inline tuple block_op_le_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_le_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_le_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4635:                                                 BlockIndex xindex,
+
 4636:                                                 int64_t xfill,
+
 4637:                                                 int64_t[:] y_,
+
 4638:                                                 BlockIndex yindex,
+
 4639:                                                 int64_t yfill):
+
 4640:     '''
+
 4641:     Binary operator on BlockIndex objects with fill values
+
 4642:     '''
+
 4643: 
+
 4644:     cdef:
+
 4645:         BlockIndex out_index
+
+4646:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+4647:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 4648:         int32_t xloc, yloc
+
+4649:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 4650: 
+
 4651:         int64_t[:] x, y
+
 4652:         ndarray[uint8_t, ndim=1] out
+
 4653: 
+
 4654:     # to suppress Cython warning
+
+4655:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4656:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4657: 
+
+4658:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4658, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+4659:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4659, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4659, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4659, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4659, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4659, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4659, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4659, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4659, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4659, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 4659, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4659, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4660: 
+
 4661:     # Wow, what a hack job. Need to do something about this
+
 4662: 
+
 4663:     # walk the two SparseVectors, adding matched locations...
+
+4664:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+4665:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4666:             # use y fill value
+
+4667:             out[out_i] = x[xi] <= yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
+
+4668:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4669: 
+
 4670:             # advance x location
+
+4671:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4672:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4673:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4674:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+4675:             continue
+
      goto __pyx_L3_continue;
+
 4676: 
+
+4677:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4678:             # use x fill value
+
+4679:             out[out_i] = xfill <= y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+4680:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4681: 
+
 4682:             # advance y location
+
+4683:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4684:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4685:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4686:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+4687:             continue
+
      goto __pyx_L3_continue;
+
 4688: 
+
+4689:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+4690:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 4691: 
+
 4692:         # each index in the out_index had to come from either x, y, or both
+
+4693:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+4694:             out[out_i] = x[xi] <= y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) <= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4695:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4696:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4697: 
+
 4698:             # advance both locations
+
+4699:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4700:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4701:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4702:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4703: 
+
+4704:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4705:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4706:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4707:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4708: 
+
+4709:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 4710:             # use y fill value
+
+4711:             out[out_i] = x[xi] <= yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
+
+4712:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4713: 
+
 4714:             # advance x location
+
+4715:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4716:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4717:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4718:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4719:         else:
+
 4720:             # use x fill value
+
+4721:             out[out_i] = xfill <= y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4722:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4723: 
+
 4724:             # advance y location
+
+4725:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4726:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+4727:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4728:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4729: 
+
+4730:     return out, out_index, xfill <= yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill <= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4730, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4730, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4731: 
+
 4732: 
+
 4733: @cython.wraparound(False)
+
 4734: @cython.boundscheck(False)
+
+4735: cdef inline tuple int_op_le_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_le_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_le_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4736:                                               IntIndex xindex,
+
 4737:                                               int64_t xfill,
+
 4738:                                               int64_t[:] y_,
+
 4739:                                               IntIndex yindex,
+
 4740:                                               int64_t yfill):
+
 4741:     cdef:
+
 4742:         IntIndex out_index
+
+4743:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 4744:         int32_t xloc, yloc
+
 4745:         int32_t[:] xindices, yindices, out_indices
+
 4746:         int64_t[:] x, y
+
 4747:         ndarray[uint8_t, ndim=1] out
+
 4748: 
+
 4749:     # suppress Cython compiler warnings due to inlining
+
+4750:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4751:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4752: 
+
 4753:     # need to do this first to know size of result array
+
+4754:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4754, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+4755:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4755, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4755, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4755, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4755, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4755, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4755, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4755, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4755, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4755, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 4755, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4755, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4756: 
+
+4757:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4757, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4758:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4758, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4759:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4759, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 4760: 
+
 4761:     # walk the two SparseVectors, adding matched locations...
+
+4762:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+4763:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4764:             # use x fill value
+
+4765:             out[out_i] = xfill <= y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4766:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4767:             continue
+
      goto __pyx_L3_continue;
+
 4768: 
+
+4769:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4770:             # use y fill value
+
+4771:             out[out_i] = x[xi] <= yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
+
+4772:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4773:             continue
+
      goto __pyx_L3_continue;
+
 4774: 
+
+4775:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+4776:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 4777: 
+
 4778:         # each index in the out_index had to come from either x, y, or both
+
+4779:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+4780:             out[out_i] = x[xi] <= y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) <= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+4781:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4782:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4783:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 4784:             # use y fill value
+
+4785:             out[out_i] = x[xi] <= yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
+
+4786:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4787:         else:
+
 4788:             # use x fill value
+
+4789:             out[out_i] = xfill <= y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+4790:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 4791: 
+
+4792:     return out, out_index, xfill <= yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill <= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4792, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4792, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4793: 
+
 4794: 
+
+4795: cpdef sparse_le_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_103sparse_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_le_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_le_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_103sparse_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_103sparse_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_le_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_le_int64", 1, 6, 6, 1); __PYX_ERR(2, 4795, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_le_int64", 1, 6, 6, 2); __PYX_ERR(2, 4795, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_le_int64", 1, 6, 6, 3); __PYX_ERR(2, 4795, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_le_int64", 1, 6, 6, 4); __PYX_ERR(2, 4795, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_le_int64", 1, 6, 6, 5); __PYX_ERR(2, 4795, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_le_int64") < 0)) __PYX_ERR(2, 4795, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 4795, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4796, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 4797, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4798, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_le_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4795, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 4796, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4798, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_102sparse_le_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_102sparse_le_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_le_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 4795, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4795, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_le_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4795, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4796:                                   SparseIndex xindex, int64_t xfill,
+
 4797:                                   int64_t[:] y,
+
 4798:                                   SparseIndex yindex, int64_t yfill):
+
 4799: 
+
+4800:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+4801:         return block_op_le_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4801, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4801, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4801, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_le_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4801, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+4802:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4802, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4802, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4802, __pyx_L1_error)
+
+4803:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+4804:         return int_op_le_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4804, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4804, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4804, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_le_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4804, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+4805:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4805, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4805, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4805, __pyx_L1_error)
+
 4806:     else:
+
+4807:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 4807, __pyx_L1_error)
+  }
+
 4808: 
+
 4809: 
+
+4810: cpdef sparse_fill_le_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_105sparse_fill_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_le_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_le_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_105sparse_fill_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_105sparse_fill_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_le_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_le_int64", 1, 2, 2, 1); __PYX_ERR(2, 4810, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_le_int64") < 0)) __PYX_ERR(2, 4810, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4810, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4811, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_le_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4810, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_104sparse_fill_le_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_104sparse_fill_le_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_le_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_le_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4810, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4811:                                        int64_t yfill):
+
+4812:     return xfill <= yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill <= __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4812, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4813: 
+
 4814: 
+
 4815: @cython.wraparound(False)
+
 4816: @cython.boundscheck(False)
+
+4817: cdef inline tuple block_op_ge_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_ge_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_ge_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4818:                                                 BlockIndex xindex,
+
 4819:                                                 float64_t xfill,
+
 4820:                                                 float64_t[:] y_,
+
 4821:                                                 BlockIndex yindex,
+
 4822:                                                 float64_t yfill):
+
 4823:     '''
+
 4824:     Binary operator on BlockIndex objects with fill values
+
 4825:     '''
+
 4826: 
+
 4827:     cdef:
+
 4828:         BlockIndex out_index
+
+4829:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+4830:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 4831:         int32_t xloc, yloc
+
+4832:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 4833: 
+
 4834:         float64_t[:] x, y
+
 4835:         ndarray[uint8_t, ndim=1] out
+
 4836: 
+
 4837:     # to suppress Cython warning
+
+4838:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4839:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4840: 
+
+4841:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4841, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+4842:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4842, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4842, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4842, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4842, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4842, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4842, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4842, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4842, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4842, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 4842, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4842, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4843: 
+
 4844:     # Wow, what a hack job. Need to do something about this
+
 4845: 
+
 4846:     # walk the two SparseVectors, adding matched locations...
+
+4847:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+4848:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4849:             # use y fill value
+
+4850:             out[out_i] = x[xi] >= yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
+
+4851:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4852: 
+
 4853:             # advance x location
+
+4854:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4855:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4856:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4857:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+4858:             continue
+
      goto __pyx_L3_continue;
+
 4859: 
+
+4860:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4861:             # use x fill value
+
+4862:             out[out_i] = xfill >= y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+4863:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4864: 
+
 4865:             # advance y location
+
+4866:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4867:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4868:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4869:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+4870:             continue
+
      goto __pyx_L3_continue;
+
 4871: 
+
+4872:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+4873:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 4874: 
+
 4875:         # each index in the out_index had to come from either x, y, or both
+
+4876:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+4877:             out[out_i] = x[xi] >= y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) >= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4878:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4879:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4880: 
+
 4881:             # advance both locations
+
+4882:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4883:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4884:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4885:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4886: 
+
+4887:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4888:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4889:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4890:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4891: 
+
+4892:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 4893:             # use y fill value
+
+4894:             out[out_i] = x[xi] >= yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
+
+4895:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4896: 
+
 4897:             # advance x location
+
+4898:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4899:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4900:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4901:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4902:         else:
+
 4903:             # use x fill value
+
+4904:             out[out_i] = xfill >= y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4905:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4906: 
+
 4907:             # advance y location
+
+4908:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4909:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+4910:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4911:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4912: 
+
+4913:     return out, out_index, xfill >= yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill >= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4913, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4913, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4914: 
+
 4915: 
+
 4916: @cython.wraparound(False)
+
 4917: @cython.boundscheck(False)
+
+4918: cdef inline tuple int_op_ge_float64(float64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_ge_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_ge_float64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4919:                                               IntIndex xindex,
+
 4920:                                               float64_t xfill,
+
 4921:                                               float64_t[:] y_,
+
 4922:                                               IntIndex yindex,
+
 4923:                                               float64_t yfill):
+
 4924:     cdef:
+
 4925:         IntIndex out_index
+
+4926:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 4927:         int32_t xloc, yloc
+
 4928:         int32_t[:] xindices, yindices, out_indices
+
 4929:         float64_t[:] x, y
+
 4930:         ndarray[uint8_t, ndim=1] out
+
 4931: 
+
 4932:     # suppress Cython compiler warnings due to inlining
+
+4933:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4934:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4935: 
+
 4936:     # need to do this first to know size of result array
+
+4937:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4937, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+4938:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4938, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4938, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4938, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4938, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4938, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4938, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4938, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4938, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4938, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 4938, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4938, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4939: 
+
+4940:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4940, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4941:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4941, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4942:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4942, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 4943: 
+
 4944:     # walk the two SparseVectors, adding matched locations...
+
+4945:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+4946:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4947:             # use x fill value
+
+4948:             out[out_i] = xfill >= y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+4949:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4950:             continue
+
      goto __pyx_L3_continue;
+
 4951: 
+
+4952:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4953:             # use y fill value
+
+4954:             out[out_i] = x[xi] >= yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
+
+4955:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4956:             continue
+
      goto __pyx_L3_continue;
+
 4957: 
+
+4958:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+4959:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 4960: 
+
 4961:         # each index in the out_index had to come from either x, y, or both
+
+4962:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+4963:             out[out_i] = x[xi] >= y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) >= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+4964:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4965:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4966:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 4967:             # use y fill value
+
+4968:             out[out_i] = x[xi] >= yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
+
+4969:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4970:         else:
+
 4971:             # use x fill value
+
+4972:             out[out_i] = xfill >= y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+4973:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 4974: 
+
+4975:     return out, out_index, xfill >= yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill >= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4975, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4975, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4976: 
+
 4977: 
+
+4978: cpdef sparse_ge_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_107sparse_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_ge_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_ge_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_107sparse_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_107sparse_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_ge_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ge_float64", 1, 6, 6, 1); __PYX_ERR(2, 4978, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ge_float64", 1, 6, 6, 2); __PYX_ERR(2, 4978, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ge_float64", 1, 6, 6, 3); __PYX_ERR(2, 4978, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ge_float64", 1, 6, 6, 4); __PYX_ERR(2, 4978, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ge_float64", 1, 6, 6, 5); __PYX_ERR(2, 4978, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_ge_float64") < 0)) __PYX_ERR(2, 4978, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 4978, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4979, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 4980, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4981, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_ge_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4978, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 4979, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4981, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_106sparse_ge_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_106sparse_ge_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_ge_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 4978, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4978, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_ge_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4978, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4979:                                   SparseIndex xindex, float64_t xfill,
+
 4980:                                   float64_t[:] y,
+
 4981:                                   SparseIndex yindex, float64_t yfill):
+
 4982: 
+
+4983:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+4984:         return block_op_ge_float64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4984, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4984, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4984, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_ge_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4984, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+4985:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4985, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4985, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4985, __pyx_L1_error)
+
+4986:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+4987:         return int_op_ge_float64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4987, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4987, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4987, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_ge_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4987, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+4988:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4988, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4988, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4988, __pyx_L1_error)
+
 4989:     else:
+
+4990:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 4990, __pyx_L1_error)
+  }
+
 4991: 
+
 4992: 
+
+4993: cpdef sparse_fill_ge_float64(float64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_109sparse_fill_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_ge_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_ge_float64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_109sparse_fill_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_109sparse_fill_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_float64_t __pyx_v_xfill;
+  __pyx_t_5numpy_float64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_ge_float64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_ge_float64", 1, 2, 2, 1); __PYX_ERR(2, 4993, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_ge_float64") < 0)) __PYX_ERR(2, 4993, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4993, __pyx_L3_error)
+    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4994, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_ge_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4993, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_108sparse_fill_ge_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_108sparse_fill_ge_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_ge_float64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_ge_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4993, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 4994:                                        float64_t yfill):
+
+4995:     return xfill >= yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill >= __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4995, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 4996: 
+
 4997: 
+
 4998: @cython.wraparound(False)
+
 4999: @cython.boundscheck(False)
+
+5000: cdef inline tuple block_op_ge_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_ge_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_ge_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5001:                                                 BlockIndex xindex,
+
 5002:                                                 int64_t xfill,
+
 5003:                                                 int64_t[:] y_,
+
 5004:                                                 BlockIndex yindex,
+
 5005:                                                 int64_t yfill):
+
 5006:     '''
+
 5007:     Binary operator on BlockIndex objects with fill values
+
 5008:     '''
+
 5009: 
+
 5010:     cdef:
+
 5011:         BlockIndex out_index
+
+5012:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+5013:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 5014:         int32_t xloc, yloc
+
+5015:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 5016: 
+
 5017:         int64_t[:] x, y
+
 5018:         ndarray[uint8_t, ndim=1] out
+
 5019: 
+
 5020:     # to suppress Cython warning
+
+5021:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5022:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5023: 
+
+5024:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5024, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+5025:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5025, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5025, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5025, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5025, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5025, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5025, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5025, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5025, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5025, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 5025, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5025, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5026: 
+
 5027:     # Wow, what a hack job. Need to do something about this
+
 5028: 
+
 5029:     # walk the two SparseVectors, adding matched locations...
+
+5030:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+5031:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5032:             # use y fill value
+
+5033:             out[out_i] = x[xi] >= yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
+
+5034:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5035: 
+
 5036:             # advance x location
+
+5037:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5038:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5039:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5040:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+5041:             continue
+
      goto __pyx_L3_continue;
+
 5042: 
+
+5043:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5044:             # use x fill value
+
+5045:             out[out_i] = xfill >= y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+5046:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5047: 
+
 5048:             # advance y location
+
+5049:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5050:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5051:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5052:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+5053:             continue
+
      goto __pyx_L3_continue;
+
 5054: 
+
+5055:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+5056:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 5057: 
+
 5058:         # each index in the out_index had to come from either x, y, or both
+
+5059:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+5060:             out[out_i] = x[xi] >= y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) >= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5061:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5062:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5063: 
+
 5064:             # advance both locations
+
+5065:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5066:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5067:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5068:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5069: 
+
+5070:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5071:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5072:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5073:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5074: 
+
+5075:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 5076:             # use y fill value
+
+5077:             out[out_i] = x[xi] >= yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
+
+5078:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5079: 
+
 5080:             # advance x location
+
+5081:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5082:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5083:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5084:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5085:         else:
+
 5086:             # use x fill value
+
+5087:             out[out_i] = xfill >= y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5088:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5089: 
+
 5090:             # advance y location
+
+5091:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5092:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+5093:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5094:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5095: 
+
+5096:     return out, out_index, xfill >= yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill >= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5096, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5096, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5097: 
+
 5098: 
+
 5099: @cython.wraparound(False)
+
 5100: @cython.boundscheck(False)
+
+5101: cdef inline tuple int_op_ge_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_ge_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_ge_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5102:                                               IntIndex xindex,
+
 5103:                                               int64_t xfill,
+
 5104:                                               int64_t[:] y_,
+
 5105:                                               IntIndex yindex,
+
 5106:                                               int64_t yfill):
+
 5107:     cdef:
+
 5108:         IntIndex out_index
+
+5109:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 5110:         int32_t xloc, yloc
+
 5111:         int32_t[:] xindices, yindices, out_indices
+
 5112:         int64_t[:] x, y
+
 5113:         ndarray[uint8_t, ndim=1] out
+
 5114: 
+
 5115:     # suppress Cython compiler warnings due to inlining
+
+5116:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5117:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5118: 
+
 5119:     # need to do this first to know size of result array
+
+5120:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5120, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+5121:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5121, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5121, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5121, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5121, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5121, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5121, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5121, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5121, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5121, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 5121, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5121, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5122: 
+
+5123:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5123, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5124:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5124, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5125:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5125, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 5126: 
+
 5127:     # walk the two SparseVectors, adding matched locations...
+
+5128:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+5129:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5130:             # use x fill value
+
+5131:             out[out_i] = xfill >= y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5132:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5133:             continue
+
      goto __pyx_L3_continue;
+
 5134: 
+
+5135:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5136:             # use y fill value
+
+5137:             out[out_i] = x[xi] >= yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
+
+5138:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5139:             continue
+
      goto __pyx_L3_continue;
+
 5140: 
+
+5141:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+5142:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 5143: 
+
 5144:         # each index in the out_index had to come from either x, y, or both
+
+5145:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+5146:             out[out_i] = x[xi] >= y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) >= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+5147:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5148:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5149:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 5150:             # use y fill value
+
+5151:             out[out_i] = x[xi] >= yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
+
+5152:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5153:         else:
+
 5154:             # use x fill value
+
+5155:             out[out_i] = xfill >= y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+5156:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 5157: 
+
+5158:     return out, out_index, xfill >= yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill >= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5158, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5158, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5159: 
+
 5160: 
+
+5161: cpdef sparse_ge_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_111sparse_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_ge_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_ge_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_111sparse_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_111sparse_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_ge_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ge_int64", 1, 6, 6, 1); __PYX_ERR(2, 5161, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ge_int64", 1, 6, 6, 2); __PYX_ERR(2, 5161, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ge_int64", 1, 6, 6, 3); __PYX_ERR(2, 5161, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ge_int64", 1, 6, 6, 4); __PYX_ERR(2, 5161, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_ge_int64", 1, 6, 6, 5); __PYX_ERR(2, 5161, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_ge_int64") < 0)) __PYX_ERR(2, 5161, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 5161, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5162, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 5163, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5164, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_ge_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5161, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 5162, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5164, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_110sparse_ge_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_110sparse_ge_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_ge_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 5161, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5161, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_ge_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5161, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5162:                                   SparseIndex xindex, int64_t xfill,
+
 5163:                                   int64_t[:] y,
+
 5164:                                   SparseIndex yindex, int64_t yfill):
+
 5165: 
+
+5166:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+5167:         return block_op_ge_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5167, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5167, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5167, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_ge_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5167, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+5168:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5168, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5168, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5168, __pyx_L1_error)
+
+5169:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+5170:         return int_op_ge_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5170, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5170, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5170, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_ge_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5170, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+5171:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5171, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5171, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5171, __pyx_L1_error)
+
 5172:     else:
+
+5173:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 5173, __pyx_L1_error)
+  }
+
 5174: 
+
 5175: 
+
+5176: cpdef sparse_fill_ge_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_113sparse_fill_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_ge_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_ge_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_113sparse_fill_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_113sparse_fill_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_ge_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_ge_int64", 1, 2, 2, 1); __PYX_ERR(2, 5176, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_ge_int64") < 0)) __PYX_ERR(2, 5176, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5176, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5177, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_ge_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5176, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_112sparse_fill_ge_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_112sparse_fill_ge_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_ge_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_ge_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5176, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5177:                                        int64_t yfill):
+
+5178:     return xfill >= yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill >= __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5178, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5179: 
+
 5180: 
+
 5181: @cython.wraparound(False)
+
 5182: @cython.boundscheck(False)
+
+5183: cdef inline tuple block_op_and_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_and_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_and_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5184:                                                 BlockIndex xindex,
+
 5185:                                                 int64_t xfill,
+
 5186:                                                 int64_t[:] y_,
+
 5187:                                                 BlockIndex yindex,
+
 5188:                                                 int64_t yfill):
+
 5189:     '''
+
 5190:     Binary operator on BlockIndex objects with fill values
+
 5191:     '''
+
 5192: 
+
 5193:     cdef:
+
 5194:         BlockIndex out_index
+
+5195:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+5196:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 5197:         int32_t xloc, yloc
+
+5198:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 5199: 
+
 5200:         int64_t[:] x, y
+
 5201:         ndarray[uint8_t, ndim=1] out
+
 5202: 
+
 5203:     # to suppress Cython warning
+
+5204:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5205:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5206: 
+
+5207:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5207, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+5208:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5208, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5208, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5208, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5208, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5208, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5208, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5208, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5208, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5208, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 5208, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5208, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5209: 
+
 5210:     # Wow, what a hack job. Need to do something about this
+
 5211: 
+
 5212:     # walk the two SparseVectors, adding matched locations...
+
+5213:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+5214:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5215:             # use y fill value
+
+5216:             out[out_i] = x[xi] & yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
+
+5217:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5218: 
+
 5219:             # advance x location
+
+5220:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5221:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5222:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5223:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+5224:             continue
+
      goto __pyx_L3_continue;
+
 5225: 
+
+5226:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5227:             # use x fill value
+
+5228:             out[out_i] = xfill & y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+5229:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5230: 
+
 5231:             # advance y location
+
+5232:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5233:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5234:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5235:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+5236:             continue
+
      goto __pyx_L3_continue;
+
 5237: 
+
+5238:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+5239:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 5240: 
+
 5241:         # each index in the out_index had to come from either x, y, or both
+
+5242:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+5243:             out[out_i] = x[xi] & y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) & (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5244:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5245:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5246: 
+
 5247:             # advance both locations
+
+5248:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5249:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5250:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5251:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5252: 
+
+5253:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5254:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5255:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5256:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5257: 
+
+5258:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 5259:             # use y fill value
+
+5260:             out[out_i] = x[xi] & yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
+
+5261:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5262: 
+
 5263:             # advance x location
+
+5264:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5265:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5266:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5267:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5268:         else:
+
 5269:             # use x fill value
+
+5270:             out[out_i] = xfill & y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5271:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5272: 
+
 5273:             # advance y location
+
+5274:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5275:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+5276:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5277:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5278: 
+
+5279:     return out, out_index, xfill & yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill & __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5279, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5279, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5280: 
+
 5281: 
+
 5282: @cython.wraparound(False)
+
 5283: @cython.boundscheck(False)
+
+5284: cdef inline tuple int_op_and_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_and_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_and_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5285:                                               IntIndex xindex,
+
 5286:                                               int64_t xfill,
+
 5287:                                               int64_t[:] y_,
+
 5288:                                               IntIndex yindex,
+
 5289:                                               int64_t yfill):
+
 5290:     cdef:
+
 5291:         IntIndex out_index
+
+5292:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 5293:         int32_t xloc, yloc
+
 5294:         int32_t[:] xindices, yindices, out_indices
+
 5295:         int64_t[:] x, y
+
 5296:         ndarray[uint8_t, ndim=1] out
+
 5297: 
+
 5298:     # suppress Cython compiler warnings due to inlining
+
+5299:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5300:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5301: 
+
 5302:     # need to do this first to know size of result array
+
+5303:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5303, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+5304:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5304, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5304, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5304, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5304, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5304, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5304, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5304, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5304, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5304, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 5304, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5304, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5305: 
+
+5306:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5306, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5307:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5307, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5308:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5308, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 5309: 
+
 5310:     # walk the two SparseVectors, adding matched locations...
+
+5311:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+5312:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5313:             # use x fill value
+
+5314:             out[out_i] = xfill & y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5315:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5316:             continue
+
      goto __pyx_L3_continue;
+
 5317: 
+
+5318:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5319:             # use y fill value
+
+5320:             out[out_i] = x[xi] & yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
+
+5321:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5322:             continue
+
      goto __pyx_L3_continue;
+
 5323: 
+
+5324:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+5325:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 5326: 
+
 5327:         # each index in the out_index had to come from either x, y, or both
+
+5328:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+5329:             out[out_i] = x[xi] & y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) & (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+5330:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5331:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5332:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 5333:             # use y fill value
+
+5334:             out[out_i] = x[xi] & yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
+
+5335:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5336:         else:
+
 5337:             # use x fill value
+
+5338:             out[out_i] = xfill & y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+5339:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 5340: 
+
+5341:     return out, out_index, xfill & yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill & __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5341, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5341, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5342: 
+
 5343: 
+
+5344: cpdef sparse_and_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_115sparse_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_and_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_and_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_115sparse_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_115sparse_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_and_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_and_int64", 1, 6, 6, 1); __PYX_ERR(2, 5344, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_and_int64", 1, 6, 6, 2); __PYX_ERR(2, 5344, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_and_int64", 1, 6, 6, 3); __PYX_ERR(2, 5344, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_and_int64", 1, 6, 6, 4); __PYX_ERR(2, 5344, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_and_int64", 1, 6, 6, 5); __PYX_ERR(2, 5344, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_and_int64") < 0)) __PYX_ERR(2, 5344, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 5344, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5345, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 5346, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5347, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_and_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5344, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 5345, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5347, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_114sparse_and_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_114sparse_and_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_and_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 5344, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5344, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_and_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5344, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5345:                                   SparseIndex xindex, int64_t xfill,
+
 5346:                                   int64_t[:] y,
+
 5347:                                   SparseIndex yindex, int64_t yfill):
+
 5348: 
+
+5349:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+5350:         return block_op_and_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5350, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5350, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5350, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_and_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5350, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+5351:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5351, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5351, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5351, __pyx_L1_error)
+
+5352:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+5353:         return int_op_and_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5353, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5353, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5353, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_and_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5353, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+5354:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5354, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5354, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5354, __pyx_L1_error)
+
 5355:     else:
+
+5356:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 5356, __pyx_L1_error)
+  }
+
 5357: 
+
 5358: 
+
+5359: cpdef sparse_fill_and_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_117sparse_fill_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_and_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_and_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_117sparse_fill_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_117sparse_fill_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_and_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_and_int64", 1, 2, 2, 1); __PYX_ERR(2, 5359, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_and_int64") < 0)) __PYX_ERR(2, 5359, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5359, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5360, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_and_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5359, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_116sparse_fill_and_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_116sparse_fill_and_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_and_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_and_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5359, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5360:                                        int64_t yfill):
+
+5361:     return xfill & yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill & __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5361, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5362: 
+
 5363: 
+
 5364: @cython.wraparound(False)
+
 5365: @cython.boundscheck(False)
+
+5366: cdef inline tuple block_op_and_uint8(uint8_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_and_uint8(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_and_uint8", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5367:                                                 BlockIndex xindex,
+
 5368:                                                 uint8_t xfill,
+
 5369:                                                 uint8_t[:] y_,
+
 5370:                                                 BlockIndex yindex,
+
 5371:                                                 uint8_t yfill):
+
 5372:     '''
+
 5373:     Binary operator on BlockIndex objects with fill values
+
 5374:     '''
+
 5375: 
+
 5376:     cdef:
+
 5377:         BlockIndex out_index
+
+5378:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+5379:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 5380:         int32_t xloc, yloc
+
+5381:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 5382: 
+
 5383:         uint8_t[:] x, y
+
 5384:         ndarray[uint8_t, ndim=1] out
+
 5385: 
+
 5386:     # to suppress Cython warning
+
+5387:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5388:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5389: 
+
+5390:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5390, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+5391:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5391, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5391, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5391, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5391, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5391, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5391, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5391, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5391, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5391, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 5391, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5391, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5392: 
+
 5393:     # Wow, what a hack job. Need to do something about this
+
 5394: 
+
 5395:     # walk the two SparseVectors, adding matched locations...
+
+5396:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+5397:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5398:             # use y fill value
+
+5399:             out[out_i] = x[xi] & yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
+
+5400:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5401: 
+
 5402:             # advance x location
+
+5403:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5404:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5405:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5406:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+5407:             continue
+
      goto __pyx_L3_continue;
+
 5408: 
+
+5409:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5410:             # use x fill value
+
+5411:             out[out_i] = xfill & y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+5412:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5413: 
+
 5414:             # advance y location
+
+5415:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5416:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5417:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5418:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+5419:             continue
+
      goto __pyx_L3_continue;
+
 5420: 
+
+5421:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+5422:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 5423: 
+
 5424:         # each index in the out_index had to come from either x, y, or both
+
+5425:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+5426:             out[out_i] = x[xi] & y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) & (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5427:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5428:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5429: 
+
 5430:             # advance both locations
+
+5431:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5432:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5433:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5434:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5435: 
+
+5436:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5437:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5438:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5439:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5440: 
+
+5441:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 5442:             # use y fill value
+
+5443:             out[out_i] = x[xi] & yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
+
+5444:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5445: 
+
 5446:             # advance x location
+
+5447:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5448:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5449:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5450:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5451:         else:
+
 5452:             # use x fill value
+
+5453:             out[out_i] = xfill & y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5454:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5455: 
+
 5456:             # advance y location
+
+5457:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5458:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+5459:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5460:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5461: 
+
+5462:     return out, out_index, xfill & yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_xfill & __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5462, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5462, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5463: 
+
 5464: 
+
 5465: @cython.wraparound(False)
+
 5466: @cython.boundscheck(False)
+
+5467: cdef inline tuple int_op_and_uint8(uint8_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_and_uint8(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_and_uint8", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5468:                                               IntIndex xindex,
+
 5469:                                               uint8_t xfill,
+
 5470:                                               uint8_t[:] y_,
+
 5471:                                               IntIndex yindex,
+
 5472:                                               uint8_t yfill):
+
 5473:     cdef:
+
 5474:         IntIndex out_index
+
+5475:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 5476:         int32_t xloc, yloc
+
 5477:         int32_t[:] xindices, yindices, out_indices
+
 5478:         uint8_t[:] x, y
+
 5479:         ndarray[uint8_t, ndim=1] out
+
 5480: 
+
 5481:     # suppress Cython compiler warnings due to inlining
+
+5482:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5483:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5484: 
+
 5485:     # need to do this first to know size of result array
+
+5486:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5486, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+5487:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5487, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5487, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5487, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5487, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5487, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5487, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5487, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5487, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5487, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 5487, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5487, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5488: 
+
+5489:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5489, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5490:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5490, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5491:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5491, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 5492: 
+
 5493:     # walk the two SparseVectors, adding matched locations...
+
+5494:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+5495:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5496:             # use x fill value
+
+5497:             out[out_i] = xfill & y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5498:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5499:             continue
+
      goto __pyx_L3_continue;
+
 5500: 
+
+5501:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5502:             # use y fill value
+
+5503:             out[out_i] = x[xi] & yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
+
+5504:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5505:             continue
+
      goto __pyx_L3_continue;
+
 5506: 
+
+5507:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+5508:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 5509: 
+
 5510:         # each index in the out_index had to come from either x, y, or both
+
+5511:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+5512:             out[out_i] = x[xi] & y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) & (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+5513:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5514:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5515:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 5516:             # use y fill value
+
+5517:             out[out_i] = x[xi] & yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
+
+5518:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5519:         else:
+
 5520:             # use x fill value
+
+5521:             out[out_i] = xfill & y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+5522:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 5523: 
+
+5524:     return out, out_index, xfill & yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_xfill & __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5524, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5524, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5525: 
+
 5526: 
+
+5527: cpdef sparse_and_uint8(uint8_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_119sparse_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_and_uint8(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_and_uint8", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_119sparse_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_119sparse_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_uint8_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_uint8_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_and_uint8 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_and_uint8", 1, 6, 6, 1); __PYX_ERR(2, 5527, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_and_uint8", 1, 6, 6, 2); __PYX_ERR(2, 5527, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_and_uint8", 1, 6, 6, 3); __PYX_ERR(2, 5527, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_and_uint8", 1, 6, 6, 4); __PYX_ERR(2, 5527, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_and_uint8", 1, 6, 6, 5); __PYX_ERR(2, 5527, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_and_uint8") < 0)) __PYX_ERR(2, 5527, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 5527, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_uint8(values[2]); if (unlikely((__pyx_v_xfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5528, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 5529, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_uint8(values[5]); if (unlikely((__pyx_v_yfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5530, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_and_uint8", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5527, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 5528, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5530, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_118sparse_and_uint8(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_118sparse_and_uint8(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_and_uint8", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 5527, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5527, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_and_uint8(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5527, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5528:                                   SparseIndex xindex, uint8_t xfill,
+
 5529:                                   uint8_t[:] y,
+
 5530:                                   SparseIndex yindex, uint8_t yfill):
+
 5531: 
+
+5532:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+5533:         return block_op_and_uint8(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5533, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5533, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5533, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_and_uint8(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5533, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+5534:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5534, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5534, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5534, __pyx_L1_error)
+
+5535:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+5536:         return int_op_and_uint8(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5536, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5536, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5536, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_and_uint8(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5536, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+5537:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5537, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5537, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5537, __pyx_L1_error)
+
 5538:     else:
+
+5539:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 5539, __pyx_L1_error)
+  }
+
 5540: 
+
 5541: 
+
+5542: cpdef sparse_fill_and_uint8(uint8_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_121sparse_fill_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_and_uint8(__pyx_t_5numpy_uint8_t __pyx_v_xfill, __pyx_t_5numpy_uint8_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_and_uint8", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_121sparse_fill_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_121sparse_fill_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_uint8_t __pyx_v_xfill;
+  __pyx_t_5numpy_uint8_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_and_uint8 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_and_uint8", 1, 2, 2, 1); __PYX_ERR(2, 5542, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_and_uint8") < 0)) __PYX_ERR(2, 5542, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_uint8(values[0]); if (unlikely((__pyx_v_xfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5542, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_uint8(values[1]); if (unlikely((__pyx_v_yfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5543, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_and_uint8", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5542, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_120sparse_fill_and_uint8(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_120sparse_fill_and_uint8(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_and_uint8", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_and_uint8(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5542, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5543:                                        uint8_t yfill):
+
+5544:     return xfill & yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_xfill & __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5544, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5545: 
+
 5546: 
+
 5547: @cython.wraparound(False)
+
 5548: @cython.boundscheck(False)
+
+5549: cdef inline tuple block_op_or_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_or_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_or_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5550:                                                 BlockIndex xindex,
+
 5551:                                                 int64_t xfill,
+
 5552:                                                 int64_t[:] y_,
+
 5553:                                                 BlockIndex yindex,
+
 5554:                                                 int64_t yfill):
+
 5555:     '''
+
 5556:     Binary operator on BlockIndex objects with fill values
+
 5557:     '''
+
 5558: 
+
 5559:     cdef:
+
 5560:         BlockIndex out_index
+
+5561:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+5562:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 5563:         int32_t xloc, yloc
+
+5564:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 5565: 
+
 5566:         int64_t[:] x, y
+
 5567:         ndarray[uint8_t, ndim=1] out
+
 5568: 
+
 5569:     # to suppress Cython warning
+
+5570:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5571:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5572: 
+
+5573:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5573, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+5574:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5574, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5574, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5574, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5574, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5574, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5574, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5574, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5574, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5574, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 5574, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5574, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5575: 
+
 5576:     # Wow, what a hack job. Need to do something about this
+
 5577: 
+
 5578:     # walk the two SparseVectors, adding matched locations...
+
+5579:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+5580:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5581:             # use y fill value
+
+5582:             out[out_i] = x[xi] | yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
+
+5583:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5584: 
+
 5585:             # advance x location
+
+5586:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5587:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5588:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5589:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+5590:             continue
+
      goto __pyx_L3_continue;
+
 5591: 
+
+5592:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5593:             # use x fill value
+
+5594:             out[out_i] = xfill | y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+5595:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5596: 
+
 5597:             # advance y location
+
+5598:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5599:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5600:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5601:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+5602:             continue
+
      goto __pyx_L3_continue;
+
 5603: 
+
+5604:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+5605:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 5606: 
+
 5607:         # each index in the out_index had to come from either x, y, or both
+
+5608:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+5609:             out[out_i] = x[xi] | y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) | (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5610:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5611:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5612: 
+
 5613:             # advance both locations
+
+5614:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5615:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5616:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5617:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5618: 
+
+5619:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5620:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5621:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5622:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5623: 
+
+5624:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 5625:             # use y fill value
+
+5626:             out[out_i] = x[xi] | yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
+
+5627:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5628: 
+
 5629:             # advance x location
+
+5630:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5631:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5632:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5633:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5634:         else:
+
 5635:             # use x fill value
+
+5636:             out[out_i] = xfill | y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5637:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5638: 
+
 5639:             # advance y location
+
+5640:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5641:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+5642:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5643:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5644: 
+
+5645:     return out, out_index, xfill | yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill | __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5645, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5645, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5646: 
+
 5647: 
+
 5648: @cython.wraparound(False)
+
 5649: @cython.boundscheck(False)
+
+5650: cdef inline tuple int_op_or_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_or_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_or_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5651:                                               IntIndex xindex,
+
 5652:                                               int64_t xfill,
+
 5653:                                               int64_t[:] y_,
+
 5654:                                               IntIndex yindex,
+
 5655:                                               int64_t yfill):
+
 5656:     cdef:
+
 5657:         IntIndex out_index
+
+5658:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 5659:         int32_t xloc, yloc
+
 5660:         int32_t[:] xindices, yindices, out_indices
+
 5661:         int64_t[:] x, y
+
 5662:         ndarray[uint8_t, ndim=1] out
+
 5663: 
+
 5664:     # suppress Cython compiler warnings due to inlining
+
+5665:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5666:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5667: 
+
 5668:     # need to do this first to know size of result array
+
+5669:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5669, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+5670:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5670, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5670, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5670, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5670, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5670, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5670, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5670, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5670, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5670, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 5670, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5670, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5671: 
+
+5672:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5672, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5673:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5673, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5674:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5674, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 5675: 
+
 5676:     # walk the two SparseVectors, adding matched locations...
+
+5677:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+5678:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5679:             # use x fill value
+
+5680:             out[out_i] = xfill | y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5681:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5682:             continue
+
      goto __pyx_L3_continue;
+
 5683: 
+
+5684:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5685:             # use y fill value
+
+5686:             out[out_i] = x[xi] | yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
+
+5687:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5688:             continue
+
      goto __pyx_L3_continue;
+
 5689: 
+
+5690:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+5691:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 5692: 
+
 5693:         # each index in the out_index had to come from either x, y, or both
+
+5694:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+5695:             out[out_i] = x[xi] | y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) | (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+5696:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5697:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5698:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 5699:             # use y fill value
+
+5700:             out[out_i] = x[xi] | yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
+
+5701:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5702:         else:
+
 5703:             # use x fill value
+
+5704:             out[out_i] = xfill | y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+5705:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 5706: 
+
+5707:     return out, out_index, xfill | yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill | __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5707, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5707, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5708: 
+
 5709: 
+
+5710: cpdef sparse_or_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_123sparse_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_or_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_or_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_123sparse_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_123sparse_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_or_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_or_int64", 1, 6, 6, 1); __PYX_ERR(2, 5710, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_or_int64", 1, 6, 6, 2); __PYX_ERR(2, 5710, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_or_int64", 1, 6, 6, 3); __PYX_ERR(2, 5710, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_or_int64", 1, 6, 6, 4); __PYX_ERR(2, 5710, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_or_int64", 1, 6, 6, 5); __PYX_ERR(2, 5710, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_or_int64") < 0)) __PYX_ERR(2, 5710, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 5710, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5711, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 5712, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5713, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_or_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5710, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 5711, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5713, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_122sparse_or_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_122sparse_or_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_or_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 5710, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5710, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_or_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5710, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5711:                                   SparseIndex xindex, int64_t xfill,
+
 5712:                                   int64_t[:] y,
+
 5713:                                   SparseIndex yindex, int64_t yfill):
+
 5714: 
+
+5715:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+5716:         return block_op_or_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5716, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5716, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5716, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_or_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5716, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+5717:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5717, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5717, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5717, __pyx_L1_error)
+
+5718:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+5719:         return int_op_or_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5719, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5719, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5719, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_or_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5719, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+5720:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5720, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5720, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5720, __pyx_L1_error)
+
 5721:     else:
+
+5722:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 5722, __pyx_L1_error)
+  }
+
 5723: 
+
 5724: 
+
+5725: cpdef sparse_fill_or_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_125sparse_fill_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_or_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_or_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_125sparse_fill_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_125sparse_fill_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_or_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_or_int64", 1, 2, 2, 1); __PYX_ERR(2, 5725, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_or_int64") < 0)) __PYX_ERR(2, 5725, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5725, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5726, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_or_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5725, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_124sparse_fill_or_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_124sparse_fill_or_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_or_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_or_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5725, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5726:                                        int64_t yfill):
+
+5727:     return xfill | yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill | __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5727, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5728: 
+
 5729: 
+
 5730: @cython.wraparound(False)
+
 5731: @cython.boundscheck(False)
+
+5732: cdef inline tuple block_op_or_uint8(uint8_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_or_uint8(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_or_uint8", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5733:                                                 BlockIndex xindex,
+
 5734:                                                 uint8_t xfill,
+
 5735:                                                 uint8_t[:] y_,
+
 5736:                                                 BlockIndex yindex,
+
 5737:                                                 uint8_t yfill):
+
 5738:     '''
+
 5739:     Binary operator on BlockIndex objects with fill values
+
 5740:     '''
+
 5741: 
+
 5742:     cdef:
+
 5743:         BlockIndex out_index
+
+5744:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+5745:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 5746:         int32_t xloc, yloc
+
+5747:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 5748: 
+
 5749:         uint8_t[:] x, y
+
 5750:         ndarray[uint8_t, ndim=1] out
+
 5751: 
+
 5752:     # to suppress Cython warning
+
+5753:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5754:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5755: 
+
+5756:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5756, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+5757:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5757, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5757, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5757, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5757, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5757, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5757, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5757, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5757, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5757, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 5757, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5757, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5758: 
+
 5759:     # Wow, what a hack job. Need to do something about this
+
 5760: 
+
 5761:     # walk the two SparseVectors, adding matched locations...
+
+5762:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+5763:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5764:             # use y fill value
+
+5765:             out[out_i] = x[xi] | yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
+
+5766:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5767: 
+
 5768:             # advance x location
+
+5769:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5770:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5771:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5772:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+5773:             continue
+
      goto __pyx_L3_continue;
+
 5774: 
+
+5775:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5776:             # use x fill value
+
+5777:             out[out_i] = xfill | y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+5778:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5779: 
+
 5780:             # advance y location
+
+5781:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5782:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5783:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5784:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+5785:             continue
+
      goto __pyx_L3_continue;
+
 5786: 
+
+5787:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+5788:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 5789: 
+
 5790:         # each index in the out_index had to come from either x, y, or both
+
+5791:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+5792:             out[out_i] = x[xi] | y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) | (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5793:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5794:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5795: 
+
 5796:             # advance both locations
+
+5797:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5798:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5799:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5800:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5801: 
+
+5802:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5803:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5804:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5805:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5806: 
+
+5807:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 5808:             # use y fill value
+
+5809:             out[out_i] = x[xi] | yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
+
+5810:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5811: 
+
 5812:             # advance x location
+
+5813:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5814:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5815:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5816:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5817:         else:
+
 5818:             # use x fill value
+
+5819:             out[out_i] = xfill | y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5820:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5821: 
+
 5822:             # advance y location
+
+5823:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5824:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+5825:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5826:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5827: 
+
+5828:     return out, out_index, xfill | yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_xfill | __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5828, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5828, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5829: 
+
 5830: 
+
 5831: @cython.wraparound(False)
+
 5832: @cython.boundscheck(False)
+
+5833: cdef inline tuple int_op_or_uint8(uint8_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_or_uint8(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_or_uint8", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5834:                                               IntIndex xindex,
+
 5835:                                               uint8_t xfill,
+
 5836:                                               uint8_t[:] y_,
+
 5837:                                               IntIndex yindex,
+
 5838:                                               uint8_t yfill):
+
 5839:     cdef:
+
 5840:         IntIndex out_index
+
+5841:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 5842:         int32_t xloc, yloc
+
 5843:         int32_t[:] xindices, yindices, out_indices
+
 5844:         uint8_t[:] x, y
+
 5845:         ndarray[uint8_t, ndim=1] out
+
 5846: 
+
 5847:     # suppress Cython compiler warnings due to inlining
+
+5848:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5849:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5850: 
+
 5851:     # need to do this first to know size of result array
+
+5852:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5852, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+5853:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5853, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5853, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5853, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5853, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5853, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5853, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5853, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5853, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5853, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 5853, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5853, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5854: 
+
+5855:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5855, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5856:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5856, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5857:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5857, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 5858: 
+
 5859:     # walk the two SparseVectors, adding matched locations...
+
+5860:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+5861:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5862:             # use x fill value
+
+5863:             out[out_i] = xfill | y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5864:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5865:             continue
+
      goto __pyx_L3_continue;
+
 5866: 
+
+5867:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5868:             # use y fill value
+
+5869:             out[out_i] = x[xi] | yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
+
+5870:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5871:             continue
+
      goto __pyx_L3_continue;
+
 5872: 
+
+5873:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+5874:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 5875: 
+
 5876:         # each index in the out_index had to come from either x, y, or both
+
+5877:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+5878:             out[out_i] = x[xi] | y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) | (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+5879:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5880:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5881:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 5882:             # use y fill value
+
+5883:             out[out_i] = x[xi] | yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
+
+5884:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5885:         else:
+
 5886:             # use x fill value
+
+5887:             out[out_i] = xfill | y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+5888:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 5889: 
+
+5890:     return out, out_index, xfill | yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_xfill | __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5890, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5890, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5891: 
+
 5892: 
+
+5893: cpdef sparse_or_uint8(uint8_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_127sparse_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_or_uint8(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_or_uint8", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_127sparse_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_127sparse_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_uint8_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_uint8_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_or_uint8 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_or_uint8", 1, 6, 6, 1); __PYX_ERR(2, 5893, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_or_uint8", 1, 6, 6, 2); __PYX_ERR(2, 5893, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_or_uint8", 1, 6, 6, 3); __PYX_ERR(2, 5893, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_or_uint8", 1, 6, 6, 4); __PYX_ERR(2, 5893, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_or_uint8", 1, 6, 6, 5); __PYX_ERR(2, 5893, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_or_uint8") < 0)) __PYX_ERR(2, 5893, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 5893, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_uint8(values[2]); if (unlikely((__pyx_v_xfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5894, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 5895, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_uint8(values[5]); if (unlikely((__pyx_v_yfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5896, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_or_uint8", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5893, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 5894, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5896, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_126sparse_or_uint8(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_126sparse_or_uint8(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_or_uint8", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 5893, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5893, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_or_uint8(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5893, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5894:                                   SparseIndex xindex, uint8_t xfill,
+
 5895:                                   uint8_t[:] y,
+
 5896:                                   SparseIndex yindex, uint8_t yfill):
+
 5897: 
+
+5898:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+5899:         return block_op_or_uint8(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5899, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5899, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5899, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_or_uint8(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5899, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+5900:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5900, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5900, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5900, __pyx_L1_error)
+
+5901:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+5902:         return int_op_or_uint8(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5902, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5902, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5902, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_or_uint8(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5902, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+5903:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5903, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5903, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5903, __pyx_L1_error)
+
 5904:     else:
+
+5905:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 5905, __pyx_L1_error)
+  }
+
 5906: 
+
 5907: 
+
+5908: cpdef sparse_fill_or_uint8(uint8_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_129sparse_fill_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_or_uint8(__pyx_t_5numpy_uint8_t __pyx_v_xfill, __pyx_t_5numpy_uint8_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_or_uint8", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_129sparse_fill_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_129sparse_fill_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_uint8_t __pyx_v_xfill;
+  __pyx_t_5numpy_uint8_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_or_uint8 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_or_uint8", 1, 2, 2, 1); __PYX_ERR(2, 5908, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_or_uint8") < 0)) __PYX_ERR(2, 5908, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_uint8(values[0]); if (unlikely((__pyx_v_xfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5908, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_uint8(values[1]); if (unlikely((__pyx_v_yfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5909, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_or_uint8", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5908, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_128sparse_fill_or_uint8(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_128sparse_fill_or_uint8(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_or_uint8", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_or_uint8(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5908, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5909:                                        uint8_t yfill):
+
+5910:     return xfill | yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_xfill | __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5910, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 5911: 
+
 5912: 
+
 5913: @cython.wraparound(False)
+
 5914: @cython.boundscheck(False)
+
+5915: cdef inline tuple block_op_xor_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_xor_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_xor_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 5916:                                                 BlockIndex xindex,
+
 5917:                                                 int64_t xfill,
+
 5918:                                                 int64_t[:] y_,
+
 5919:                                                 BlockIndex yindex,
+
 5920:                                                 int64_t yfill):
+
 5921:     '''
+
 5922:     Binary operator on BlockIndex objects with fill values
+
 5923:     '''
+
 5924: 
+
 5925:     cdef:
+
 5926:         BlockIndex out_index
+
+5927:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+5928:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 5929:         int32_t xloc, yloc
+
+5930:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 5931: 
+
 5932:         int64_t[:] x, y
+
 5933:         ndarray[uint8_t, ndim=1] out
+
 5934: 
+
 5935:     # to suppress Cython warning
+
+5936:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5937:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5938: 
+
+5939:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5939, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+5940:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5940, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5940, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5940, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5940, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5940, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5940, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5940, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5940, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5940, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 5940, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5940, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5941: 
+
 5942:     # Wow, what a hack job. Need to do something about this
+
 5943: 
+
 5944:     # walk the two SparseVectors, adding matched locations...
+
+5945:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+5946:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5947:             # use y fill value
+
+5948:             out[out_i] = x[xi] ^ yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
+
+5949:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5950: 
+
 5951:             # advance x location
+
+5952:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5953:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5954:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5955:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+5956:             continue
+
      goto __pyx_L3_continue;
+
 5957: 
+
+5958:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5959:             # use x fill value
+
+5960:             out[out_i] = xfill ^ y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+5961:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5962: 
+
 5963:             # advance y location
+
+5964:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5965:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5966:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5967:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+5968:             continue
+
      goto __pyx_L3_continue;
+
 5969: 
+
+5970:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+5971:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 5972: 
+
 5973:         # each index in the out_index had to come from either x, y, or both
+
+5974:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+5975:             out[out_i] = x[xi] ^ y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) ^ (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+5976:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5977:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5978: 
+
 5979:             # advance both locations
+
+5980:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5981:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5982:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5983:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5984: 
+
+5985:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5986:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5987:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5988:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5989: 
+
+5990:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 5991:             # use y fill value
+
+5992:             out[out_i] = x[xi] ^ yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
+
+5993:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5994: 
+
 5995:             # advance x location
+
+5996:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5997:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5998:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5999:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 6000:         else:
+
 6001:             # use x fill value
+
+6002:             out[out_i] = xfill ^ y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+6003:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 6004: 
+
 6005:             # advance y location
+
+6006:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+6007:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+6008:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+6009:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 6010: 
+
+6011:     return out, out_index, xfill ^ yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill ^ __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6011, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6011, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 6012: 
+
 6013: 
+
 6014: @cython.wraparound(False)
+
 6015: @cython.boundscheck(False)
+
+6016: cdef inline tuple int_op_xor_int64(int64_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_xor_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_xor_int64", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 6017:                                               IntIndex xindex,
+
 6018:                                               int64_t xfill,
+
 6019:                                               int64_t[:] y_,
+
 6020:                                               IntIndex yindex,
+
 6021:                                               int64_t yfill):
+
 6022:     cdef:
+
 6023:         IntIndex out_index
+
+6024:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 6025:         int32_t xloc, yloc
+
 6026:         int32_t[:] xindices, yindices, out_indices
+
 6027:         int64_t[:] x, y
+
 6028:         ndarray[uint8_t, ndim=1] out
+
 6029: 
+
 6030:     # suppress Cython compiler warnings due to inlining
+
+6031:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+6032:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 6033: 
+
 6034:     # need to do this first to know size of result array
+
+6035:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6035, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+6036:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6036, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6036, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6036, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6036, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6036, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6036, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6036, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 6036, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6036, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 6036, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 6036, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 6037: 
+
+6038:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 6038, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+6039:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 6039, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+6040:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 6040, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 6041: 
+
 6042:     # walk the two SparseVectors, adding matched locations...
+
+6043:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+6044:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 6045:             # use x fill value
+
+6046:             out[out_i] = xfill ^ y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+6047:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+6048:             continue
+
      goto __pyx_L3_continue;
+
 6049: 
+
+6050:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 6051:             # use y fill value
+
+6052:             out[out_i] = x[xi] ^ yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
+
+6053:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+6054:             continue
+
      goto __pyx_L3_continue;
+
 6055: 
+
+6056:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+6057:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 6058: 
+
 6059:         # each index in the out_index had to come from either x, y, or both
+
+6060:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+6061:             out[out_i] = x[xi] ^ y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) ^ (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+6062:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+6063:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+6064:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 6065:             # use y fill value
+
+6066:             out[out_i] = x[xi] ^ yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
+
+6067:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 6068:         else:
+
 6069:             # use x fill value
+
+6070:             out[out_i] = xfill ^ y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+6071:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 6072: 
+
+6073:     return out, out_index, xfill ^ yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill ^ __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6073, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6073, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 6074: 
+
 6075: 
+
+6076: cpdef sparse_xor_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_131sparse_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_xor_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_xor_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_131sparse_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_131sparse_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_xor_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_xor_int64", 1, 6, 6, 1); __PYX_ERR(2, 6076, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_xor_int64", 1, 6, 6, 2); __PYX_ERR(2, 6076, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_xor_int64", 1, 6, 6, 3); __PYX_ERR(2, 6076, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_xor_int64", 1, 6, 6, 4); __PYX_ERR(2, 6076, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_xor_int64", 1, 6, 6, 5); __PYX_ERR(2, 6076, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_xor_int64") < 0)) __PYX_ERR(2, 6076, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 6076, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6077, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 6078, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6079, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_xor_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 6076, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 6077, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 6079, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_130sparse_xor_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_130sparse_xor_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_xor_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 6076, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 6076, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_xor_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6076, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 6077:                                   SparseIndex xindex, int64_t xfill,
+
 6078:                                   int64_t[:] y,
+
 6079:                                   SparseIndex yindex, int64_t yfill):
+
 6080: 
+
+6081:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+6082:         return block_op_xor_int64(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6082, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6082, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 6082, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_xor_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6082, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+6083:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6083, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6083, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 6083, __pyx_L1_error)
+
+6084:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+6085:         return int_op_xor_int64(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6085, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6085, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 6085, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_xor_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6085, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+6086:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6086, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6086, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 6086, __pyx_L1_error)
+
 6087:     else:
+
+6088:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 6088, __pyx_L1_error)
+  }
+
 6089: 
+
 6090: 
+
+6091: cpdef sparse_fill_xor_int64(int64_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_133sparse_fill_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_xor_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_xor_int64", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_133sparse_fill_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_133sparse_fill_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_int64_t __pyx_v_xfill;
+  __pyx_t_5numpy_int64_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_xor_int64 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_xor_int64", 1, 2, 2, 1); __PYX_ERR(2, 6091, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_xor_int64") < 0)) __PYX_ERR(2, 6091, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6091, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6092, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_xor_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 6091, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_132sparse_fill_xor_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_132sparse_fill_xor_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_xor_int64", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_xor_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6091, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 6092:                                        int64_t yfill):
+
+6093:     return xfill ^ yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill ^ __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6093, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 6094: 
+
 6095: 
+
 6096: @cython.wraparound(False)
+
 6097: @cython.boundscheck(False)
+
+6098: cdef inline tuple block_op_xor_uint8(uint8_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_xor_uint8(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xbp;
+  __pyx_t_5numpy_int32_t __pyx_v_ybp;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  Py_ssize_t __pyx_v_xblock;
+  Py_ssize_t __pyx_v_yblock;
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("block_op_xor_uint8", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.block_op_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 6099:                                                 BlockIndex xindex,
+
 6100:                                                 uint8_t xfill,
+
 6101:                                                 uint8_t[:] y_,
+
 6102:                                                 BlockIndex yindex,
+
 6103:                                                 uint8_t yfill):
+
 6104:     '''
+
 6105:     Binary operator on BlockIndex objects with fill values
+
 6106:     '''
+
 6107: 
+
 6108:     cdef:
+
 6109:         BlockIndex out_index
+
+6110:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
+6111:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 6112:         int32_t xloc, yloc
+
+6113:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 6114: 
+
 6115:         uint8_t[:] x, y
+
 6116:         ndarray[uint8_t, ndim=1] out
+
 6117: 
+
 6118:     # to suppress Cython warning
+
+6119:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+6120:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 6121: 
+
+6122:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6122, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+6123:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 6123, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6123, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 6123, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 6123, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 6124: 
+
 6125:     # Wow, what a hack job. Need to do something about this
+
 6126: 
+
 6127:     # walk the two SparseVectors, adding matched locations...
+
+6128:     for out_i in range(out_index.npoints):
+
  __pyx_t_11 = __pyx_v_out_index->npoints;
+  __pyx_t_12 = __pyx_t_11;
+  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
+    __pyx_v_out_i = __pyx_t_13;
+
+6129:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 6130:             # use y fill value
+
+6131:             out[out_i] = x[xi] ^ yfill
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
+
+6132:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 6133: 
+
 6134:             # advance x location
+
+6135:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+6136:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+6137:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+6138:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+6139:             continue
+
      goto __pyx_L3_continue;
+
 6140: 
+
+6141:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 6142:             # use x fill value
+
+6143:             out[out_i] = xfill ^ y[yi]
+
      __pyx_t_15 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
+
+6144:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 6145: 
+
 6146:             # advance y location
+
+6147:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+6148:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+6149:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+6150:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+6151:             continue
+
      goto __pyx_L3_continue;
+
 6152: 
+
+6153:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+6154:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 6155: 
+
 6156:         # each index in the out_index had to come from either x, y, or both
+
+6157:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+6158:             out[out_i] = x[xi] ^ y[yi]
+
      __pyx_t_15 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) ^ (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+6159:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+6160:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 6161: 
+
 6162:             # advance both locations
+
+6163:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+6164:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+6165:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+6166:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 6167: 
+
+6168:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+6169:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+6170:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+6171:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 6172: 
+
+6173:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 6174:             # use y fill value
+
+6175:             out[out_i] = x[xi] ^ yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
+
+6176:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 6177: 
+
 6178:             # advance x location
+
+6179:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+6180:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+6181:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+6182:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 6183:         else:
+
 6184:             # use x fill value
+
+6185:             out[out_i] = xfill ^ y[yi]
+
    /*else*/ {
+      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_15 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+6186:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 6187: 
+
 6188:             # advance y location
+
+6189:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+6190:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+    }
+    __pyx_L9:;
+    __pyx_L3_continue:;
+  }
+
+6191:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+6192:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 6193: 
+
+6194:     return out, out_index, xfill ^ yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_xfill ^ __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6194, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6194, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 6195: 
+
 6196: 
+
 6197: @cython.wraparound(False)
+
 6198: @cython.boundscheck(False)
+
+6199: cdef inline tuple int_op_xor_uint8(uint8_t[:] x_,
+
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_xor_uint8(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
+  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
+  Py_ssize_t __pyx_v_xi;
+  Py_ssize_t __pyx_v_yi;
+  Py_ssize_t __pyx_v_out_i;
+  __pyx_t_5numpy_int32_t __pyx_v_xloc;
+  __pyx_t_5numpy_int32_t __pyx_v_yloc;
+  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  PyArrayObject *__pyx_v_out = 0;
+  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
+  __Pyx_Buffer __pyx_pybuffer_out;
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("int_op_xor_uint8", 0);
+  __pyx_pybuffer_out.pybuffer.buf = NULL;
+  __pyx_pybuffer_out.refcount = 0;
+  __pyx_pybuffernd_out.data = NULL;
+  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_XDECREF(__pyx_t_2);
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
+  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
+    __Pyx_PyThreadState_declare
+    __Pyx_PyThreadState_assign
+    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
+  __Pyx_AddTraceback("pandas._libs.sparse.int_op_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  goto __pyx_L2;
+  __pyx_L0:;
+  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+  __pyx_L2:;
+  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XDECREF((PyObject *)__pyx_v_out);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 6200:                                               IntIndex xindex,
+
 6201:                                               uint8_t xfill,
+
 6202:                                               uint8_t[:] y_,
+
 6203:                                               IntIndex yindex,
+
 6204:                                               uint8_t yfill):
+
 6205:     cdef:
+
 6206:         IntIndex out_index
+
+6207:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
+
  __pyx_v_xi = 0;
+  __pyx_v_yi = 0;
+  __pyx_v_out_i = 0;
+
 6208:         int32_t xloc, yloc
+
 6209:         int32_t[:] xindices, yindices, out_indices
+
 6210:         uint8_t[:] x, y
+
 6211:         ndarray[uint8_t, ndim=1] out
+
 6212: 
+
 6213:     # suppress Cython compiler warnings due to inlining
+
+6214:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+6215:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 6216: 
+
 6217:     # need to do this first to know size of result array
+
+6218:     out_index = xindex.make_union(yindex)
+
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6218, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
+  __pyx_t_1 = 0;
+
+6219:     out = np.empty(out_index.npoints, dtype=np.uint8)
+
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_2);
+  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
+  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_3);
+  __Pyx_GIVEREF(__pyx_t_1);
+  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
+  __pyx_t_1 = 0;
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_4);
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 6219, __pyx_L1_error)
+  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6219, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
+  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+  __Pyx_DECREF(__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_ERR(2, 6219, __pyx_L1_error)
+  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
+  {
+    __Pyx_BufFmt_StackElem __pyx_stack[1];
+    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
+    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
+    if (unlikely(__pyx_t_7 < 0)) {
+      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
+      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
+        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
+        __Pyx_RaiseBufferFallbackError();
+      } else {
+        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
+      }
+      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
+    }
+    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
+    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 6219, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 6220: 
+
+6221:     xindices = xindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 6221, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+6222:     yindices = yindex.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 6222, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+6223:     out_indices = out_index.indices
+
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 6223, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 6224: 
+
 6225:     # walk the two SparseVectors, adding matched locations...
+
+6226:     for out_i in range(out_index.npoints):
+
  __pyx_t_12 = __pyx_v_out_index->npoints;
+  __pyx_t_13 = __pyx_t_12;
+  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
+    __pyx_v_out_i = __pyx_t_14;
+
+6227:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 6228:             # use x fill value
+
+6229:             out[out_i] = xfill ^ y[yi]
+
      __pyx_t_16 = __pyx_v_yi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
+
+6230:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+6231:             continue
+
      goto __pyx_L3_continue;
+
 6232: 
+
+6233:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 6234:             # use y fill value
+
+6235:             out[out_i] = x[xi] ^ yfill
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
+
+6236:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+6237:             continue
+
      goto __pyx_L3_continue;
+
 6238: 
+
+6239:         xloc = xindices[xi]
+
    __pyx_t_16 = __pyx_v_xi;
+    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
+
+6240:         yloc = yindices[yi]
+
    __pyx_t_16 = __pyx_v_yi;
+    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
+
 6241: 
+
 6242:         # each index in the out_index had to come from either x, y, or both
+
+6243:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+6244:             out[out_i] = x[xi] ^ y[yi]
+
      __pyx_t_16 = __pyx_v_xi;
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_18 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) ^ (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+6245:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+6246:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+6247:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 6248:             # use y fill value
+
+6249:             out[out_i] = x[xi] ^ yfill
+
      __pyx_t_17 = __pyx_v_xi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
+
+6250:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 6251:         else:
+
 6252:             # use x fill value
+
+6253:             out[out_i] = xfill ^ y[yi]
+
    /*else*/ {
+      __pyx_t_17 = __pyx_v_yi;
+      __pyx_t_16 = __pyx_v_out_i;
+      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
+
+6254:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 6255: 
+
+6256:     return out, out_index, xfill ^ yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_xfill ^ __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6256, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6256, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __Pyx_INCREF(((PyObject *)__pyx_v_out));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
+  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
+  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
+  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
+  __Pyx_GIVEREF(__pyx_t_5);
+  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
+  __pyx_t_5 = 0;
+  __pyx_r = ((PyObject*)__pyx_t_1);
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
 6257: 
+
 6258: 
+
+6259: cpdef sparse_xor_uint8(uint8_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_135sparse_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_xor_uint8(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_xor_uint8", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_3);
+  __Pyx_XDECREF(__pyx_t_4);
+  __Pyx_XDECREF(__pyx_t_5);
+  __Pyx_XDECREF(__pyx_t_6);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_135sparse_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_135sparse_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
+  __pyx_t_5numpy_uint8_t __pyx_v_xfill;
+  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
+  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
+  __pyx_t_5numpy_uint8_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_xor_uint8 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
+    PyObject* values[6] = {0,0,0,0,0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+        CYTHON_FALLTHROUGH;
+        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+        CYTHON_FALLTHROUGH;
+        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+        CYTHON_FALLTHROUGH;
+        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+        CYTHON_FALLTHROUGH;
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_xor_uint8", 1, 6, 6, 1); __PYX_ERR(2, 6259, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  2:
+        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_xor_uint8", 1, 6, 6, 2); __PYX_ERR(2, 6259, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  3:
+        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_xor_uint8", 1, 6, 6, 3); __PYX_ERR(2, 6259, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  4:
+        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_xor_uint8", 1, 6, 6, 4); __PYX_ERR(2, 6259, __pyx_L3_error)
+        }
+        CYTHON_FALLTHROUGH;
+        case  5:
+        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_xor_uint8", 1, 6, 6, 5); __PYX_ERR(2, 6259, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_xor_uint8") < 0)) __PYX_ERR(2, 6259, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
+      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
+      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
+      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
+    }
+    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 6259, __pyx_L3_error)
+    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_uint8(values[2]); if (unlikely((__pyx_v_xfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6260, __pyx_L3_error)
+    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 6261, __pyx_L3_error)
+    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_uint8(values[5]); if (unlikely((__pyx_v_yfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6262, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_xor_uint8", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 6259, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 6260, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 6262, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_134sparse_xor_uint8(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  goto __pyx_L0;
+  __pyx_L1_error:;
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_134sparse_xor_uint8(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_xor_uint8", 0);
+  __Pyx_XDECREF(__pyx_r);
+  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 6259, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 6259, __pyx_L1_error) }
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_xor_uint8(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6259, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
+  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 6260:                                   SparseIndex xindex, uint8_t xfill,
+
 6261:                                   uint8_t[:] y,
+
 6262:                                   SparseIndex yindex, uint8_t yfill):
+
 6263: 
+
+6264:     if isinstance(xindex, BlockIndex):
+
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
+  __pyx_t_2 = (__pyx_t_1 != 0);
+  if (__pyx_t_2) {
+/* … */
+  }
+
+6265:         return block_op_xor_uint8(x, xindex.to_block_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6265, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_5 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_5)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_5);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6265, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 6265, __pyx_L1_error)
+/* … */
+    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_xor_uint8(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6265, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_5;
+    __pyx_t_5 = 0;
+    goto __pyx_L0;
+
+6266:                                              y, yindex.to_block_index(), yfill)
+
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6266, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_5, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6266, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 6266, __pyx_L1_error)
+
+6267:     elif isinstance(xindex, IntIndex):
+
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
+  __pyx_t_1 = (__pyx_t_2 != 0);
+  if (likely(__pyx_t_1)) {
+/* … */
+  }
+
+6268:         return int_op_xor_uint8(x, xindex.to_int_index(), xfill,
+
    __Pyx_XDECREF(__pyx_r);
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6268, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __pyx_t_3 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
+      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
+      if (likely(__pyx_t_3)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
+        __Pyx_INCREF(__pyx_t_3);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_4, function);
+      }
+    }
+    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
+    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6268, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_5);
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 6268, __pyx_L1_error)
+/* … */
+    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_xor_uint8(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6268, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
+    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
+    __pyx_r = __pyx_t_3;
+    __pyx_t_3 = 0;
+    goto __pyx_L0;
+
+6269:                                            y, yindex.to_int_index(), yfill)
+
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6269, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_3);
+    __pyx_t_6 = NULL;
+    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
+      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
+      if (likely(__pyx_t_6)) {
+        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
+        __Pyx_INCREF(__pyx_t_6);
+        __Pyx_INCREF(function);
+        __Pyx_DECREF_SET(__pyx_t_3, function);
+      }
+    }
+    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
+    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6269, __pyx_L1_error)
+    __Pyx_GOTREF(__pyx_t_4);
+    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 6269, __pyx_L1_error)
+
 6270:     else:
+
+6271:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 6271, __pyx_L1_error)
+  }
+
 6272: 
+
 6273: 
+
+6274: cpdef sparse_fill_xor_uint8(uint8_t xfill,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_137sparse_fill_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_xor_uint8(__pyx_t_5numpy_uint8_t __pyx_v_xfill, __pyx_t_5numpy_uint8_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_xor_uint8", 0);
+/* … */
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = 0;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+/* Python wrapper */
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_137sparse_fill_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_137sparse_fill_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
+  __pyx_t_5numpy_uint8_t __pyx_v_xfill;
+  __pyx_t_5numpy_uint8_t __pyx_v_yfill;
+  PyObject *__pyx_r = 0;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_xor_uint8 (wrapper)", 0);
+  {
+    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
+    PyObject* values[2] = {0,0};
+    if (unlikely(__pyx_kwds)) {
+      Py_ssize_t kw_args;
+      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
+      switch (pos_args) {
+        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+        CYTHON_FALLTHROUGH;
+        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+        CYTHON_FALLTHROUGH;
+        case  0: break;
+        default: goto __pyx_L5_argtuple_error;
+      }
+      kw_args = PyDict_Size(__pyx_kwds);
+      switch (pos_args) {
+        case  0:
+        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
+        else goto __pyx_L5_argtuple_error;
+        CYTHON_FALLTHROUGH;
+        case  1:
+        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
+        else {
+          __Pyx_RaiseArgtupleInvalid("sparse_fill_xor_uint8", 1, 2, 2, 1); __PYX_ERR(2, 6274, __pyx_L3_error)
+        }
+      }
+      if (unlikely(kw_args > 0)) {
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_xor_uint8") < 0)) __PYX_ERR(2, 6274, __pyx_L3_error)
+      }
+    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
+      goto __pyx_L5_argtuple_error;
+    } else {
+      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
+      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
+    }
+    __pyx_v_xfill = __Pyx_PyInt_As_npy_uint8(values[0]); if (unlikely((__pyx_v_xfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6274, __pyx_L3_error)
+    __pyx_v_yfill = __Pyx_PyInt_As_npy_uint8(values[1]); if (unlikely((__pyx_v_yfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6275, __pyx_L3_error)
+  }
+  goto __pyx_L4_argument_unpacking_done;
+  __pyx_L5_argtuple_error:;
+  __Pyx_RaiseArgtupleInvalid("sparse_fill_xor_uint8", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 6274, __pyx_L3_error)
+  __pyx_L3_error:;
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __Pyx_RefNannyFinishContext();
+  return NULL;
+  __pyx_L4_argument_unpacking_done:;
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_136sparse_fill_xor_uint8(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
+  int __pyx_lineno = 0;
+  const char *__pyx_filename = NULL;
+  int __pyx_clineno = 0;
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
+static PyObject *__pyx_pf_6pandas_5_libs_6sparse_136sparse_fill_xor_uint8(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
+  PyObject *__pyx_r = NULL;
+  __Pyx_RefNannyDeclarations
+  __Pyx_RefNannySetupContext("sparse_fill_xor_uint8", 0);
+  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_xor_uint8(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6274, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
+  /* function exit code */
+  __pyx_L1_error:;
+  __Pyx_XDECREF(__pyx_t_1);
+  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
+  __pyx_r = NULL;
+  __pyx_L0:;
+  __Pyx_XGIVEREF(__pyx_r);
+  __Pyx_RefNannyFinishContext();
+  return __pyx_r;
+}
+
 6275:                                        uint8_t yfill):
+
+6276:     return xfill ^ yfill
+
  __Pyx_XDECREF(__pyx_r);
+  __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_xfill ^ __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6276, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_r = __pyx_t_1;
+  __pyx_t_1 = 0;
+  goto __pyx_L0;
+
From 251bea2978b095cbd530dff13e73fc5d85e94883 Mon Sep 17 00:00:00 2001 From: Matthew Zeitlin Date: Thu, 16 Sep 2021 19:31:18 -0400 Subject: [PATCH 3/3] fixups --- doc/source/whatsnew/v1.3.4.rst | 1 - pandas/_libs/sparse.html | 10324 -------- pandas/_libs/sparse_op_helper.html | 33878 --------------------------- 3 files changed, 44203 deletions(-) delete mode 100644 pandas/_libs/sparse.html delete mode 100644 pandas/_libs/sparse_op_helper.html diff --git a/doc/source/whatsnew/v1.3.4.rst b/doc/source/whatsnew/v1.3.4.rst index 4bbd44b395a35..92a3d05a7efc5 100644 --- a/doc/source/whatsnew/v1.3.4.rst +++ b/doc/source/whatsnew/v1.3.4.rst @@ -15,7 +15,6 @@ including other versions of pandas. Fixed regressions ~~~~~~~~~~~~~~~~~ - Fixed regression in :meth:`merge` with integer and ``NaN`` keys failing with ``outer`` merge (:issue:`43550`) -- Fixed performance regression in :meth:`MultiIndex.equals` (:issue:`43549`) - Fixed regression in :meth:`DataFrame.corr` raising ``ValueError`` with ``method="spearman`` on 32-bit platforms (:issue:`43588`) - diff --git a/pandas/_libs/sparse.html b/pandas/_libs/sparse.html deleted file mode 100644 index e027abde9657e..0000000000000 --- a/pandas/_libs/sparse.html +++ /dev/null @@ -1,10324 +0,0 @@ - - - - - - Cython: sparse.pyx - - - -

Generated by Cython 0.29.24

-

- Yellow lines hint at Python interaction.
- Click on a line that starts with a "+" to see the C code that Cython generated for it. -

-

Raw output: sparse.c

-
+001: import cython
-
  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_1) < 0) __PYX_ERR(0, 1, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
+002: import numpy as np
-
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numpy, 0, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_np, __pyx_t_1) < 0) __PYX_ERR(0, 2, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
 003: 
-
 004: cimport numpy as cnp
-
 005: from numpy cimport (
-
 006:     float32_t,
-
 007:     float64_t,
-
 008:     int8_t,
-
 009:     int16_t,
-
 010:     int32_t,
-
 011:     int64_t,
-
 012:     ndarray,
-
 013:     uint8_t,
-
 014: )
-
 015: 
-
+016: cnp.import_array()
-
  __pyx_t_2 = __pyx_f_5numpy_import_array(); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 16, __pyx_L1_error)
-
 017: 
-
 018: 
-
 019: # -----------------------------------------------------------------------------
-
 020: # Preamble stuff
-
 021: 
-
+022: cdef float64_t NaN = <float64_t>np.NaN
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 22, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_NaN); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 22, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_3); if (unlikely((__pyx_t_4 == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 22, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_v_6pandas_5_libs_6sparse_NaN = ((__pyx_t_5numpy_float64_t)__pyx_t_4);
-
+023: cdef float64_t INF = <float64_t>np.inf
-
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 23, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_inf); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 23, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_4 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_4 == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 23, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_v_6pandas_5_libs_6sparse_INF = ((__pyx_t_5numpy_float64_t)__pyx_t_4);
-
 024: 
-
 025: # -----------------------------------------------------------------------------
-
 026: 
-
 027: 
-
+028: cdef class SparseIndex:
-
struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex {
-  PyObject_HEAD
-};
-
-
 029:     """
-
 030:     Abstract superclass for sparse index types.
-
 031:     """
-
 032: 
-
+033:     def __init__(self):
-
/* Python wrapper */
-static int __pyx_pw_6pandas_5_libs_6sparse_11SparseIndex_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_6pandas_5_libs_6sparse_11SparseIndex_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
-    __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
-  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__init__", 0))) return -1;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_11SparseIndex___init__(((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_6pandas_5_libs_6sparse_11SparseIndex___init__(CYTHON_UNUSED struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_self) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.SparseIndex.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+034:         raise NotImplementedError
-
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-  __PYX_ERR(0, 34, __pyx_L1_error)
-
 035: 
-
 036: 
-
+037: cdef class IntIndex(SparseIndex):
-
struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex {
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex __pyx_base;
-  struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *__pyx_vtab;
-  Py_ssize_t length;
-  Py_ssize_t npoints;
-  PyArrayObject *indices;
-};
-/* … */
-struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *(*intersect)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *, int __pyx_skip_dispatch);
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *(*make_union)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *, int __pyx_skip_dispatch);
-  __pyx_t_5numpy_int32_t (*lookup)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, Py_ssize_t, int __pyx_skip_dispatch);
-  PyArrayObject *(*lookup_array)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, PyArrayObject *, int __pyx_skip_dispatch);
-  PyArrayObject *(*reindex)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, PyArrayObject *, __pyx_t_5numpy_float64_t, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *, int __pyx_skip_dispatch);
-  PyObject *(*put)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, PyArrayObject *, PyArrayObject *, PyObject *, int __pyx_skip_dispatch);
-  PyObject *(*take)(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *, PyArrayObject *, PyArrayObject *, int __pyx_skip_dispatch);
-};
-static struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *__pyx_vtabptr_6pandas_5_libs_6sparse_IntIndex;
-
-
 038:     """
-
 039:     Object for holding exact integer sparse indexing information
-
 040: 
-
 041:     Parameters
-
 042:     ----------
-
 043:     length : integer
-
 044:     indices : array-like
-
 045:         Contains integers corresponding to the indices.
-
 046:     check_integrity : bool, default=True
-
 047:         Check integrity of the input.
-
 048:     """
-
 049: 
-
 050:     cdef readonly:
-
+051:         Py_ssize_t length, npoints
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_6length_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_6length_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_6length___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_6length___get__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.length.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_7npoints_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_7npoints_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_7npoints___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_7npoints___get__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 51, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.npoints.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+052:         ndarray indices
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_7indices_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_7indices_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_7indices___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_7indices___get__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->indices));
-  __pyx_r = ((PyObject *)__pyx_v_self->indices);
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 053: 
-
+054:     def __init__(self, Py_ssize_t length, indices, bint check_integrity=True):
-
/* Python wrapper */
-static int __pyx_pw_6pandas_5_libs_6sparse_8IntIndex_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_6pandas_5_libs_6sparse_8IntIndex_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  Py_ssize_t __pyx_v_length;
-  PyObject *__pyx_v_indices = 0;
-  int __pyx_v_check_integrity;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_length,&__pyx_n_s_indices,&__pyx_n_s_check_integrity,0};
-    PyObject* values[3] = {0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_length)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_indices)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, 1); __PYX_ERR(0, 54, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (kw_args > 0) {
-          PyObject* value = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_check_integrity);
-          if (value) { values[2] = value; kw_args--; }
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 54, __pyx_L3_error)
-      }
-    } else {
-      switch (PyTuple_GET_SIZE(__pyx_args)) {
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        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_length = __Pyx_PyIndex_AsSsize_t(values[0]); if (unlikely((__pyx_v_length == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 54, __pyx_L3_error)
-    __pyx_v_indices = values[1];
-    if (values[2]) {
-      __pyx_v_check_integrity = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_check_integrity == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 54, __pyx_L3_error)
-    } else {
-      __pyx_v_check_integrity = ((int)1);
-    }
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 54, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return -1;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex___init__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), __pyx_v_length, __pyx_v_indices, __pyx_v_check_integrity);
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_6pandas_5_libs_6sparse_8IntIndex___init__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, Py_ssize_t __pyx_v_length, PyObject *__pyx_v_indices, int __pyx_v_check_integrity) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__", 0);
-/* … */
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+055:         self.length = length
-
  __pyx_v_self->length = __pyx_v_length;
-
+056:         self.indices = np.ascontiguousarray(indices, dtype=np.int32)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 56, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 56, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_v_indices);
-  __Pyx_GIVEREF(__pyx_v_indices);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_indices);
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 56, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 56, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 56, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 56, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 56, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 56, __pyx_L1_error)
-  __Pyx_GIVEREF(__pyx_t_5);
-  __Pyx_GOTREF(__pyx_v_self->indices);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->indices));
-  __pyx_v_self->indices = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
+057:         self.npoints = len(self.indices)
-
  __pyx_t_5 = ((PyObject *)__pyx_v_self->indices);
-  __Pyx_INCREF(__pyx_t_5);
-  __pyx_t_6 = PyObject_Length(__pyx_t_5); if (unlikely(__pyx_t_6 == ((Py_ssize_t)-1))) __PYX_ERR(0, 57, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_v_self->npoints = __pyx_t_6;
-
 058: 
-
+059:         if check_integrity:
-
  __pyx_t_7 = (__pyx_v_check_integrity != 0);
-  if (__pyx_t_7) {
-/* … */
-  }
-
+060:             self.check_integrity()
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_check_integrity); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 60, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_1 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_1)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_1);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 60, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-
 061: 
-
+062:     def __reduce__(self):
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_3__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_3__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_2__reduce__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_2__reduce__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
-  PyObject *__pyx_v_args = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__reduce__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_args);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+063:         args = (self.length, self.indices)
-
  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 63, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 63, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->indices));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->indices));
-  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->indices));
-  __pyx_t_1 = 0;
-  __pyx_v_args = ((PyObject*)__pyx_t_2);
-  __pyx_t_2 = 0;
-
+064:         return IntIndex, args
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 64, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_IntIndex));
-  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_IntIndex));
-  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_IntIndex));
-  __Pyx_INCREF(__pyx_v_args);
-  __Pyx_GIVEREF(__pyx_v_args);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_args);
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
 065: 
-
+066:     def __repr__(self) -> str:
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_5__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_5__repr__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_4__repr__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_4__repr__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
-  PyObject *__pyx_v_output = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__repr__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_output);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+067:         output = 'IntIndex\n'
-
  __Pyx_INCREF(__pyx_n_u_IntIndex);
-  __pyx_v_output = __pyx_n_u_IntIndex;
-
+068:         output += f'Indices: {repr(self.indices)}\n'
-
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = 0;
-  __pyx_t_3 = 127;
-  __Pyx_INCREF(__pyx_kp_u_Indices);
-  __pyx_t_2 += 9;
-  __Pyx_GIVEREF(__pyx_kp_u_Indices);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Indices);
-  __pyx_t_4 = ((PyObject *)__pyx_v_self->indices);
-  __Pyx_INCREF(__pyx_t_4);
-  __pyx_t_5 = PyObject_Repr(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 68, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3;
-  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
-  __pyx_t_4 = 0;
-  __Pyx_INCREF(__pyx_kp_u_);
-  __pyx_t_2 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u_);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_);
-  __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 68, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_v_output, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 68, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF_SET(__pyx_v_output, ((PyObject*)__pyx_t_1));
-  __pyx_t_1 = 0;
-
+069:         return output
-
  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_output);
-  __pyx_r = __pyx_v_output;
-  goto __pyx_L0;
-
 070: 
-
 071:     @property
-
+072:     def nbytes(self) -> int:
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_6nbytes_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_6nbytes_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_6nbytes___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_6nbytes___get__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.nbytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+073:         return self.indices.nbytes
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->indices), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 73, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 074: 
-
+075:     def check_integrity(self):
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_7check_integrity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_6pandas_5_libs_6sparse_8IntIndex_6check_integrity[] = "\n        Checks the following:\n\n        - Indices are strictly ascending\n        - Number of indices is at most self.length\n        - Indices are at least 0 and at most the total length less one\n\n        A ValueError is raised if any of these conditions is violated.\n        ";
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_7check_integrity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("check_integrity (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_6check_integrity(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_6check_integrity(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
-  PyObject *__pyx_v_monotonic = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("check_integrity", 0);
-/* … */
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.check_integrity", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_monotonic);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 076:         """
-
 077:         Checks the following:
-
 078: 
-
 079:         - Indices are strictly ascending
-
 080:         - Number of indices is at most self.length
-
 081:         - Indices are at least 0 and at most the total length less one
-
 082: 
-
 083:         A ValueError is raised if any of these conditions is violated.
-
 084:         """
-
 085: 
-
+086:         if self.npoints > self.length:
-
  __pyx_t_1 = ((__pyx_v_self->npoints > __pyx_v_self->length) != 0);
-  if (unlikely(__pyx_t_1)) {
-/* … */
-  }
-
+087:             raise ValueError(
-
    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 87, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __PYX_ERR(0, 87, __pyx_L1_error)
-
+088:                 f"Too many indices. Expected {self.length} but found {self.npoints}"
-
    __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 88, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = 0;
-    __pyx_t_4 = 127;
-    __Pyx_INCREF(__pyx_kp_u_Too_many_indices_Expected);
-    __pyx_t_3 += 27;
-    __Pyx_GIVEREF(__pyx_kp_u_Too_many_indices_Expected);
-    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_Too_many_indices_Expected);
-    __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_self->length, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 88, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
-    __Pyx_GIVEREF(__pyx_t_5);
-    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_5);
-    __pyx_t_5 = 0;
-    __Pyx_INCREF(__pyx_kp_u_but_found);
-    __pyx_t_3 += 11;
-    __Pyx_GIVEREF(__pyx_kp_u_but_found);
-    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u_but_found);
-    __pyx_t_5 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_self->npoints, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 88, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
-    __Pyx_GIVEREF(__pyx_t_5);
-    PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_5);
-    __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_2, 4, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 88, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
 089:             )
-
 090: 
-
 091:         # Indices are vacuously ordered and non-negative
-
 092:         # if the sequence of indices is empty.
-
+093:         if self.npoints == 0:
-
  __pyx_t_1 = ((__pyx_v_self->npoints == 0) != 0);
-  if (__pyx_t_1) {
-/* … */
-  }
-
+094:             return
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-    goto __pyx_L0;
-
 095: 
-
+096:         if self.indices.min() < 0:
-
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->indices), __pyx_n_s_min); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 96, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_5, function);
-    }
-  }
-  __pyx_t_2 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 96, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = PyObject_RichCompare(__pyx_t_2, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 96, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 96, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (unlikely(__pyx_t_1)) {
-/* … */
-  }
-
+097:             raise ValueError("No index can be less than zero")
-
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__2, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 97, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __PYX_ERR(0, 97, __pyx_L1_error)
-/* … */
-  __pyx_tuple__2 = PyTuple_Pack(1, __pyx_kp_u_No_index_can_be_less_than_zero); if (unlikely(!__pyx_tuple__2)) __PYX_ERR(0, 97, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__2);
-  __Pyx_GIVEREF(__pyx_tuple__2);
-
 098: 
-
+099:         if self.indices.max() >= self.length:
-
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->indices), __pyx_n_s_max); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_6 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 99, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 99, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 99, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 99, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (unlikely(__pyx_t_1)) {
-/* … */
-  }
-
+100:             raise ValueError("All indices must be less than the length")
-
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 100, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __PYX_ERR(0, 100, __pyx_L1_error)
-/* … */
-  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_u_All_indices_must_be_less_than_th); if (unlikely(!__pyx_tuple__3)) __PYX_ERR(0, 100, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__3);
-  __Pyx_GIVEREF(__pyx_tuple__3);
-
 101: 
-
+102:         monotonic = np.all(self.indices[:-1] < self.indices[1:])
-
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_all); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 102, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->indices), 0, -1L, NULL, NULL, &__pyx_slice__4, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 102, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-/* … */
-  __pyx_slice__4 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__4)) __PYX_ERR(0, 102, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__4);
-  __Pyx_GIVEREF(__pyx_slice__4);
-  __pyx_t_7 = __Pyx_PyObject_GetSlice(((PyObject *)__pyx_v_self->indices), 1, 0, NULL, NULL, &__pyx_slice__5, 1, 0, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 102, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_8 = PyObject_RichCompare(__pyx_t_2, __pyx_t_7, Py_LT); __Pyx_XGOTREF(__pyx_t_8); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 102, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __pyx_t_7 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
-    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_5);
-    if (likely(__pyx_t_7)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-      __Pyx_INCREF(__pyx_t_7);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_5, function);
-    }
-  }
-  __pyx_t_6 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_8);
-  __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 102, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_v_monotonic = __pyx_t_6;
-  __pyx_t_6 = 0;
-  __pyx_slice__5 = PySlice_New(__pyx_int_1, Py_None, Py_None); if (unlikely(!__pyx_slice__5)) __PYX_ERR(0, 102, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__5);
-  __Pyx_GIVEREF(__pyx_slice__5);
-
+103:         if not monotonic:
-
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_monotonic); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 103, __pyx_L1_error)
-  __pyx_t_9 = ((!__pyx_t_1) != 0);
-  if (unlikely(__pyx_t_9)) {
-/* … */
-  }
-
+104:             raise ValueError("Indices must be strictly increasing")
-
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 104, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __PYX_ERR(0, 104, __pyx_L1_error)
-/* … */
-  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_u_Indices_must_be_strictly_increas); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 104, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__6);
-  __Pyx_GIVEREF(__pyx_tuple__6);
-
 105: 
-
+106:     def equals(self, other: object) -> bool:
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_9equals(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_9equals(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("equals (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_8equals(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_8equals(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_v_same_length = NULL;
-  PyObject *__pyx_v_same_indices = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("equals", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_8);
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.equals", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_same_length);
-  __Pyx_XDECREF(__pyx_v_same_indices);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+107:         if not isinstance(other, IntIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+108:             return False
-
    __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(Py_False);
-    __pyx_r = Py_False;
-    goto __pyx_L0;
-
 109: 
-
+110:         if self is other:
-
  __pyx_t_2 = (((PyObject *)__pyx_v_self) == __pyx_v_other);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-/* … */
-  }
-
+111:             return True
-
    __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(Py_True);
-    __pyx_r = Py_True;
-    goto __pyx_L0;
-
 112: 
-
+113:         same_length = self.length == other.length
-
  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 113, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_length); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 113, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 113, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_v_same_length = __pyx_t_5;
-  __pyx_t_5 = 0;
-
+114:         same_indices = np.array_equal(self.indices, other.indices)
-
  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_array_equal); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 114, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_indices); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 114, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_6 = NULL;
-  __pyx_t_7 = 0;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-    __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-    if (likely(__pyx_t_6)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-      __Pyx_INCREF(__pyx_t_6);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_3, function);
-      __pyx_t_7 = 1;
-    }
-  }
-  #if CYTHON_FAST_PYCALL
-  if (PyFunction_Check(__pyx_t_3)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_6, ((PyObject *)__pyx_v_self->indices), __pyx_t_4};
-    __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 114, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  } else
-  #endif
-  #if CYTHON_FAST_PYCCALL
-  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_6, ((PyObject *)__pyx_v_self->indices), __pyx_t_4};
-    __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 2+__pyx_t_7); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 114, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  } else
-  #endif
-  {
-    __pyx_t_8 = PyTuple_New(2+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 114, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_8);
-    if (__pyx_t_6) {
-      __Pyx_GIVEREF(__pyx_t_6); PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6); __pyx_t_6 = NULL;
-    }
-    __Pyx_INCREF(((PyObject *)__pyx_v_self->indices));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_self->indices));
-    PyTuple_SET_ITEM(__pyx_t_8, 0+__pyx_t_7, ((PyObject *)__pyx_v_self->indices));
-    __Pyx_GIVEREF(__pyx_t_4);
-    PyTuple_SET_ITEM(__pyx_t_8, 1+__pyx_t_7, __pyx_t_4);
-    __pyx_t_4 = 0;
-    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 114, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_v_same_indices = __pyx_t_5;
-  __pyx_t_5 = 0;
-
+115:         return same_length and same_indices
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_same_length); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 115, __pyx_L1_error)
-  if (__pyx_t_1) {
-  } else {
-    __Pyx_INCREF(__pyx_v_same_length);
-    __pyx_t_5 = __pyx_v_same_length;
-    goto __pyx_L5_bool_binop_done;
-  }
-  __Pyx_INCREF(__pyx_v_same_indices);
-  __pyx_t_5 = __pyx_v_same_indices;
-  __pyx_L5_bool_binop_done:;
-  __pyx_r = __pyx_t_5;
-  __pyx_t_5 = 0;
-  goto __pyx_L0;
-
 116: 
-
 117:     @property
-
+118:     def ngaps(self) -> int:
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_5ngaps_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_5ngaps_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_5ngaps___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_5ngaps___get__(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.ngaps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+119:         return self.length - self.npoints
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyInt_FromSsize_t((__pyx_v_self->length - __pyx_v_self->npoints)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 119, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 120: 
-
+121:     def to_int_index(self):
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_11to_int_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_11to_int_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("to_int_index (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_10to_int_index(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_10to_int_index(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("to_int_index", 0);
-/* … */
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+122:         return self
-
  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self));
-  __pyx_r = ((PyObject *)__pyx_v_self);
-  goto __pyx_L0;
-
 123: 
-
+124:     def to_block_index(self):
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_13to_block_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_13to_block_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("to_block_index (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_12to_block_index(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_12to_block_index(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self) {
-  PyObject *__pyx_v_locs = NULL;
-  PyObject *__pyx_v_lens = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("to_block_index", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.to_block_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_locs);
-  __Pyx_XDECREF(__pyx_v_lens);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+125:         locs, lens = get_blocks(self.indices)
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->indices);
-  __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = __pyx_f_6pandas_5_libs_6sparse_get_blocks(((PyArrayObject *)__pyx_t_1), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 125, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
-    PyObject* sequence = __pyx_t_2;
-    Py_ssize_t size = __Pyx_PySequence_SIZE(sequence);
-    if (unlikely(size != 2)) {
-      if (size > 2) __Pyx_RaiseTooManyValuesError(2);
-      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      __PYX_ERR(0, 125, __pyx_L1_error)
-    }
-    #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    if (likely(PyTuple_CheckExact(sequence))) {
-      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
-      __pyx_t_3 = PyTuple_GET_ITEM(sequence, 1); 
-    } else {
-      __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
-      __pyx_t_3 = PyList_GET_ITEM(sequence, 1); 
-    }
-    __Pyx_INCREF(__pyx_t_1);
-    __Pyx_INCREF(__pyx_t_3);
-    #else
-    __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 125, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 125, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    #endif
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  } else {
-    Py_ssize_t index = -1;
-    __pyx_t_4 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 125, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_5 = Py_TYPE(__pyx_t_4)->tp_iternext;
-    index = 0; __pyx_t_1 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
-    __Pyx_GOTREF(__pyx_t_1);
-    index = 1; __pyx_t_3 = __pyx_t_5(__pyx_t_4); if (unlikely(!__pyx_t_3)) goto __pyx_L3_unpacking_failed;
-    __Pyx_GOTREF(__pyx_t_3);
-    if (__Pyx_IternextUnpackEndCheck(__pyx_t_5(__pyx_t_4), 2) < 0) __PYX_ERR(0, 125, __pyx_L1_error)
-    __pyx_t_5 = NULL;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    goto __pyx_L4_unpacking_done;
-    __pyx_L3_unpacking_failed:;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_5 = NULL;
-    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-    __PYX_ERR(0, 125, __pyx_L1_error)
-    __pyx_L4_unpacking_done:;
-  }
-  __pyx_v_locs = __pyx_t_1;
-  __pyx_t_1 = 0;
-  __pyx_v_lens = __pyx_t_3;
-  __pyx_t_3 = 0;
-
+126:         return BlockIndex(self.length, locs, lens)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 126, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
-  __Pyx_INCREF(__pyx_v_locs);
-  __Pyx_GIVEREF(__pyx_v_locs);
-  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_locs);
-  __Pyx_INCREF(__pyx_v_lens);
-  __Pyx_GIVEREF(__pyx_v_lens);
-  PyTuple_SET_ITEM(__pyx_t_3, 2, __pyx_v_lens);
-  __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockIndex), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 126, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
 127: 
-
+128:     cpdef IntIndex intersect(self, SparseIndex y_):
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_15intersect(PyObject *__pyx_v_self, PyObject *__pyx_v_y_); /*proto*/
-static struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_f_6pandas_5_libs_6sparse_8IntIndex_intersect(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_y_, int __pyx_skip_dispatch) {
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_result_indexer;
-  __pyx_t_5numpy_int32_t __pyx_v_xind;
-  PyArrayObject *__pyx_v_xindices = 0;
-  PyArrayObject *__pyx_v_yindices = 0;
-  PyArrayObject *__pyx_v_new_indices = 0;
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_y = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_new_indices;
-  __Pyx_Buffer __pyx_pybuffer_new_indices;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_xindices;
-  __Pyx_Buffer __pyx_pybuffer_xindices;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_yindices;
-  __Pyx_Buffer __pyx_pybuffer_yindices;
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("intersect", 0);
-  __pyx_pybuffer_xindices.pybuffer.buf = NULL;
-  __pyx_pybuffer_xindices.refcount = 0;
-  __pyx_pybuffernd_xindices.data = NULL;
-  __pyx_pybuffernd_xindices.rcbuffer = &__pyx_pybuffer_xindices;
-  __pyx_pybuffer_yindices.pybuffer.buf = NULL;
-  __pyx_pybuffer_yindices.refcount = 0;
-  __pyx_pybuffernd_yindices.data = NULL;
-  __pyx_pybuffernd_yindices.rcbuffer = &__pyx_pybuffer_yindices;
-  __pyx_pybuffer_new_indices.pybuffer.buf = NULL;
-  __pyx_pybuffer_new_indices.refcount = 0;
-  __pyx_pybuffernd_new_indices.data = NULL;
-  __pyx_pybuffernd_new_indices.rcbuffer = &__pyx_pybuffer_new_indices;
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_intersect); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 128, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_15intersect)) {
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-          if (likely(__pyx_t_4)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-            __Pyx_INCREF(__pyx_t_4);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_3, function);
-          }
-        }
-        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_y_)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_y_));
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 128, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(0, 128, __pyx_L1_error)
-        __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_2);
-        __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_13);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xindices.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yindices.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.intersect", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xindices.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yindices.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_xindices);
-  __Pyx_XDECREF((PyObject *)__pyx_v_yindices);
-  __Pyx_XDECREF((PyObject *)__pyx_v_new_indices);
-  __Pyx_XDECREF((PyObject *)__pyx_v_y);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_15intersect(PyObject *__pyx_v_self, PyObject *__pyx_v_y_); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_15intersect(PyObject *__pyx_v_self, PyObject *__pyx_v_y_) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("intersect (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "y_", 0))) __PYX_ERR(0, 128, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_14intersect(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_y_));
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_14intersect(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_y_) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("intersect", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_8IntIndex_intersect(__pyx_v_self, __pyx_v_y_, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 128, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.intersect", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 129:         cdef:
-
+130:             Py_ssize_t out_length, xi, yi = 0, result_indexer = 0
-
  __pyx_v_yi = 0;
-  __pyx_v_result_indexer = 0;
-
 131:             int32_t xind
-
 132:             ndarray[int32_t, ndim=1] xindices, yindices, new_indices
-
 133:             IntIndex y
-
 134: 
-
 135:         # if is one already, returns self
-
+136:         y = y_.to_int_index()
-
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_y_), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 136, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 136, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(0, 136, __pyx_L1_error)
-  __pyx_v_y = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
 137: 
-
+138:         if self.length != y.length:
-
  __pyx_t_5 = ((__pyx_v_self->length != __pyx_v_y->length) != 0);
-  if (unlikely(__pyx_t_5)) {
-/* … */
-  }
-
+139:             raise Exception('Indices must reference same underlying length')
-
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 139, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __PYX_ERR(0, 139, __pyx_L1_error)
-/* … */
-  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_kp_u_Indices_must_reference_same_unde); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 139, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__7);
-  __Pyx_GIVEREF(__pyx_tuple__7);
-
 140: 
-
+141:         xindices = self.indices
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->indices);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xindices.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xindices.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xindices.rcbuffer->pybuffer, (PyObject*)__pyx_v_xindices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-      }
-      __pyx_t_7 = __pyx_t_8 = __pyx_t_9 = 0;
-    }
-    __pyx_pybuffernd_xindices.diminfo[0].strides = __pyx_pybuffernd_xindices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xindices.diminfo[0].shape = __pyx_pybuffernd_xindices.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 141, __pyx_L1_error)
-  }
-  __pyx_v_xindices = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+142:         yindices = y.indices
-
  __pyx_t_1 = ((PyObject *)__pyx_v_y->indices);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yindices.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yindices.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yindices.rcbuffer->pybuffer, (PyObject*)__pyx_v_yindices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
-      }
-      __pyx_t_9 = __pyx_t_8 = __pyx_t_7 = 0;
-    }
-    __pyx_pybuffernd_yindices.diminfo[0].strides = __pyx_pybuffernd_yindices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_yindices.diminfo[0].shape = __pyx_pybuffernd_yindices.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 142, __pyx_L1_error)
-  }
-  __pyx_v_yindices = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+143:         new_indices = np.empty(min(
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 143, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 143, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-/* … */
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 143, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-/* … */
-  __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 143, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 143, __pyx_L1_error)
-  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_new_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-      }
-      __pyx_t_7 = __pyx_t_8 = __pyx_t_9 = 0;
-    }
-    __pyx_pybuffernd_new_indices.diminfo[0].strides = __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_new_indices.diminfo[0].shape = __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 143, __pyx_L1_error)
-  }
-  __pyx_t_14 = 0;
-  __pyx_v_new_indices = ((PyArrayObject *)__pyx_t_13);
-  __pyx_t_13 = 0;
-
+144:             len(xindices), len(yindices)), dtype=np.int32)
-
  __pyx_t_10 = PyObject_Length(((PyObject *)__pyx_v_yindices)); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 144, __pyx_L1_error)
-  __pyx_t_11 = PyObject_Length(((PyObject *)__pyx_v_xindices)); if (unlikely(__pyx_t_11 == ((Py_ssize_t)-1))) __PYX_ERR(0, 144, __pyx_L1_error)
-  if (((__pyx_t_10 < __pyx_t_11) != 0)) {
-    __pyx_t_12 = __pyx_t_10;
-  } else {
-    __pyx_t_12 = __pyx_t_11;
-  }
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_12); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-/* … */
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 144, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 144, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 144, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_13) < 0) __PYX_ERR(0, 144, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-
 145: 
-
+146:         for xi in range(self.npoints):
-
  __pyx_t_12 = __pyx_v_self->npoints;
-  __pyx_t_10 = __pyx_t_12;
-  for (__pyx_t_11 = 0; __pyx_t_11 < __pyx_t_10; __pyx_t_11+=1) {
-    __pyx_v_xi = __pyx_t_11;
-
+147:             xind = xindices[xi]
-
    __pyx_t_15 = __pyx_v_xi;
-    __pyx_t_6 = -1;
-    if (__pyx_t_15 < 0) {
-      __pyx_t_15 += __pyx_pybuffernd_xindices.diminfo[0].shape;
-      if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
-    } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_xindices.diminfo[0].shape)) __pyx_t_6 = 0;
-    if (unlikely(__pyx_t_6 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_6);
-      __PYX_ERR(0, 147, __pyx_L1_error)
-    }
-    __pyx_v_xind = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xindices.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_xindices.diminfo[0].strides));
-
 148: 
-
+149:             while yi < y.npoints and yindices[yi] < xind:
-
    while (1) {
-      __pyx_t_16 = ((__pyx_v_yi < __pyx_v_y->npoints) != 0);
-      if (__pyx_t_16) {
-      } else {
-        __pyx_t_5 = __pyx_t_16;
-        goto __pyx_L8_bool_binop_done;
-      }
-      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_6 = -1;
-      if (__pyx_t_15 < 0) {
-        __pyx_t_15 += __pyx_pybuffernd_yindices.diminfo[0].shape;
-        if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_yindices.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 149, __pyx_L1_error)
-      }
-      __pyx_t_16 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yindices.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_yindices.diminfo[0].strides)) < __pyx_v_xind) != 0);
-      __pyx_t_5 = __pyx_t_16;
-      __pyx_L8_bool_binop_done:;
-      if (!__pyx_t_5) break;
-
+150:                 yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-
 151: 
-
+152:             if yi >= y.npoints:
-
    __pyx_t_5 = ((__pyx_v_yi >= __pyx_v_y->npoints) != 0);
-    if (__pyx_t_5) {
-/* … */
-    }
-
+153:                 break
-
      goto __pyx_L5_break;
-
 154: 
-
 155:             # TODO: would a two-pass algorithm be faster?
-
+156:             if yindices[yi] == xind:
-
    __pyx_t_15 = __pyx_v_yi;
-    __pyx_t_6 = -1;
-    if (__pyx_t_15 < 0) {
-      __pyx_t_15 += __pyx_pybuffernd_yindices.diminfo[0].shape;
-      if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
-    } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_yindices.diminfo[0].shape)) __pyx_t_6 = 0;
-    if (unlikely(__pyx_t_6 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_6);
-      __PYX_ERR(0, 156, __pyx_L1_error)
-    }
-    __pyx_t_5 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yindices.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_yindices.diminfo[0].strides)) == __pyx_v_xind) != 0);
-    if (__pyx_t_5) {
-/* … */
-    }
-  }
-  __pyx_L5_break:;
-
+157:                 new_indices[result_indexer] = xind
-
      __pyx_t_15 = __pyx_v_result_indexer;
-      __pyx_t_6 = -1;
-      if (__pyx_t_15 < 0) {
-        __pyx_t_15 += __pyx_pybuffernd_new_indices.diminfo[0].shape;
-        if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_new_indices.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 157, __pyx_L1_error)
-      }
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_new_indices.diminfo[0].strides) = __pyx_v_xind;
-
+158:                 result_indexer += 1
-
      __pyx_v_result_indexer = (__pyx_v_result_indexer + 1);
-
 159: 
-
+160:         new_indices = new_indices[:result_indexer]
-
  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 160, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_1 = PySlice_New(Py_None, __pyx_t_13, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 160, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  __pyx_t_13 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_new_indices), __pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 160, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 160, __pyx_L1_error)
-  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_new_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
-      }
-      __pyx_t_9 = __pyx_t_8 = __pyx_t_7 = 0;
-    }
-    __pyx_pybuffernd_new_indices.diminfo[0].strides = __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_new_indices.diminfo[0].shape = __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 160, __pyx_L1_error)
-  }
-  __pyx_t_14 = 0;
-  __Pyx_DECREF_SET(__pyx_v_new_indices, ((PyArrayObject *)__pyx_t_13));
-  __pyx_t_13 = 0;
-
+161:         return IntIndex(self.length, new_indices)
-
  __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 161, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 161, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_13);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_13);
-  __Pyx_INCREF(((PyObject *)__pyx_v_new_indices));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_new_indices));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_new_indices));
-  __pyx_t_13 = 0;
-  __pyx_t_13 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_IntIndex), __pyx_t_1, NULL); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 161, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_13);
-  __pyx_t_13 = 0;
-  goto __pyx_L0;
-
 162: 
-
+163:     cpdef IntIndex make_union(self, SparseIndex y_):
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_17make_union(PyObject *__pyx_v_self, PyObject *__pyx_v_y_); /*proto*/
-static struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_f_6pandas_5_libs_6sparse_8IntIndex_make_union(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_y_, int __pyx_skip_dispatch) {
-  PyArrayObject *__pyx_v_new_indices = 0;
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_y = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_new_indices;
-  __Pyx_Buffer __pyx_pybuffer_new_indices;
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("make_union", 0);
-  __pyx_pybuffer_new_indices.pybuffer.buf = NULL;
-  __pyx_pybuffer_new_indices.refcount = 0;
-  __pyx_pybuffernd_new_indices.data = NULL;
-  __pyx_pybuffernd_new_indices.rcbuffer = &__pyx_pybuffer_new_indices;
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_union); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_17make_union)) {
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-          if (likely(__pyx_t_4)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-            __Pyx_INCREF(__pyx_t_4);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_3, function);
-          }
-        }
-        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_y_)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_y_));
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 163, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(0, 163, __pyx_L1_error)
-        __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_2);
-        __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.make_union", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_new_indices);
-  __Pyx_XDECREF((PyObject *)__pyx_v_y);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_17make_union(PyObject *__pyx_v_self, PyObject *__pyx_v_y_); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_17make_union(PyObject *__pyx_v_self, PyObject *__pyx_v_y_) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("make_union (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y_), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "y_", 0))) __PYX_ERR(0, 163, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_16make_union(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_y_));
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_16make_union(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_y_) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("make_union", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_8IntIndex_make_union(__pyx_v_self, __pyx_v_y_, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.make_union", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 164: 
-
 165:         cdef:
-
 166:             ndarray[int32_t, ndim=1] new_indices
-
 167:             IntIndex y
-
 168: 
-
 169:         # if is one already, returns self
-
+170:         y = y_.to_int_index()
-
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_y_), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 170, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 170, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(0, 170, __pyx_L1_error)
-  __pyx_v_y = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
 171: 
-
+172:         if self.length != y.length:
-
  __pyx_t_5 = ((__pyx_v_self->length != __pyx_v_y->length) != 0);
-  if (unlikely(__pyx_t_5)) {
-/* … */
-  }
-
+173:             raise ValueError('Indices must reference same underlying length')
-
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 173, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __PYX_ERR(0, 173, __pyx_L1_error)
-
 174: 
-
+175:         new_indices = np.union1d(self.indices, y.indices)
-
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 175, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_union1d); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 175, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = NULL;
-  __pyx_t_6 = 0;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_3);
-    if (likely(__pyx_t_2)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-      __Pyx_INCREF(__pyx_t_2);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_3, function);
-      __pyx_t_6 = 1;
-    }
-  }
-  #if CYTHON_FAST_PYCALL
-  if (PyFunction_Check(__pyx_t_3)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_v_self->indices), ((PyObject *)__pyx_v_y->indices)};
-    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-  } else
-  #endif
-  #if CYTHON_FAST_PYCCALL
-  if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_2, ((PyObject *)__pyx_v_self->indices), ((PyObject *)__pyx_v_y->indices)};
-    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __Pyx_GOTREF(__pyx_t_1);
-  } else
-  #endif
-  {
-    __pyx_t_4 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 175, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    if (__pyx_t_2) {
-      __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2); __pyx_t_2 = NULL;
-    }
-    __Pyx_INCREF(((PyObject *)__pyx_v_self->indices));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_self->indices));
-    PyTuple_SET_ITEM(__pyx_t_4, 0+__pyx_t_6, ((PyObject *)__pyx_v_self->indices));
-    __Pyx_INCREF(((PyObject *)__pyx_v_y->indices));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_y->indices));
-    PyTuple_SET_ITEM(__pyx_t_4, 1+__pyx_t_6, ((PyObject *)__pyx_v_y->indices));
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 175, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 175, __pyx_L1_error)
-  __pyx_t_7 = ((PyArrayObject *)__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_new_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_new_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_new_indices.diminfo[0].strides = __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_new_indices.diminfo[0].shape = __pyx_pybuffernd_new_indices.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 175, __pyx_L1_error)
-  }
-  __pyx_t_7 = 0;
-  __pyx_v_new_indices = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+176:         return IntIndex(self.length, new_indices)
-
  __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_self->length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 176, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_new_indices));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_new_indices));
-  PyTuple_SET_ITEM(__pyx_t_3, 1, ((PyObject *)__pyx_v_new_indices));
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_IntIndex), __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 176, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 177: 
-
 178:     @cython.wraparound(False)
-
+179:     cpdef int32_t lookup(self, Py_ssize_t index):
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_19lookup(PyObject *__pyx_v_self, PyObject *__pyx_arg_index); /*proto*/
-static __pyx_t_5numpy_int32_t __pyx_f_6pandas_5_libs_6sparse_8IntIndex_lookup(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, Py_ssize_t __pyx_v_index, int __pyx_skip_dispatch) {
-  __pyx_t_5numpy_int32_t __pyx_v_res;
-  PyArrayObject *__pyx_v_inds = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_inds;
-  __Pyx_Buffer __pyx_pybuffer_inds;
-  __pyx_t_5numpy_int32_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("lookup", 0);
-  __pyx_pybuffer_inds.pybuffer.buf = NULL;
-  __pyx_pybuffer_inds.refcount = 0;
-  __pyx_pybuffernd_inds.data = NULL;
-  __pyx_pybuffernd_inds.rcbuffer = &__pyx_pybuffer_inds;
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_19lookup)) {
-        __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 179, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
-          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-          if (likely(__pyx_t_5)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-            __Pyx_INCREF(__pyx_t_5);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_4, function);
-          }
-        }
-        __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 179, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_6 = __Pyx_PyInt_As_npy_int32(__pyx_t_2); if (unlikely((__pyx_t_6 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 179, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __pyx_r = __pyx_t_6;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inds.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_WriteUnraisable("pandas._libs.sparse.IntIndex.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inds.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_inds);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_19lookup(PyObject *__pyx_v_self, PyObject *__pyx_arg_index); /*proto*/
-static char __pyx_doc_6pandas_5_libs_6sparse_8IntIndex_18lookup[] = "\n        Return the internal location if value exists on given index.\n        Return -1 otherwise.\n        ";
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_19lookup(PyObject *__pyx_v_self, PyObject *__pyx_arg_index) {
-  Py_ssize_t __pyx_v_index;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("lookup (wrapper)", 0);
-  assert(__pyx_arg_index); {
-    __pyx_v_index = __Pyx_PyIndex_AsSsize_t(__pyx_arg_index); if (unlikely((__pyx_v_index == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 179, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_18lookup(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), ((Py_ssize_t)__pyx_v_index));
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_18lookup(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, Py_ssize_t __pyx_v_index) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("lookup", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_f_6pandas_5_libs_6sparse_8IntIndex_lookup(__pyx_v_self, __pyx_v_index, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 180:         """
-
 181:         Return the internal location if value exists on given index.
-
 182:         Return -1 otherwise.
-
 183:         """
-
 184:         cdef:
-
 185:             int32_t res
-
 186:             ndarray[int32_t, ndim=1] inds
-
 187: 
-
+188:         inds = self.indices
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->indices);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inds.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_inds.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_inds.rcbuffer->pybuffer, (PyObject*)__pyx_v_inds, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_inds.diminfo[0].strides = __pyx_pybuffernd_inds.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_inds.diminfo[0].shape = __pyx_pybuffernd_inds.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 188, __pyx_L1_error)
-  }
-  __pyx_v_inds = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+189:         if self.npoints == 0:
-
  __pyx_t_11 = ((__pyx_v_self->npoints == 0) != 0);
-  if (__pyx_t_11) {
-/* … */
-  }
-
+190:             return -1
-
    __pyx_r = -1;
-    goto __pyx_L0;
-
+191:         elif index < 0 or self.length <= index:
-
  __pyx_t_12 = ((__pyx_v_index < 0) != 0);
-  if (!__pyx_t_12) {
-  } else {
-    __pyx_t_11 = __pyx_t_12;
-    goto __pyx_L4_bool_binop_done;
-  }
-  __pyx_t_12 = ((__pyx_v_self->length <= __pyx_v_index) != 0);
-  __pyx_t_11 = __pyx_t_12;
-  __pyx_L4_bool_binop_done:;
-  if (__pyx_t_11) {
-/* … */
-  }
-
+192:             return -1
-
    __pyx_r = -1;
-    goto __pyx_L0;
-
 193: 
-
+194:         res = inds.searchsorted(index)
-
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_inds), __pyx_n_s_searchsorted); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 194, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 194, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_3 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 194, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_6 = __Pyx_PyInt_As_npy_int32(__pyx_t_1); if (unlikely((__pyx_t_6 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 194, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_v_res = __pyx_t_6;
-
+195:         if res == self.npoints:
-
  __pyx_t_11 = ((__pyx_v_res == __pyx_v_self->npoints) != 0);
-  if (__pyx_t_11) {
-/* … */
-  }
-
+196:             return -1
-
    __pyx_r = -1;
-    goto __pyx_L0;
-
+197:         elif inds[res] == index:
-
  __pyx_t_13 = __pyx_v_res;
-  __pyx_t_7 = -1;
-  if (__pyx_t_13 < 0) {
-    __pyx_t_7 = 0;
-  } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_inds.diminfo[0].shape)) __pyx_t_7 = 0;
-  if (unlikely(__pyx_t_7 != -1)) {
-    __Pyx_RaiseBufferIndexError(__pyx_t_7);
-    __PYX_ERR(0, 197, __pyx_L1_error)
-  }
-  __pyx_t_11 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_inds.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_inds.diminfo[0].strides)) == __pyx_v_index) != 0);
-  if (__pyx_t_11) {
-/* … */
-  }
-
+198:             return res
-
    __pyx_r = __pyx_v_res;
-    goto __pyx_L0;
-
 199:         else:
-
+200:             return -1
-
  /*else*/ {
-    __pyx_r = -1;
-    goto __pyx_L0;
-  }
-
 201: 
-
 202:     @cython.wraparound(False)
-
+203:     cpdef ndarray[int32_t] lookup_array(self, ndarray[int32_t, ndim=1] indexer):
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_21lookup_array(PyObject *__pyx_v_self, PyObject *__pyx_v_indexer); /*proto*/
-static PyArrayObject *__pyx_f_6pandas_5_libs_6sparse_8IntIndex_lookup_array(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyArrayObject *__pyx_v_indexer, int __pyx_skip_dispatch) {
-  Py_ssize_t __pyx_v_n;
-  PyArrayObject *__pyx_v_inds = 0;
-  PyArrayObject *__pyx_v_mask = 0;
-  PyArrayObject *__pyx_v_masked = 0;
-  PyArrayObject *__pyx_v_res = 0;
-  PyArrayObject *__pyx_v_results = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indexer;
-  __Pyx_Buffer __pyx_pybuffer_indexer;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_inds;
-  __Pyx_Buffer __pyx_pybuffer_inds;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_mask;
-  __Pyx_Buffer __pyx_pybuffer_mask;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_masked;
-  __Pyx_Buffer __pyx_pybuffer_masked;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_res;
-  __Pyx_Buffer __pyx_pybuffer_res;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_results;
-  __Pyx_Buffer __pyx_pybuffer_results;
-  PyArrayObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("lookup_array", 0);
-  __pyx_pybuffer_inds.pybuffer.buf = NULL;
-  __pyx_pybuffer_inds.refcount = 0;
-  __pyx_pybuffernd_inds.data = NULL;
-  __pyx_pybuffernd_inds.rcbuffer = &__pyx_pybuffer_inds;
-  __pyx_pybuffer_mask.pybuffer.buf = NULL;
-  __pyx_pybuffer_mask.refcount = 0;
-  __pyx_pybuffernd_mask.data = NULL;
-  __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask;
-  __pyx_pybuffer_masked.pybuffer.buf = NULL;
-  __pyx_pybuffer_masked.refcount = 0;
-  __pyx_pybuffernd_masked.data = NULL;
-  __pyx_pybuffernd_masked.rcbuffer = &__pyx_pybuffer_masked;
-  __pyx_pybuffer_res.pybuffer.buf = NULL;
-  __pyx_pybuffer_res.refcount = 0;
-  __pyx_pybuffernd_res.data = NULL;
-  __pyx_pybuffernd_res.rcbuffer = &__pyx_pybuffer_res;
-  __pyx_pybuffer_results.pybuffer.buf = NULL;
-  __pyx_pybuffer_results.refcount = 0;
-  __pyx_pybuffernd_results.data = NULL;
-  __pyx_pybuffernd_results.rcbuffer = &__pyx_pybuffer_results;
-  __pyx_pybuffer_indexer.pybuffer.buf = NULL;
-  __pyx_pybuffer_indexer.refcount = 0;
-  __pyx_pybuffernd_indexer.data = NULL;
-  __pyx_pybuffernd_indexer.rcbuffer = &__pyx_pybuffer_indexer;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 203, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indexer.diminfo[0].strides = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indexer.diminfo[0].shape = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.shape[0];
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_21lookup_array)) {
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-          if (likely(__pyx_t_4)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-            __Pyx_INCREF(__pyx_t_4);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_3, function);
-          }
-        }
-        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_indexer)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_indexer));
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 203, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 203, __pyx_L1_error)
-        __pyx_r = ((PyArrayObject *)__pyx_t_2);
-        __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_6);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inds.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_masked.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_results.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.lookup_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inds.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_masked.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_results.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_inds);
-  __Pyx_XDECREF((PyObject *)__pyx_v_mask);
-  __Pyx_XDECREF((PyObject *)__pyx_v_masked);
-  __Pyx_XDECREF((PyObject *)__pyx_v_res);
-  __Pyx_XDECREF((PyObject *)__pyx_v_results);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_21lookup_array(PyObject *__pyx_v_self, PyObject *__pyx_v_indexer); /*proto*/
-static char __pyx_doc_6pandas_5_libs_6sparse_8IntIndex_20lookup_array[] = "\n        Vectorized lookup, returns ndarray[int32_t]\n        ";
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_21lookup_array(PyObject *__pyx_v_self, PyObject *__pyx_v_indexer) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("lookup_array (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) __PYX_ERR(0, 203, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_20lookup_array(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), ((PyArrayObject *)__pyx_v_indexer));
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_20lookup_array(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyArrayObject *__pyx_v_indexer) {
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indexer;
-  __Pyx_Buffer __pyx_pybuffer_indexer;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("lookup_array", 0);
-  __pyx_pybuffer_indexer.pybuffer.buf = NULL;
-  __pyx_pybuffer_indexer.refcount = 0;
-  __pyx_pybuffernd_indexer.data = NULL;
-  __pyx_pybuffernd_indexer.rcbuffer = &__pyx_pybuffer_indexer;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 203, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indexer.diminfo[0].strides = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indexer.diminfo[0].shape = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.shape[0];
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_8IntIndex_lookup_array(__pyx_v_self, __pyx_v_indexer, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 203, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.lookup_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 204:         """
-
 205:         Vectorized lookup, returns ndarray[int32_t]
-
 206:         """
-
 207:         cdef:
-
 208:             Py_ssize_t n, i, ind_val
-
 209:             ndarray[int32_t, ndim=1] inds
-
 210:             ndarray[uint8_t, ndim=1, cast=True] mask
-
 211:             ndarray[int32_t, ndim=1] masked
-
 212:             ndarray[int32_t, ndim=1] res
-
 213:             ndarray[int32_t, ndim=1] results
-
 214: 
-
+215:         n = len(indexer)
-
  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 215, __pyx_L1_error)
-  __pyx_v_n = __pyx_t_5;
-
+216:         results = np.empty(n, dtype=np.int32)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 216, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 216, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 216, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 216, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 216, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 216, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 216, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 216, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 216, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 216, __pyx_L1_error)
-  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_results.rcbuffer->pybuffer);
-    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_results.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_8 < 0)) {
-      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_results.rcbuffer->pybuffer, (PyObject*)__pyx_v_results, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-      }
-      __pyx_t_9 = __pyx_t_10 = __pyx_t_11 = 0;
-    }
-    __pyx_pybuffernd_results.diminfo[0].strides = __pyx_pybuffernd_results.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_results.diminfo[0].shape = __pyx_pybuffernd_results.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 216, __pyx_L1_error)
-  }
-  __pyx_t_7 = 0;
-  __pyx_v_results = ((PyArrayObject *)__pyx_t_6);
-  __pyx_t_6 = 0;
-
+217:         results[:] = -1
-
  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_results), __pyx_slice__8, __pyx_int_neg_1) < 0)) __PYX_ERR(0, 217, __pyx_L1_error)
-/* … */
-  __pyx_slice__8 = PySlice_New(Py_None, Py_None, Py_None); if (unlikely(!__pyx_slice__8)) __PYX_ERR(0, 217, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_slice__8);
-  __Pyx_GIVEREF(__pyx_slice__8);
-
 218: 
-
+219:         if self.npoints == 0:
-
  __pyx_t_12 = ((__pyx_v_self->npoints == 0) != 0);
-  if (__pyx_t_12) {
-/* … */
-  }
-
+220:             return results
-
    __Pyx_XDECREF(((PyObject *)__pyx_r));
-    __Pyx_INCREF(((PyObject *)__pyx_v_results));
-    __pyx_r = ((PyArrayObject *)__pyx_v_results);
-    goto __pyx_L0;
-
 221: 
-
+222:         inds = self.indices
-
  __pyx_t_6 = ((PyObject *)__pyx_v_self->indices);
-  __Pyx_INCREF(__pyx_t_6);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_inds.rcbuffer->pybuffer);
-    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_inds.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_6), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_8 < 0)) {
-      PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_inds.rcbuffer->pybuffer, (PyObject*)__pyx_v_inds, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-      }
-      __pyx_t_11 = __pyx_t_10 = __pyx_t_9 = 0;
-    }
-    __pyx_pybuffernd_inds.diminfo[0].strides = __pyx_pybuffernd_inds.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_inds.diminfo[0].shape = __pyx_pybuffernd_inds.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 222, __pyx_L1_error)
-  }
-  __pyx_v_inds = ((PyArrayObject *)__pyx_t_6);
-  __pyx_t_6 = 0;
-
+223:         mask = (inds[0] <= indexer) & (indexer <= inds[len(inds) - 1])
-
  __pyx_t_13 = 0;
-  __pyx_t_8 = -1;
-  if (__pyx_t_13 < 0) {
-    __pyx_t_8 = 0;
-  } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_inds.diminfo[0].shape)) __pyx_t_8 = 0;
-  if (unlikely(__pyx_t_8 != -1)) {
-    __Pyx_RaiseBufferIndexError(__pyx_t_8);
-    __PYX_ERR(0, 223, __pyx_L1_error)
-  }
-  __pyx_t_6 = __Pyx_PyInt_From_npy_int32((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_inds.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_inds.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 223, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, ((PyObject *)__pyx_v_indexer), Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 223, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_5 = PyObject_Length(((PyObject *)__pyx_v_inds)); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 223, __pyx_L1_error)
-  __pyx_t_13 = (__pyx_t_5 - 1);
-  __pyx_t_8 = -1;
-  if (__pyx_t_13 < 0) {
-    __pyx_t_8 = 0;
-  } else if (unlikely(__pyx_t_13 >= __pyx_pybuffernd_inds.diminfo[0].shape)) __pyx_t_8 = 0;
-  if (unlikely(__pyx_t_8 != -1)) {
-    __Pyx_RaiseBufferIndexError(__pyx_t_8);
-    __PYX_ERR(0, 223, __pyx_L1_error)
-  }
-  __pyx_t_6 = __Pyx_PyInt_From_npy_int32((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_inds.rcbuffer->pybuffer.buf, __pyx_t_13, __pyx_pybuffernd_inds.diminfo[0].strides))); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 223, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_3 = PyObject_RichCompare(((PyObject *)__pyx_v_indexer), __pyx_t_6, Py_LE); __Pyx_XGOTREF(__pyx_t_3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 223, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = PyNumber_And(__pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 223, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 223, __pyx_L1_error)
-  __pyx_t_14 = ((PyArrayObject *)__pyx_t_6);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
-    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack);
-    if (unlikely(__pyx_t_8 < 0)) {
-      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 1, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-      }
-      __pyx_t_9 = __pyx_t_10 = __pyx_t_11 = 0;
-    }
-    __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 223, __pyx_L1_error)
-  }
-  __pyx_t_14 = 0;
-  __pyx_v_mask = ((PyArrayObject *)__pyx_t_6);
-  __pyx_t_6 = 0;
-
 224: 
-
+225:         masked = indexer[mask]
-
  __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_indexer), ((PyObject *)__pyx_v_mask)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 225, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 225, __pyx_L1_error)
-  __pyx_t_15 = ((PyArrayObject *)__pyx_t_6);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_masked.rcbuffer->pybuffer);
-    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_masked.rcbuffer->pybuffer, (PyObject*)__pyx_t_15, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_8 < 0)) {
-      PyErr_Fetch(&__pyx_t_11, &__pyx_t_10, &__pyx_t_9);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_masked.rcbuffer->pybuffer, (PyObject*)__pyx_v_masked, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_11, __pyx_t_10, __pyx_t_9);
-      }
-      __pyx_t_11 = __pyx_t_10 = __pyx_t_9 = 0;
-    }
-    __pyx_pybuffernd_masked.diminfo[0].strides = __pyx_pybuffernd_masked.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_masked.diminfo[0].shape = __pyx_pybuffernd_masked.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 225, __pyx_L1_error)
-  }
-  __pyx_t_15 = 0;
-  __pyx_v_masked = ((PyArrayObject *)__pyx_t_6);
-  __pyx_t_6 = 0;
-
+226:         res = inds.searchsorted(masked).astype(np.int32)
-
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_inds), __pyx_n_s_searchsorted); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
-    __pyx_t_2 = PyMethod_GET_SELF(__pyx_t_1);
-    if (likely(__pyx_t_2)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-      __Pyx_INCREF(__pyx_t_2);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_1, function);
-    }
-  }
-  __pyx_t_3 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_2, ((PyObject *)__pyx_v_masked)) : __Pyx_PyObject_CallOneArg(__pyx_t_1, ((PyObject *)__pyx_v_masked));
-  __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 226, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_astype); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 226, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 226, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_int32); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 226, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_1);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_1);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_1, function);
-    }
-  }
-  __pyx_t_6 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_1, __pyx_t_3, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 226, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 226, __pyx_L1_error)
-  __pyx_t_16 = ((PyArrayObject *)__pyx_t_6);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_res.rcbuffer->pybuffer);
-    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_t_16, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_8 < 0)) {
-      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_res.rcbuffer->pybuffer, (PyObject*)__pyx_v_res, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-      }
-      __pyx_t_9 = __pyx_t_10 = __pyx_t_11 = 0;
-    }
-    __pyx_pybuffernd_res.diminfo[0].strides = __pyx_pybuffernd_res.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_res.diminfo[0].shape = __pyx_pybuffernd_res.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 226, __pyx_L1_error)
-  }
-  __pyx_t_16 = 0;
-  __pyx_v_res = ((PyArrayObject *)__pyx_t_6);
-  __pyx_t_6 = 0;
-
 227: 
-
+228:         res[inds[res] != masked] = -1
-
  __pyx_t_6 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_inds), ((PyObject *)__pyx_v_res)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 228, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_1 = PyObject_RichCompare(__pyx_t_6, ((PyObject *)__pyx_v_masked), Py_NE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 228, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_res), __pyx_t_1, __pyx_int_neg_1) < 0)) __PYX_ERR(0, 228, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-
+229:         results[mask] = res
-
  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_results), ((PyObject *)__pyx_v_mask), ((PyObject *)__pyx_v_res)) < 0)) __PYX_ERR(0, 229, __pyx_L1_error)
-
+230:         return results
-
  __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __Pyx_INCREF(((PyObject *)__pyx_v_results));
-  __pyx_r = ((PyArrayObject *)__pyx_v_results);
-  goto __pyx_L0;
-
 231: 
-
+232:     cpdef ndarray reindex(self, ndarray[float64_t, ndim=1] values,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_23reindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyArrayObject *__pyx_f_6pandas_5_libs_6sparse_8IntIndex_reindex(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, __pyx_t_5numpy_float64_t __pyx_v_fill_value, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other_, int __pyx_skip_dispatch) {
-  Py_ssize_t __pyx_v_i;
-  Py_ssize_t __pyx_v_j;
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_other = 0;
-  PyArrayObject *__pyx_v_result = 0;
-  PyArrayObject *__pyx_v_sinds = 0;
-  PyArrayObject *__pyx_v_oinds = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_oinds;
-  __Pyx_Buffer __pyx_pybuffer_oinds;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_result;
-  __Pyx_Buffer __pyx_pybuffer_result;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_sinds;
-  __Pyx_Buffer __pyx_pybuffer_sinds;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
-  __Pyx_Buffer __pyx_pybuffer_values;
-  PyArrayObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("reindex", 0);
-  __pyx_pybuffer_result.pybuffer.buf = NULL;
-  __pyx_pybuffer_result.refcount = 0;
-  __pyx_pybuffernd_result.data = NULL;
-  __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result;
-  __pyx_pybuffer_sinds.pybuffer.buf = NULL;
-  __pyx_pybuffer_sinds.refcount = 0;
-  __pyx_pybuffernd_sinds.data = NULL;
-  __pyx_pybuffernd_sinds.rcbuffer = &__pyx_pybuffer_sinds;
-  __pyx_pybuffer_oinds.pybuffer.buf = NULL;
-  __pyx_pybuffer_oinds.refcount = 0;
-  __pyx_pybuffernd_oinds.data = NULL;
-  __pyx_pybuffernd_oinds.rcbuffer = &__pyx_pybuffer_oinds;
-  __pyx_pybuffer_values.pybuffer.buf = NULL;
-  __pyx_pybuffer_values.refcount = 0;
-  __pyx_pybuffernd_values.data = NULL;
-  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 232, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reindex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_23reindex)) {
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __pyx_t_3 = PyFloat_FromDouble(__pyx_v_fill_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 232, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
-        __pyx_t_6 = 0;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
-          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-          if (likely(__pyx_t_5)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-            __Pyx_INCREF(__pyx_t_5);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_4, function);
-            __pyx_t_6 = 1;
-          }
-        }
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_values), __pyx_t_3, ((PyObject *)__pyx_v_other_)};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 232, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_values), __pyx_t_3, ((PyObject *)__pyx_v_other_)};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 232, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        } else
-        #endif
-        {
-          __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 232, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_7);
-          if (__pyx_t_5) {
-            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
-          }
-          __Pyx_INCREF(((PyObject *)__pyx_v_values));
-          __Pyx_GIVEREF(((PyObject *)__pyx_v_values));
-          PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_values));
-          __Pyx_GIVEREF(__pyx_t_3);
-          PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3);
-          __Pyx_INCREF(((PyObject *)__pyx_v_other_));
-          __Pyx_GIVEREF(((PyObject *)__pyx_v_other_));
-          PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, ((PyObject *)__pyx_v_other_));
-          __pyx_t_3 = 0;
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 232, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        }
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 232, __pyx_L1_error)
-        __pyx_r = ((PyArrayObject *)__pyx_t_2);
-        __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_7);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_oinds.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sinds.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.reindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_oinds.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sinds.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_other);
-  __Pyx_XDECREF((PyObject *)__pyx_v_result);
-  __Pyx_XDECREF((PyObject *)__pyx_v_sinds);
-  __Pyx_XDECREF((PyObject *)__pyx_v_oinds);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_23reindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_23reindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyArrayObject *__pyx_v_values = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_fill_value;
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other_ = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("reindex (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_values,&__pyx_n_s_fill_value,&__pyx_n_s_other,0};
-    PyObject* values[3] = {0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_values)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fill_value)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("reindex", 1, 3, 3, 1); __PYX_ERR(0, 232, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_other)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("reindex", 1, 3, 3, 2); __PYX_ERR(0, 232, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reindex") < 0)) __PYX_ERR(0, 232, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-    }
-    __pyx_v_values = ((PyArrayObject *)values[0]);
-    __pyx_v_fill_value = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_fill_value == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 233, __pyx_L3_error)
-    __pyx_v_other_ = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[2]);
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("reindex", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 232, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.reindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) __PYX_ERR(0, 232, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other_), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "other_", 0))) __PYX_ERR(0, 233, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_22reindex(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), __pyx_v_values, __pyx_v_fill_value, __pyx_v_other_);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_22reindex(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, __pyx_t_5numpy_float64_t __pyx_v_fill_value, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other_) {
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
-  __Pyx_Buffer __pyx_pybuffer_values;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("reindex", 0);
-  __pyx_pybuffer_values.pybuffer.buf = NULL;
-  __pyx_pybuffer_values.refcount = 0;
-  __pyx_pybuffernd_values.data = NULL;
-  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 232, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_8IntIndex_reindex(__pyx_v_self, __pyx_v_values, __pyx_v_fill_value, __pyx_v_other_, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 232, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.reindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 233:                           float64_t fill_value, SparseIndex other_):
-
 234:         cdef:
-
+235:             Py_ssize_t i = 0, j = 0
-
  __pyx_v_i = 0;
-  __pyx_v_j = 0;
-
 236:             IntIndex other
-
 237:             ndarray[float64_t, ndim=1] result
-
 238:             ndarray[int32_t, ndim=1] sinds, oinds
-
 239: 
-
+240:         other = other_.to_int_index()
-
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_other_), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 240, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_4)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_4);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 240, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(0, 240, __pyx_L1_error)
-  __pyx_v_other = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
 241: 
-
+242:         oinds = other.indices
-
  __pyx_t_1 = ((PyObject *)__pyx_v_other->indices);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_oinds.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_oinds.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_oinds.rcbuffer->pybuffer, (PyObject*)__pyx_v_oinds, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_oinds.diminfo[0].strides = __pyx_pybuffernd_oinds.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_oinds.diminfo[0].shape = __pyx_pybuffernd_oinds.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 242, __pyx_L1_error)
-  }
-  __pyx_v_oinds = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+243:         sinds = self.indices
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->indices);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_sinds.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_sinds.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_sinds.rcbuffer->pybuffer, (PyObject*)__pyx_v_sinds, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_10, __pyx_t_9, __pyx_t_8);
-      }
-      __pyx_t_10 = __pyx_t_9 = __pyx_t_8 = 0;
-    }
-    __pyx_pybuffernd_sinds.diminfo[0].strides = __pyx_pybuffernd_sinds.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_sinds.diminfo[0].shape = __pyx_pybuffernd_sinds.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 243, __pyx_L1_error)
-  }
-  __pyx_v_sinds = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
 244: 
-
+245:         result = np.empty(other.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 245, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_other->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 245, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 245, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 245, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 245, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 245, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 245, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 245, __pyx_L1_error)
-  __pyx_t_11 = ((PyArrayObject *)__pyx_t_3);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 245, __pyx_L1_error)
-  }
-  __pyx_t_11 = 0;
-  __pyx_v_result = ((PyArrayObject *)__pyx_t_3);
-  __pyx_t_3 = 0;
-
+246:         result[:] = fill_value
-
  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_fill_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 246, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_result), __pyx_slice__8, __pyx_t_3) < 0)) __PYX_ERR(0, 246, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-
 247: 
-
+248:         for i in range(other.npoints):
-
  __pyx_t_12 = __pyx_v_other->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_i = __pyx_t_14;
-
+249:             while oinds[i] > sinds[j] and j < self.npoints:
-
    while (1) {
-      __pyx_t_16 = __pyx_v_i;
-      __pyx_t_6 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_oinds.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_oinds.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 249, __pyx_L1_error)
-      }
-      __pyx_t_17 = __pyx_v_j;
-      __pyx_t_6 = -1;
-      if (__pyx_t_17 < 0) {
-        __pyx_t_17 += __pyx_pybuffernd_sinds.diminfo[0].shape;
-        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_sinds.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 249, __pyx_L1_error)
-      }
-      __pyx_t_18 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_oinds.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_oinds.diminfo[0].strides)) > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_sinds.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_sinds.diminfo[0].strides))) != 0);
-      if (__pyx_t_18) {
-      } else {
-        __pyx_t_15 = __pyx_t_18;
-        goto __pyx_L7_bool_binop_done;
-      }
-      __pyx_t_18 = ((__pyx_v_j < __pyx_v_self->npoints) != 0);
-      __pyx_t_15 = __pyx_t_18;
-      __pyx_L7_bool_binop_done:;
-      if (!__pyx_t_15) break;
-
+250:                 j += 1
-
      __pyx_v_j = (__pyx_v_j + 1);
-    }
-
 251: 
-
+252:             if j == self.npoints:
-
    __pyx_t_15 = ((__pyx_v_j == __pyx_v_self->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
+253:                 break
-
      goto __pyx_L4_break;
-
 254: 
-
+255:             if oinds[i] < sinds[j]:
-
    __pyx_t_17 = __pyx_v_i;
-    __pyx_t_6 = -1;
-    if (__pyx_t_17 < 0) {
-      __pyx_t_17 += __pyx_pybuffernd_oinds.diminfo[0].shape;
-      if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_oinds.diminfo[0].shape)) __pyx_t_6 = 0;
-    if (unlikely(__pyx_t_6 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_6);
-      __PYX_ERR(0, 255, __pyx_L1_error)
-    }
-    __pyx_t_16 = __pyx_v_j;
-    __pyx_t_6 = -1;
-    if (__pyx_t_16 < 0) {
-      __pyx_t_16 += __pyx_pybuffernd_sinds.diminfo[0].shape;
-      if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
-    } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_sinds.diminfo[0].shape)) __pyx_t_6 = 0;
-    if (unlikely(__pyx_t_6 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_6);
-      __PYX_ERR(0, 255, __pyx_L1_error)
-    }
-    __pyx_t_15 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_oinds.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_oinds.diminfo[0].strides)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_sinds.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_sinds.diminfo[0].strides))) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
+256:                 continue
-
      goto __pyx_L3_continue;
-
+257:             elif oinds[i] == sinds[j]:
-
    __pyx_t_16 = __pyx_v_i;
-    __pyx_t_6 = -1;
-    if (__pyx_t_16 < 0) {
-      __pyx_t_16 += __pyx_pybuffernd_oinds.diminfo[0].shape;
-      if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
-    } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_oinds.diminfo[0].shape)) __pyx_t_6 = 0;
-    if (unlikely(__pyx_t_6 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_6);
-      __PYX_ERR(0, 257, __pyx_L1_error)
-    }
-    __pyx_t_17 = __pyx_v_j;
-    __pyx_t_6 = -1;
-    if (__pyx_t_17 < 0) {
-      __pyx_t_17 += __pyx_pybuffernd_sinds.diminfo[0].shape;
-      if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_sinds.diminfo[0].shape)) __pyx_t_6 = 0;
-    if (unlikely(__pyx_t_6 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_6);
-      __PYX_ERR(0, 257, __pyx_L1_error)
-    }
-    __pyx_t_15 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_oinds.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_oinds.diminfo[0].strides)) == (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_sinds.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_sinds.diminfo[0].strides))) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-    __pyx_L3_continue:;
-  }
-  __pyx_L4_break:;
-
+258:                 result[i] = values[j]
-
      __pyx_t_17 = __pyx_v_j;
-      __pyx_t_6 = -1;
-      if (__pyx_t_17 < 0) {
-        __pyx_t_17 += __pyx_pybuffernd_values.diminfo[0].shape;
-        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_values.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 258, __pyx_L1_error)
-      }
-      __pyx_t_16 = __pyx_v_i;
-      __pyx_t_6 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_result.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_result.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 258, __pyx_L1_error)
-      }
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_result.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_result.diminfo[0].strides) = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_values.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_values.diminfo[0].strides));
-
+259:                 j += 1
-
      __pyx_v_j = (__pyx_v_j + 1);
-
 260: 
-
+261:         return result
-
  __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __Pyx_INCREF(((PyObject *)__pyx_v_result));
-  __pyx_r = ((PyArrayObject *)__pyx_v_result);
-  goto __pyx_L0;
-
 262: 
-
+263:     cpdef put(self, ndarray[float64_t, ndim=1] values,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_25put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_8IntIndex_put(CYTHON_UNUSED struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, CYTHON_UNUSED PyArrayObject *__pyx_v_values, CYTHON_UNUSED PyArrayObject *__pyx_v_indices, CYTHON_UNUSED PyObject *__pyx_v_to_put, int __pyx_skip_dispatch) {
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
-  __Pyx_Buffer __pyx_pybuffer_indices;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
-  __Pyx_Buffer __pyx_pybuffer_values;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("put", 0);
-  __pyx_pybuffer_values.pybuffer.buf = NULL;
-  __pyx_pybuffer_values.refcount = 0;
-  __pyx_pybuffernd_values.data = NULL;
-  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
-  __pyx_pybuffer_indices.pybuffer.buf = NULL;
-  __pyx_pybuffer_indices.refcount = 0;
-  __pyx_pybuffernd_indices.data = NULL;
-  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 263, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 263, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_put); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_25put)) {
-        __Pyx_XDECREF(__pyx_r);
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-        __pyx_t_5 = 0;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-          if (likely(__pyx_t_4)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-            __Pyx_INCREF(__pyx_t_4);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_3, function);
-            __pyx_t_5 = 1;
-          }
-        }
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[4] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices), __pyx_v_to_put};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[4] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices), __pyx_v_to_put};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 263, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_6);
-          if (__pyx_t_4) {
-            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
-          }
-          __Pyx_INCREF(((PyObject *)__pyx_v_values));
-          __Pyx_GIVEREF(((PyObject *)__pyx_v_values));
-          PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_values));
-          __Pyx_INCREF(((PyObject *)__pyx_v_indices));
-          __Pyx_GIVEREF(((PyObject *)__pyx_v_indices));
-          PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)__pyx_v_indices));
-          __Pyx_INCREF(__pyx_v_to_put);
-          __Pyx_GIVEREF(__pyx_v_to_put);
-          PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_to_put);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 263, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        }
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_r = __pyx_t_2;
-        __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_6);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-/* … */
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_25put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_25put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyArrayObject *__pyx_v_values = 0;
-  PyArrayObject *__pyx_v_indices = 0;
-  PyObject *__pyx_v_to_put = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("put (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_values,&__pyx_n_s_indices,&__pyx_n_s_to_put,0};
-    PyObject* values[3] = {0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_values)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_indices)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("put", 1, 3, 3, 1); __PYX_ERR(0, 263, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_to_put)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("put", 1, 3, 3, 2); __PYX_ERR(0, 263, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "put") < 0)) __PYX_ERR(0, 263, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-    }
-    __pyx_v_values = ((PyArrayObject *)values[0]);
-    __pyx_v_indices = ((PyArrayObject *)values[1]);
-    __pyx_v_to_put = values[2];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("put", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 263, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) __PYX_ERR(0, 263, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indices), __pyx_ptype_5numpy_ndarray, 1, "indices", 0))) __PYX_ERR(0, 264, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_24put(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), __pyx_v_values, __pyx_v_indices, __pyx_v_to_put);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_24put(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, PyArrayObject *__pyx_v_indices, PyObject *__pyx_v_to_put) {
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
-  __Pyx_Buffer __pyx_pybuffer_indices;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
-  __Pyx_Buffer __pyx_pybuffer_values;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("put", 0);
-  __pyx_pybuffer_values.pybuffer.buf = NULL;
-  __pyx_pybuffer_values.refcount = 0;
-  __pyx_pybuffernd_values.data = NULL;
-  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
-  __pyx_pybuffer_indices.pybuffer.buf = NULL;
-  __pyx_pybuffer_indices.refcount = 0;
-  __pyx_pybuffernd_indices.data = NULL;
-  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 263, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 263, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_8IntIndex_put(__pyx_v_self, __pyx_v_values, __pyx_v_indices, __pyx_v_to_put, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 263, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 264:               ndarray[int32_t, ndim=1] indices, object to_put):
-
 265:         pass
-
 266: 
-
+267:     cpdef take(self, ndarray[float64_t, ndim=1] values,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_27take(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_8IntIndex_take(CYTHON_UNUSED struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, CYTHON_UNUSED PyArrayObject *__pyx_v_values, CYTHON_UNUSED PyArrayObject *__pyx_v_indices, int __pyx_skip_dispatch) {
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
-  __Pyx_Buffer __pyx_pybuffer_indices;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
-  __Pyx_Buffer __pyx_pybuffer_values;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("take", 0);
-  __pyx_pybuffer_values.pybuffer.buf = NULL;
-  __pyx_pybuffer_values.refcount = 0;
-  __pyx_pybuffernd_values.data = NULL;
-  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
-  __pyx_pybuffer_indices.pybuffer.buf = NULL;
-  __pyx_pybuffer_indices.refcount = 0;
-  __pyx_pybuffernd_indices.data = NULL;
-  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 267, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 267, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_take); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 267, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_27take)) {
-        __Pyx_XDECREF(__pyx_r);
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-        __pyx_t_5 = 0;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-          if (likely(__pyx_t_4)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-            __Pyx_INCREF(__pyx_t_4);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_3, function);
-            __pyx_t_5 = 1;
-          }
-        }
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices)};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices)};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 267, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_6);
-          if (__pyx_t_4) {
-            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
-          }
-          __Pyx_INCREF(((PyObject *)__pyx_v_values));
-          __Pyx_GIVEREF(((PyObject *)__pyx_v_values));
-          PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_values));
-          __Pyx_INCREF(((PyObject *)__pyx_v_indices));
-          __Pyx_GIVEREF(((PyObject *)__pyx_v_indices));
-          PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)__pyx_v_indices));
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 267, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        }
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_r = __pyx_t_2;
-        __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_6);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.take", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-/* … */
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_27take(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_8IntIndex_27take(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyArrayObject *__pyx_v_values = 0;
-  PyArrayObject *__pyx_v_indices = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("take (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_values,&__pyx_n_s_indices,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_values)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_indices)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("take", 1, 2, 2, 1); __PYX_ERR(0, 267, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "take") < 0)) __PYX_ERR(0, 267, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_values = ((PyArrayObject *)values[0]);
-    __pyx_v_indices = ((PyArrayObject *)values[1]);
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("take", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 267, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.take", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) __PYX_ERR(0, 267, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indices), __pyx_ptype_5numpy_ndarray, 1, "indices", 0))) __PYX_ERR(0, 268, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8IntIndex_26take(((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_self), __pyx_v_values, __pyx_v_indices);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8IntIndex_26take(struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, PyArrayObject *__pyx_v_indices) {
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
-  __Pyx_Buffer __pyx_pybuffer_indices;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
-  __Pyx_Buffer __pyx_pybuffer_values;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("take", 0);
-  __pyx_pybuffer_values.pybuffer.buf = NULL;
-  __pyx_pybuffer_values.refcount = 0;
-  __pyx_pybuffernd_values.data = NULL;
-  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
-  __pyx_pybuffer_indices.pybuffer.buf = NULL;
-  __pyx_pybuffer_indices.refcount = 0;
-  __pyx_pybuffernd_indices.data = NULL;
-  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 267, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 267, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_8IntIndex_take(__pyx_v_self, __pyx_v_values, __pyx_v_indices, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 267, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.IntIndex.take", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 268:                ndarray[int32_t, ndim=1] indices):
-
 269:         pass
-
 270: 
-
 271: 
-
+272: cpdef get_blocks(ndarray[int32_t, ndim=1] indices):
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_1get_blocks(PyObject *__pyx_self, PyObject *__pyx_v_indices); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_get_blocks(PyArrayObject *__pyx_v_indices, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  Py_ssize_t __pyx_v_i;
-  Py_ssize_t __pyx_v_npoints;
-  Py_ssize_t __pyx_v_result_indexer;
-  __pyx_t_5numpy_int32_t __pyx_v_block;
-  __pyx_t_5numpy_int32_t __pyx_v_length;
-  __pyx_t_5numpy_int32_t __pyx_v_cur;
-  __pyx_t_5numpy_int32_t __pyx_v_prev;
-  PyArrayObject *__pyx_v_locs = 0;
-  PyArrayObject *__pyx_v_lens = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
-  __Pyx_Buffer __pyx_pybuffer_indices;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_lens;
-  __Pyx_Buffer __pyx_pybuffer_lens;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_locs;
-  __Pyx_Buffer __pyx_pybuffer_locs;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("get_blocks", 0);
-  __pyx_pybuffer_locs.pybuffer.buf = NULL;
-  __pyx_pybuffer_locs.refcount = 0;
-  __pyx_pybuffernd_locs.data = NULL;
-  __pyx_pybuffernd_locs.rcbuffer = &__pyx_pybuffer_locs;
-  __pyx_pybuffer_lens.pybuffer.buf = NULL;
-  __pyx_pybuffer_lens.refcount = 0;
-  __pyx_pybuffernd_lens.data = NULL;
-  __pyx_pybuffernd_lens.rcbuffer = &__pyx_pybuffer_lens;
-  __pyx_pybuffer_indices.pybuffer.buf = NULL;
-  __pyx_pybuffer_indices.refcount = 0;
-  __pyx_pybuffernd_indices.data = NULL;
-  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 272, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_8);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.get_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_locs);
-  __Pyx_XDECREF((PyObject *)__pyx_v_lens);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_1get_blocks(PyObject *__pyx_self, PyObject *__pyx_v_indices); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_1get_blocks(PyObject *__pyx_self, PyObject *__pyx_v_indices) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("get_blocks (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indices), __pyx_ptype_5numpy_ndarray, 1, "indices", 0))) __PYX_ERR(0, 272, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_get_blocks(__pyx_self, ((PyArrayObject *)__pyx_v_indices));
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_get_blocks(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_indices) {
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
-  __Pyx_Buffer __pyx_pybuffer_indices;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("get_blocks", 0);
-  __pyx_pybuffer_indices.pybuffer.buf = NULL;
-  __pyx_pybuffer_indices.refcount = 0;
-  __pyx_pybuffernd_indices.data = NULL;
-  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 272, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_get_blocks(__pyx_v_indices, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 272, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.get_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 273:     cdef:
-
+274:         Py_ssize_t init_len, i, npoints, result_indexer = 0
-
  __pyx_v_result_indexer = 0;
-
+275:         int32_t block, length = 1, cur, prev
-
  __pyx_v_length = 1;
-
 276:         ndarray[int32_t, ndim=1] locs, lens
-
 277: 
-
+278:     npoints = len(indices)
-
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_indices)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 278, __pyx_L1_error)
-  __pyx_v_npoints = __pyx_t_1;
-
 279: 
-
 280:     # just handle the special empty case separately
-
+281:     if npoints == 0:
-
  __pyx_t_2 = ((__pyx_v_npoints == 0) != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+282:         return np.array([], dtype=np.int32), np.array([], dtype=np.int32)
-
    __Pyx_XDECREF(__pyx_r);
-    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_GIVEREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3);
-    __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int32); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_7) < 0) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_5, __pyx_t_3); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_GIVEREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
-    __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_6);
-    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_int32); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_8) < 0) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_8);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 282, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_GIVEREF(__pyx_t_7);
-    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_7);
-    __Pyx_GIVEREF(__pyx_t_8);
-    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_8);
-    __pyx_t_7 = 0;
-    __pyx_t_8 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
 283: 
-
 284:     # block size can't be longer than npoints
-
+285:     locs = np.empty(npoints, dtype=np.int32)
-
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_empty); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 285, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_8);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_npoints); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 285, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_GIVEREF(__pyx_t_3);
-  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
-  __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 285, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 285, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 285, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 285, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_8, __pyx_t_7, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 285, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 285, __pyx_L1_error)
-  __pyx_t_9 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
-    __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_10 < 0)) {
-      PyErr_Fetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)__pyx_v_locs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
-      }
-      __pyx_t_11 = __pyx_t_12 = __pyx_t_13 = 0;
-    }
-    __pyx_pybuffernd_locs.diminfo[0].strides = __pyx_pybuffernd_locs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_locs.diminfo[0].shape = __pyx_pybuffernd_locs.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 285, __pyx_L1_error)
-  }
-  __pyx_t_9 = 0;
-  __pyx_v_locs = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
+286:     lens = np.empty(npoints, dtype=np.int32)
-
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 286, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_empty); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 286, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = PyInt_FromSsize_t(__pyx_v_npoints); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 286, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 286, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 286, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_GetModuleGlobalName(__pyx_t_8, __pyx_n_s_np); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 286, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_8);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_8, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 286, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 286, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 286, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  __Pyx_DECREF(__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_ERR(0, 286, __pyx_L1_error)
-  __pyx_t_9 = ((PyArrayObject *)__pyx_t_4);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
-    __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_10 < 0)) {
-      PyErr_Fetch(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)__pyx_v_lens, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_11);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_13, __pyx_t_12, __pyx_t_11);
-      }
-      __pyx_t_13 = __pyx_t_12 = __pyx_t_11 = 0;
-    }
-    __pyx_pybuffernd_lens.diminfo[0].strides = __pyx_pybuffernd_lens.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lens.diminfo[0].shape = __pyx_pybuffernd_lens.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 286, __pyx_L1_error)
-  }
-  __pyx_t_9 = 0;
-  __pyx_v_lens = ((PyArrayObject *)__pyx_t_4);
-  __pyx_t_4 = 0;
-
 287: 
-
 288:     # TODO: two-pass algorithm faster?
-
+289:     prev = block = indices[0]
-
  __pyx_t_14 = 0;
-  __pyx_t_10 = -1;
-  if (__pyx_t_14 < 0) {
-    __pyx_t_14 += __pyx_pybuffernd_indices.diminfo[0].shape;
-    if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 0;
-  } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_indices.diminfo[0].shape)) __pyx_t_10 = 0;
-  if (unlikely(__pyx_t_10 != -1)) {
-    __Pyx_RaiseBufferIndexError(__pyx_t_10);
-    __PYX_ERR(0, 289, __pyx_L1_error)
-  }
-  __pyx_t_15 = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_indices.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_indices.diminfo[0].strides));
-  __pyx_v_prev = __pyx_t_15;
-  __pyx_v_block = __pyx_t_15;
-
+290:     for i in range(1, npoints):
-
  __pyx_t_1 = __pyx_v_npoints;
-  __pyx_t_16 = __pyx_t_1;
-  for (__pyx_t_17 = 1; __pyx_t_17 < __pyx_t_16; __pyx_t_17+=1) {
-    __pyx_v_i = __pyx_t_17;
-
+291:         cur = indices[i]
-
    __pyx_t_14 = __pyx_v_i;
-    __pyx_t_10 = -1;
-    if (__pyx_t_14 < 0) {
-      __pyx_t_14 += __pyx_pybuffernd_indices.diminfo[0].shape;
-      if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 0;
-    } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_indices.diminfo[0].shape)) __pyx_t_10 = 0;
-    if (unlikely(__pyx_t_10 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_10);
-      __PYX_ERR(0, 291, __pyx_L1_error)
-    }
-    __pyx_v_cur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_indices.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_indices.diminfo[0].strides));
-
+292:         if cur - prev > 1:
-
    __pyx_t_2 = (((__pyx_v_cur - __pyx_v_prev) > 1) != 0);
-    if (__pyx_t_2) {
-/* … */
-      goto __pyx_L6;
-    }
-
 293:             # new block
-
+294:             locs[result_indexer] = block
-
      __pyx_t_14 = __pyx_v_result_indexer;
-      __pyx_t_10 = -1;
-      if (__pyx_t_14 < 0) {
-        __pyx_t_14 += __pyx_pybuffernd_locs.diminfo[0].shape;
-        if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 0;
-      } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_10 = 0;
-      if (unlikely(__pyx_t_10 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_10);
-        __PYX_ERR(0, 294, __pyx_L1_error)
-      }
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_locs.diminfo[0].strides) = __pyx_v_block;
-
+295:             lens[result_indexer] = length
-
      __pyx_t_14 = __pyx_v_result_indexer;
-      __pyx_t_10 = -1;
-      if (__pyx_t_14 < 0) {
-        __pyx_t_14 += __pyx_pybuffernd_lens.diminfo[0].shape;
-        if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 0;
-      } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_lens.diminfo[0].shape)) __pyx_t_10 = 0;
-      if (unlikely(__pyx_t_10 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_10);
-        __PYX_ERR(0, 295, __pyx_L1_error)
-      }
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_lens.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_lens.diminfo[0].strides) = __pyx_v_length;
-
+296:             block = cur
-
      __pyx_v_block = __pyx_v_cur;
-
+297:             length = 1
-
      __pyx_v_length = 1;
-
+298:             result_indexer += 1
-
      __pyx_v_result_indexer = (__pyx_v_result_indexer + 1);
-
 299:         else:
-
 300:             # same block, increment length
-
+301:             length += 1
-
    /*else*/ {
-      __pyx_v_length = (__pyx_v_length + 1);
-    }
-    __pyx_L6:;
-
 302: 
-
+303:         prev = cur
-
    __pyx_v_prev = __pyx_v_cur;
-  }
-
 304: 
-
+305:     locs[result_indexer] = block
-
  __pyx_t_14 = __pyx_v_result_indexer;
-  __pyx_t_10 = -1;
-  if (__pyx_t_14 < 0) {
-    __pyx_t_14 += __pyx_pybuffernd_locs.diminfo[0].shape;
-    if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 0;
-  } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_10 = 0;
-  if (unlikely(__pyx_t_10 != -1)) {
-    __Pyx_RaiseBufferIndexError(__pyx_t_10);
-    __PYX_ERR(0, 305, __pyx_L1_error)
-  }
-  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_locs.diminfo[0].strides) = __pyx_v_block;
-
+306:     lens[result_indexer] = length
-
  __pyx_t_14 = __pyx_v_result_indexer;
-  __pyx_t_10 = -1;
-  if (__pyx_t_14 < 0) {
-    __pyx_t_14 += __pyx_pybuffernd_lens.diminfo[0].shape;
-    if (unlikely(__pyx_t_14 < 0)) __pyx_t_10 = 0;
-  } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_lens.diminfo[0].shape)) __pyx_t_10 = 0;
-  if (unlikely(__pyx_t_10 != -1)) {
-    __Pyx_RaiseBufferIndexError(__pyx_t_10);
-    __PYX_ERR(0, 306, __pyx_L1_error)
-  }
-  *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_lens.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_lens.diminfo[0].strides) = __pyx_v_length;
-
+307:     result_indexer += 1
-
  __pyx_v_result_indexer = (__pyx_v_result_indexer + 1);
-
+308:     locs = locs[:result_indexer]
-
  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 308, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PySlice_New(Py_None, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 308, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_locs), __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 308, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__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_ERR(0, 308, __pyx_L1_error)
-  __pyx_t_9 = ((PyArrayObject *)__pyx_t_4);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
-    __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_10 < 0)) {
-      PyErr_Fetch(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)__pyx_v_locs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_11); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_13);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_11, __pyx_t_12, __pyx_t_13);
-      }
-      __pyx_t_11 = __pyx_t_12 = __pyx_t_13 = 0;
-    }
-    __pyx_pybuffernd_locs.diminfo[0].strides = __pyx_pybuffernd_locs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_locs.diminfo[0].shape = __pyx_pybuffernd_locs.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 308, __pyx_L1_error)
-  }
-  __pyx_t_9 = 0;
-  __Pyx_DECREF_SET(__pyx_v_locs, ((PyArrayObject *)__pyx_t_4));
-  __pyx_t_4 = 0;
-
+309:     lens = lens[:result_indexer]
-
  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PySlice_New(Py_None, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 309, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_lens), __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 309, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__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_ERR(0, 309, __pyx_L1_error)
-  __pyx_t_9 = ((PyArrayObject *)__pyx_t_4);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
-    __pyx_t_10 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)__pyx_t_9, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_10 < 0)) {
-      PyErr_Fetch(&__pyx_t_13, &__pyx_t_12, &__pyx_t_11);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)__pyx_v_lens, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_13); Py_XDECREF(__pyx_t_12); Py_XDECREF(__pyx_t_11);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_13, __pyx_t_12, __pyx_t_11);
-      }
-      __pyx_t_13 = __pyx_t_12 = __pyx_t_11 = 0;
-    }
-    __pyx_pybuffernd_lens.diminfo[0].strides = __pyx_pybuffernd_lens.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lens.diminfo[0].shape = __pyx_pybuffernd_lens.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_10 < 0)) __PYX_ERR(0, 309, __pyx_L1_error)
-  }
-  __pyx_t_9 = 0;
-  __Pyx_DECREF_SET(__pyx_v_lens, ((PyArrayObject *)__pyx_t_4));
-  __pyx_t_4 = 0;
-
+310:     return locs, lens
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 310, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_INCREF(((PyObject *)__pyx_v_locs));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_locs));
-  PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_locs));
-  __Pyx_INCREF(((PyObject *)__pyx_v_lens));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_lens));
-  PyTuple_SET_ITEM(__pyx_t_4, 1, ((PyObject *)__pyx_v_lens));
-  __pyx_r = __pyx_t_4;
-  __pyx_t_4 = 0;
-  goto __pyx_L0;
-
 311: 
-
 312: 
-
 313: # -----------------------------------------------------------------------------
-
 314: # BlockIndex
-
 315: 
-
+316: cdef class BlockIndex(SparseIndex):
-
struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex {
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex __pyx_base;
-  struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *__pyx_vtab;
-  __pyx_t_5numpy_int32_t nblocks;
-  __pyx_t_5numpy_int32_t npoints;
-  __pyx_t_5numpy_int32_t length;
-  PyArrayObject *blocs;
-  PyArrayObject *blengths;
-  PyObject *__weakref__;
-  __pyx_t_5numpy_int32_t *locbuf;
-  __pyx_t_5numpy_int32_t *lenbuf;
-};
-/* … */
-struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex {
-  PyObject *(*check_integrity)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, int __pyx_skip_dispatch);
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *(*intersect)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *, int __pyx_skip_dispatch);
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *(*make_union)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *, int __pyx_skip_dispatch);
-  Py_ssize_t (*lookup)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, Py_ssize_t, int __pyx_skip_dispatch);
-  PyArrayObject *(*lookup_array)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, PyArrayObject *, int __pyx_skip_dispatch);
-  PyArrayObject *(*reindex)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, PyArrayObject *, __pyx_t_5numpy_float64_t, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *, int __pyx_skip_dispatch);
-  PyObject *(*put)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, PyArrayObject *, PyArrayObject *, PyObject *, int __pyx_skip_dispatch);
-  PyObject *(*take)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *, PyArrayObject *, PyArrayObject *, int __pyx_skip_dispatch);
-};
-static struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *__pyx_vtabptr_6pandas_5_libs_6sparse_BlockIndex;
-
-
 317:     """
-
 318:     Object for holding block-based sparse indexing information
-
 319: 
-
 320:     Parameters
-
 321:     ----------
-
 322:     """
-
 323:     cdef readonly:
-
+324:         int32_t nblocks, npoints, length
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7nblocks_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7nblocks_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_7nblocks___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_7nblocks___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->nblocks); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.nblocks.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7npoints_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7npoints_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_7npoints___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_7npoints___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.npoints.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_6length_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_6length_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_6length___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_6length___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 324, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.length.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+325:         ndarray blocs, blengths
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_5blocs_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_5blocs_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_5blocs___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_5blocs___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->blocs));
-  __pyx_r = ((PyObject *)__pyx_v_self->blocs);
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_8blengths_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_8blengths_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_8blengths___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_8blengths___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->blengths));
-  __pyx_r = ((PyObject *)__pyx_v_self->blengths);
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 326: 
-
 327:     cdef:
-
 328:         object __weakref__  # need to be picklable
-
 329:         int32_t *locbuf
-
 330:         int32_t *lenbuf
-
 331: 
-
+332:     def __init__(self, length, blocs, blengths):
-
/* Python wrapper */
-static int __pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyObject *__pyx_v_length = 0;
-  PyObject *__pyx_v_blocs = 0;
-  PyObject *__pyx_v_blengths = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_length,&__pyx_n_s_blocs,&__pyx_n_s_blengths,0};
-    PyObject* values[3] = {0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_length)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_blocs)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(0, 332, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_blengths)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(0, 332, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 332, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-    }
-    __pyx_v_length = values[0];
-    __pyx_v_blocs = values[1];
-    __pyx_v_blengths = values[2];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 332, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return -1;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex___init__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), __pyx_v_length, __pyx_v_blocs, __pyx_v_blengths);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex___init__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyObject *__pyx_v_length, PyObject *__pyx_v_blocs, PyObject *__pyx_v_blengths) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__", 0);
-/* … */
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 333: 
-
+334:         self.blocs = np.ascontiguousarray(blocs, dtype=np.int32)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 334, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 334, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(__pyx_v_blocs);
-  __Pyx_GIVEREF(__pyx_v_blocs);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_blocs);
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 334, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 334, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 334, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 334, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 334, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 334, __pyx_L1_error)
-  __Pyx_GIVEREF(__pyx_t_5);
-  __Pyx_GOTREF(__pyx_v_self->blocs);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->blocs));
-  __pyx_v_self->blocs = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
+335:         self.blengths = np.ascontiguousarray(blengths, dtype=np.int32)
-
  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 335, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_ascontiguousarray); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 335, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 335, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_INCREF(__pyx_v_blengths);
-  __Pyx_GIVEREF(__pyx_v_blengths);
-  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_v_blengths);
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 335, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 335, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 335, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 335, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __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_ERR(0, 335, __pyx_L1_error)
-  __Pyx_GIVEREF(__pyx_t_4);
-  __Pyx_GOTREF(__pyx_v_self->blengths);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->blengths));
-  __pyx_v_self->blengths = ((PyArrayObject *)__pyx_t_4);
-  __pyx_t_4 = 0;
-
 336: 
-
 337:         # in case we need
-
+338:         self.locbuf = <int32_t*>self.blocs.data
-
  __pyx_v_self->locbuf = ((__pyx_t_5numpy_int32_t *)__pyx_v_self->blocs->data);
-
+339:         self.lenbuf = <int32_t*>self.blengths.data
-
  __pyx_v_self->lenbuf = ((__pyx_t_5numpy_int32_t *)__pyx_v_self->blengths->data);
-
 340: 
-
+341:         self.length = length
-
  __pyx_t_6 = __Pyx_PyInt_As_npy_int32(__pyx_v_length); if (unlikely((__pyx_t_6 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 341, __pyx_L1_error)
-  __pyx_v_self->length = __pyx_t_6;
-
+342:         self.nblocks = np.int32(len(self.blocs))
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 342, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = ((PyObject *)__pyx_v_self->blocs);
-  __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_7 = PyObject_Length(__pyx_t_1); if (unlikely(__pyx_t_7 == ((Py_ssize_t)-1))) __PYX_ERR(0, 342, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 342, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = NULL;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_5))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_5);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_5, function);
-    }
-  }
-  __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 342, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_6 = __Pyx_PyInt_As_npy_int32(__pyx_t_4); if (unlikely((__pyx_t_6 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 342, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_v_self->nblocks = __pyx_t_6;
-
+343:         self.npoints = self.blengths.sum()
-
  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->blengths), __pyx_n_s_sum); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 343, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-    __pyx_t_1 = PyMethod_GET_SELF(__pyx_t_5);
-    if (likely(__pyx_t_1)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-      __Pyx_INCREF(__pyx_t_1);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_5, function);
-    }
-  }
-  __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 343, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_6 = __Pyx_PyInt_As_npy_int32(__pyx_t_4); if (unlikely((__pyx_t_6 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 343, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_v_self->npoints = __pyx_t_6;
-
 344: 
-
 345:         # self.block_start = blocs
-
 346:         # self.block_end = blocs + blengths
-
 347: 
-
+348:         self.check_integrity()
-
  __pyx_t_4 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self->__pyx_vtab)->check_integrity(__pyx_v_self, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 348, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-
 349: 
-
+350:     def __reduce__(self):
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_3__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_3__reduce__(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__reduce__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_2__reduce__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_2__reduce__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
-  PyObject *__pyx_v_args = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__reduce__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.__reduce__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_args);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+351:         args = (self.length, self.blocs, self.blengths)
-
  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->length); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 351, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 351, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->blocs));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->blocs));
-  PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->blocs));
-  __Pyx_INCREF(((PyObject *)__pyx_v_self->blengths));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_self->blengths));
-  PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_v_self->blengths));
-  __pyx_t_1 = 0;
-  __pyx_v_args = ((PyObject*)__pyx_t_2);
-  __pyx_t_2 = 0;
-
+352:         return BlockIndex, args
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 352, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockIndex));
-  __Pyx_GIVEREF(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockIndex));
-  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockIndex));
-  __Pyx_INCREF(__pyx_v_args);
-  __Pyx_GIVEREF(__pyx_v_args);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_args);
-  __pyx_r = __pyx_t_2;
-  __pyx_t_2 = 0;
-  goto __pyx_L0;
-
 353: 
-
+354:     def __repr__(self) -> str:
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_5__repr__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_5__repr__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__repr__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_4__repr__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_4__repr__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
-  PyObject *__pyx_v_output = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__repr__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.__repr__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_output);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+355:         output = 'BlockIndex\n'
-
  __Pyx_INCREF(__pyx_n_u_BlockIndex);
-  __pyx_v_output = __pyx_n_u_BlockIndex;
-
+356:         output += f'Block locations: {repr(self.blocs)}\n'
-
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = 0;
-  __pyx_t_3 = 127;
-  __Pyx_INCREF(__pyx_kp_u_Block_locations);
-  __pyx_t_2 += 17;
-  __Pyx_GIVEREF(__pyx_kp_u_Block_locations);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Block_locations);
-  __pyx_t_4 = ((PyObject *)__pyx_v_self->blocs);
-  __Pyx_INCREF(__pyx_t_4);
-  __pyx_t_5 = PyObject_Repr(__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_3 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) > __pyx_t_3) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_4) : __pyx_t_3;
-  __pyx_t_2 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_4);
-  __pyx_t_4 = 0;
-  __Pyx_INCREF(__pyx_kp_u_);
-  __pyx_t_2 += 1;
-  __Pyx_GIVEREF(__pyx_kp_u_);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_);
-  __pyx_t_4 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_v_output, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF_SET(__pyx_v_output, ((PyObject*)__pyx_t_1));
-  __pyx_t_1 = 0;
-
+357:         output += f'Block lengths: {repr(self.blengths)}'
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blengths);
-  __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_4 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 357, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_t_4, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 357, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Block_lengths, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 357, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyUnicode_Concat(__pyx_v_output, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 357, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF_SET(__pyx_v_output, ((PyObject*)__pyx_t_1));
-  __pyx_t_1 = 0;
-
 358: 
-
+359:         return output
-
  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(__pyx_v_output);
-  __pyx_r = __pyx_v_output;
-  goto __pyx_L0;
-
 360: 
-
 361:     @property
-
+362:     def nbytes(self) -> int:
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_6nbytes_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_6nbytes_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_6nbytes___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_6nbytes___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.nbytes.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+363:         return self.blocs.nbytes + self.blengths.nbytes
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->blocs), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 363, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->blengths), __pyx_n_s_nbytes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 363, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyNumber_Add(__pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 363, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_r = __pyx_t_3;
-  __pyx_t_3 = 0;
-  goto __pyx_L0;
-
 364: 
-
 365:     @property
-
+366:     def ngaps(self) -> int:
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_5ngaps_1__get__(PyObject *__pyx_v_self); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_5ngaps_1__get__(PyObject *__pyx_v_self) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_5ngaps___get__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_5ngaps___get__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__get__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.ngaps.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+367:         return self.length - self.npoints
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32((__pyx_v_self->length - __pyx_v_self->npoints)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 367, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 368: 
-
+369:     cpdef check_integrity(self):
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7check_integrity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_check_integrity(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, int __pyx_skip_dispatch) {
-  Py_ssize_t __pyx_v_i;
-  PyArrayObject *__pyx_v_blocs = 0;
-  PyArrayObject *__pyx_v_blengths = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_blengths;
-  __Pyx_Buffer __pyx_pybuffer_blengths;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_blocs;
-  __Pyx_Buffer __pyx_pybuffer_blocs;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("check_integrity", 0);
-  __pyx_pybuffer_blocs.pybuffer.buf = NULL;
-  __pyx_pybuffer_blocs.refcount = 0;
-  __pyx_pybuffernd_blocs.data = NULL;
-  __pyx_pybuffernd_blocs.rcbuffer = &__pyx_pybuffer_blocs;
-  __pyx_pybuffer_blengths.pybuffer.buf = NULL;
-  __pyx_pybuffer_blengths.refcount = 0;
-  __pyx_pybuffernd_blengths.data = NULL;
-  __pyx_pybuffernd_blengths.rcbuffer = &__pyx_pybuffer_blengths;
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_check_integrity); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7check_integrity)) {
-        __Pyx_XDECREF(__pyx_r);
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-          if (likely(__pyx_t_4)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-            __Pyx_INCREF(__pyx_t_4);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_3, function);
-          }
-        }
-        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 369, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_r = __pyx_t_2;
-        __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_blengths.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_blocs.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.check_integrity", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_blengths.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_blocs.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_blocs);
-  __Pyx_XDECREF((PyObject *)__pyx_v_blengths);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7check_integrity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static char __pyx_doc_6pandas_5_libs_6sparse_10BlockIndex_6check_integrity[] = "\n        Check:\n        - Locations are in ascending order\n        - No overlapping blocks\n        - Blocks to not start after end of index, nor extend beyond end\n        ";
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_7check_integrity(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("check_integrity (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_6check_integrity(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_6check_integrity(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("check_integrity", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_10BlockIndex_check_integrity(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 369, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.check_integrity", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 370:         """
-
 371:         Check:
-
 372:         - Locations are in ascending order
-
 373:         - No overlapping blocks
-
 374:         - Blocks to not start after end of index, nor extend beyond end
-
 375:         """
-
 376:         cdef:
-
 377:             Py_ssize_t i
-
 378:             ndarray[int32_t, ndim=1] blocs, blengths
-
 379: 
-
+380:         blocs = self.blocs
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blocs);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_blocs.rcbuffer->pybuffer);
-    __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_blocs.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_5 < 0)) {
-      PyErr_Fetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_blocs.rcbuffer->pybuffer, (PyObject*)__pyx_v_blocs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
-      }
-      __pyx_t_6 = __pyx_t_7 = __pyx_t_8 = 0;
-    }
-    __pyx_pybuffernd_blocs.diminfo[0].strides = __pyx_pybuffernd_blocs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_blocs.diminfo[0].shape = __pyx_pybuffernd_blocs.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 380, __pyx_L1_error)
-  }
-  __pyx_v_blocs = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+381:         blengths = self.blengths
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blengths);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_blengths.rcbuffer->pybuffer);
-    __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_blengths.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_5 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_blengths.rcbuffer->pybuffer, (PyObject*)__pyx_v_blengths, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_6);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_7, __pyx_t_6);
-      }
-      __pyx_t_8 = __pyx_t_7 = __pyx_t_6 = 0;
-    }
-    __pyx_pybuffernd_blengths.diminfo[0].strides = __pyx_pybuffernd_blengths.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_blengths.diminfo[0].shape = __pyx_pybuffernd_blengths.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 381, __pyx_L1_error)
-  }
-  __pyx_v_blengths = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
 382: 
-
+383:         if len(blocs) != len(blengths):
-
  __pyx_t_9 = PyObject_Length(((PyObject *)__pyx_v_blocs)); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 383, __pyx_L1_error)
-  __pyx_t_10 = PyObject_Length(((PyObject *)__pyx_v_blengths)); if (unlikely(__pyx_t_10 == ((Py_ssize_t)-1))) __PYX_ERR(0, 383, __pyx_L1_error)
-  __pyx_t_11 = ((__pyx_t_9 != __pyx_t_10) != 0);
-  if (unlikely(__pyx_t_11)) {
-/* … */
-  }
-
+384:             raise ValueError('block bound arrays must be same length')
-
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 384, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __PYX_ERR(0, 384, __pyx_L1_error)
-/* … */
-  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_u_block_bound_arrays_must_be_same); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(0, 384, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__9);
-  __Pyx_GIVEREF(__pyx_tuple__9);
-
 385: 
-
+386:         for i in range(self.nblocks):
-
  __pyx_t_12 = __pyx_v_self->nblocks;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_10 = 0; __pyx_t_10 < __pyx_t_13; __pyx_t_10+=1) {
-    __pyx_v_i = __pyx_t_10;
-
+387:             if i > 0:
-
    __pyx_t_11 = ((__pyx_v_i > 0) != 0);
-    if (__pyx_t_11) {
-/* … */
-    }
-
+388:                 if blocs[i] <= blocs[i - 1]:
-
      __pyx_t_14 = __pyx_v_i;
-      __pyx_t_5 = -1;
-      if (__pyx_t_14 < 0) {
-        __pyx_t_14 += __pyx_pybuffernd_blocs.diminfo[0].shape;
-        if (unlikely(__pyx_t_14 < 0)) __pyx_t_5 = 0;
-      } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_blocs.diminfo[0].shape)) __pyx_t_5 = 0;
-      if (unlikely(__pyx_t_5 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_5);
-        __PYX_ERR(0, 388, __pyx_L1_error)
-      }
-      __pyx_t_15 = (__pyx_v_i - 1);
-      __pyx_t_5 = -1;
-      if (__pyx_t_15 < 0) {
-        __pyx_t_15 += __pyx_pybuffernd_blocs.diminfo[0].shape;
-        if (unlikely(__pyx_t_15 < 0)) __pyx_t_5 = 0;
-      } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_blocs.diminfo[0].shape)) __pyx_t_5 = 0;
-      if (unlikely(__pyx_t_5 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_5);
-        __PYX_ERR(0, 388, __pyx_L1_error)
-      }
-      __pyx_t_11 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blocs.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_blocs.diminfo[0].strides)) <= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blocs.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_blocs.diminfo[0].strides))) != 0);
-      if (unlikely(__pyx_t_11)) {
-/* … */
-      }
-
+389:                     raise ValueError('Locations not in ascending order')
-
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 389, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __PYX_ERR(0, 389, __pyx_L1_error)
-/* … */
-  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_u_Locations_not_in_ascending_order); if (unlikely(!__pyx_tuple__10)) __PYX_ERR(0, 389, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__10);
-  __Pyx_GIVEREF(__pyx_tuple__10);
-
 390: 
-
+391:             if i < self.nblocks - 1:
-
    __pyx_t_11 = ((__pyx_v_i < (__pyx_v_self->nblocks - 1)) != 0);
-    if (__pyx_t_11) {
-/* … */
-      goto __pyx_L8;
-    }
-
+392:                 if blocs[i] + blengths[i] > blocs[i + 1]:
-
      __pyx_t_15 = __pyx_v_i;
-      __pyx_t_5 = -1;
-      if (__pyx_t_15 < 0) {
-        __pyx_t_15 += __pyx_pybuffernd_blocs.diminfo[0].shape;
-        if (unlikely(__pyx_t_15 < 0)) __pyx_t_5 = 0;
-      } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_blocs.diminfo[0].shape)) __pyx_t_5 = 0;
-      if (unlikely(__pyx_t_5 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_5);
-        __PYX_ERR(0, 392, __pyx_L1_error)
-      }
-      __pyx_t_14 = __pyx_v_i;
-      __pyx_t_5 = -1;
-      if (__pyx_t_14 < 0) {
-        __pyx_t_14 += __pyx_pybuffernd_blengths.diminfo[0].shape;
-        if (unlikely(__pyx_t_14 < 0)) __pyx_t_5 = 0;
-      } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_blengths.diminfo[0].shape)) __pyx_t_5 = 0;
-      if (unlikely(__pyx_t_5 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_5);
-        __PYX_ERR(0, 392, __pyx_L1_error)
-      }
-      __pyx_t_16 = (__pyx_v_i + 1);
-      __pyx_t_5 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_blocs.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_5 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_blocs.diminfo[0].shape)) __pyx_t_5 = 0;
-      if (unlikely(__pyx_t_5 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_5);
-        __PYX_ERR(0, 392, __pyx_L1_error)
-      }
-      __pyx_t_11 = ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blocs.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_blocs.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blengths.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_blengths.diminfo[0].strides))) > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blocs.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_blocs.diminfo[0].strides))) != 0);
-      if (unlikely(__pyx_t_11)) {
-/* … */
-      }
-
+393:                     raise ValueError(f'Block {i} overlaps')
-
        __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 393, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_9 = 0;
-        __pyx_t_17 = 127;
-        __Pyx_INCREF(__pyx_kp_u_Block);
-        __pyx_t_9 += 6;
-        __Pyx_GIVEREF(__pyx_kp_u_Block);
-        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Block);
-        __pyx_t_2 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 393, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2);
-        __Pyx_GIVEREF(__pyx_t_2);
-        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
-        __pyx_t_2 = 0;
-        __Pyx_INCREF(__pyx_kp_u_overlaps);
-        __pyx_t_9 += 9;
-        __Pyx_GIVEREF(__pyx_kp_u_overlaps);
-        PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_overlaps);
-        __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_9, __pyx_t_17); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 393, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 393, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __PYX_ERR(0, 393, __pyx_L1_error)
-
 394:             else:
-
+395:                 if blocs[i] + blengths[i] > self.length:
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_i;
-      __pyx_t_5 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_blocs.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_5 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_blocs.diminfo[0].shape)) __pyx_t_5 = 0;
-      if (unlikely(__pyx_t_5 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_5);
-        __PYX_ERR(0, 395, __pyx_L1_error)
-      }
-      __pyx_t_14 = __pyx_v_i;
-      __pyx_t_5 = -1;
-      if (__pyx_t_14 < 0) {
-        __pyx_t_14 += __pyx_pybuffernd_blengths.diminfo[0].shape;
-        if (unlikely(__pyx_t_14 < 0)) __pyx_t_5 = 0;
-      } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_blengths.diminfo[0].shape)) __pyx_t_5 = 0;
-      if (unlikely(__pyx_t_5 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_5);
-        __PYX_ERR(0, 395, __pyx_L1_error)
-      }
-      __pyx_t_11 = ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blocs.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_blocs.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blengths.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_blengths.diminfo[0].strides))) > __pyx_v_self->length) != 0);
-      if (unlikely(__pyx_t_11)) {
-/* … */
-      }
-    }
-    __pyx_L8:;
-
+396:                     raise ValueError(f'Block {i} extends beyond end')
-
        __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 396, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_9 = 0;
-        __pyx_t_17 = 127;
-        __Pyx_INCREF(__pyx_kp_u_Block);
-        __pyx_t_9 += 6;
-        __Pyx_GIVEREF(__pyx_kp_u_Block);
-        PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Block);
-        __pyx_t_2 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 396, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_2);
-        __Pyx_GIVEREF(__pyx_t_2);
-        PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
-        __pyx_t_2 = 0;
-        __Pyx_INCREF(__pyx_kp_u_extends_beyond_end);
-        __pyx_t_9 += 19;
-        __Pyx_GIVEREF(__pyx_kp_u_extends_beyond_end);
-        PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u_extends_beyond_end);
-        __pyx_t_2 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_9, __pyx_t_17); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 396, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 396, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_1);
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        __PYX_ERR(0, 396, __pyx_L1_error)
-
 397: 
-
 398:             # no zero-length blocks
-
+399:             if blengths[i] == 0:
-
    __pyx_t_14 = __pyx_v_i;
-    __pyx_t_5 = -1;
-    if (__pyx_t_14 < 0) {
-      __pyx_t_14 += __pyx_pybuffernd_blengths.diminfo[0].shape;
-      if (unlikely(__pyx_t_14 < 0)) __pyx_t_5 = 0;
-    } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_blengths.diminfo[0].shape)) __pyx_t_5 = 0;
-    if (unlikely(__pyx_t_5 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_5);
-      __PYX_ERR(0, 399, __pyx_L1_error)
-    }
-    __pyx_t_11 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_blengths.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_blengths.diminfo[0].strides)) == 0) != 0);
-    if (unlikely(__pyx_t_11)) {
-/* … */
-    }
-  }
-
+400:                 raise ValueError(f'Zero-length block {i}')
-
      __pyx_t_1 = __Pyx_PyUnicode_From_Py_ssize_t(__pyx_v_i, 0, ' ', 'd'); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 400, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Zero_length_block, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 400, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_2);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 400, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-      __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __PYX_ERR(0, 400, __pyx_L1_error)
-
 401: 
-
+402:     def equals(self, other: object) -> bool:
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_9equals(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_9equals(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("equals (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_8equals(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), ((PyObject *)__pyx_v_other));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_8equals(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_v_same_length = NULL;
-  PyObject *__pyx_v_same_blocks = NULL;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("equals", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_XDECREF(__pyx_t_7);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.equals", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XDECREF(__pyx_v_same_length);
-  __Pyx_XDECREF(__pyx_v_same_blocks);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+403:         if not isinstance(other, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(__pyx_v_other, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+404:             return False
-
    __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(Py_False);
-    __pyx_r = Py_False;
-    goto __pyx_L0;
-
 405: 
-
+406:         if self is other:
-
  __pyx_t_2 = (((PyObject *)__pyx_v_self) == __pyx_v_other);
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (__pyx_t_1) {
-/* … */
-  }
-
+407:             return True
-
    __Pyx_XDECREF(__pyx_r);
-    __Pyx_INCREF(Py_True);
-    __pyx_r = Py_True;
-    goto __pyx_L0;
-
 408: 
-
+409:         same_length = self.length == other.length
-
  __pyx_t_3 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->length); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 409, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_length); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 409, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyObject_RichCompare(__pyx_t_3, __pyx_t_4, Py_EQ); __Pyx_XGOTREF(__pyx_t_5); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 409, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_v_same_length = __pyx_t_5;
-  __pyx_t_5 = 0;
-
+410:         same_blocks = (np.array_equal(self.blocs, other.blocs) and
-
  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_np); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 410, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_array_equal); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 410, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_blocs); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 410, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_7 = NULL;
-  __pyx_t_8 = 0;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_6))) {
-    __pyx_t_7 = PyMethod_GET_SELF(__pyx_t_6);
-    if (likely(__pyx_t_7)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_6);
-      __Pyx_INCREF(__pyx_t_7);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_6, function);
-      __pyx_t_8 = 1;
-    }
-  }
-  #if CYTHON_FAST_PYCALL
-  if (PyFunction_Check(__pyx_t_6)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_self->blocs), __pyx_t_3};
-    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 410, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  } else
-  #endif
-  #if CYTHON_FAST_PYCCALL
-  if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_7, ((PyObject *)__pyx_v_self->blocs), __pyx_t_3};
-    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 410, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  } else
-  #endif
-  {
-    __pyx_t_9 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 410, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_9);
-    if (__pyx_t_7) {
-      __Pyx_GIVEREF(__pyx_t_7); PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_t_7); __pyx_t_7 = NULL;
-    }
-    __Pyx_INCREF(((PyObject *)__pyx_v_self->blocs));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_self->blocs));
-    PyTuple_SET_ITEM(__pyx_t_9, 0+__pyx_t_8, ((PyObject *)__pyx_v_self->blocs));
-    __Pyx_GIVEREF(__pyx_t_3);
-    PyTuple_SET_ITEM(__pyx_t_9, 1+__pyx_t_8, __pyx_t_3);
-    __pyx_t_3 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_9, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 410, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 410, __pyx_L1_error)
-  if (__pyx_t_1) {
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  } else {
-    __Pyx_INCREF(__pyx_t_4);
-    __pyx_t_5 = __pyx_t_4;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    goto __pyx_L5_bool_binop_done;
-  }
-
+411:                        np.array_equal(self.blengths, other.blengths))
-
  __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_np); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 411, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_6, __pyx_n_s_array_equal); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 411, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_9);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_other, __pyx_n_s_blengths); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 411, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_3 = NULL;
-  __pyx_t_8 = 0;
-  if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_9))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_9);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_9);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_9, function);
-      __pyx_t_8 = 1;
-    }
-  }
-  #if CYTHON_FAST_PYCALL
-  if (PyFunction_Check(__pyx_t_9)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self->blengths), __pyx_t_6};
-    __pyx_t_4 = __Pyx_PyFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  } else
-  #endif
-  #if CYTHON_FAST_PYCCALL
-  if (__Pyx_PyFastCFunction_Check(__pyx_t_9)) {
-    PyObject *__pyx_temp[3] = {__pyx_t_3, ((PyObject *)__pyx_v_self->blengths), __pyx_t_6};
-    __pyx_t_4 = __Pyx_PyCFunction_FastCall(__pyx_t_9, __pyx_temp+1-__pyx_t_8, 2+__pyx_t_8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  } else
-  #endif
-  {
-    __pyx_t_7 = PyTuple_New(2+__pyx_t_8); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 411, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_7);
-    if (__pyx_t_3) {
-      __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
-    }
-    __Pyx_INCREF(((PyObject *)__pyx_v_self->blengths));
-    __Pyx_GIVEREF(((PyObject *)__pyx_v_self->blengths));
-    PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_8, ((PyObject *)__pyx_v_self->blengths));
-    __Pyx_GIVEREF(__pyx_t_6);
-    PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_8, __pyx_t_6);
-    __pyx_t_6 = 0;
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_7, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 411, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  }
-  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __Pyx_INCREF(__pyx_t_4);
-  __pyx_t_5 = __pyx_t_4;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_L5_bool_binop_done:;
-  __pyx_v_same_blocks = __pyx_t_5;
-  __pyx_t_5 = 0;
-
+412:         return same_length and same_blocks
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_same_length); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 412, __pyx_L1_error)
-  if (__pyx_t_1) {
-  } else {
-    __Pyx_INCREF(__pyx_v_same_length);
-    __pyx_t_5 = __pyx_v_same_length;
-    goto __pyx_L7_bool_binop_done;
-  }
-  __Pyx_INCREF(__pyx_v_same_blocks);
-  __pyx_t_5 = __pyx_v_same_blocks;
-  __pyx_L7_bool_binop_done:;
-  __pyx_r = __pyx_t_5;
-  __pyx_t_5 = 0;
-  goto __pyx_L0;
-
 413: 
-
+414:     def to_block_index(self):
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_11to_block_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_11to_block_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("to_block_index (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_10to_block_index(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_10to_block_index(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("to_block_index", 0);
-/* … */
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+415:         return self
-
  __Pyx_XDECREF(__pyx_r);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self));
-  __pyx_r = ((PyObject *)__pyx_v_self);
-  goto __pyx_L0;
-
 416: 
-
+417:     def to_int_index(self):
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_13to_int_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_13to_int_index(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("to_int_index (wrapper)", 0);
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_12to_int_index(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self));
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_12to_int_index(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self) {
-  __pyx_t_5numpy_int32_t __pyx_v_i;
-  __pyx_t_5numpy_int32_t __pyx_v_j;
-  __pyx_t_5numpy_int32_t __pyx_v_b;
-  __pyx_t_5numpy_int32_t __pyx_v_offset;
-  PyArrayObject *__pyx_v_indices = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
-  __Pyx_Buffer __pyx_pybuffer_indices;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("to_int_index", 0);
-  __pyx_pybuffer_indices.pybuffer.buf = NULL;
-  __pyx_pybuffer_indices.refcount = 0;
-  __pyx_pybuffernd_indices.data = NULL;
-  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.to_int_index", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_indices);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 418:         cdef:
-
+419:             int32_t i = 0, j, b
-
  __pyx_v_i = 0;
-
 420:             int32_t offset
-
 421:             ndarray[int32_t, ndim=1] indices
-
 422: 
-
+423:         indices = np.empty(self.npoints, dtype=np.int32)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 423, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 423, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 423, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 423, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 423, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 423, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 423, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(0, 423, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 423, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(0, 423, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 423, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_indices = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 424: 
-
+425:         for b in range(self.nblocks):
-
  __pyx_t_11 = __pyx_v_self->nblocks;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_b = __pyx_t_13;
-
+426:             offset = self.locbuf[b]
-
    __pyx_v_offset = (__pyx_v_self->locbuf[__pyx_v_b]);
-
 427: 
-
+428:             for j in range(self.lenbuf[b]):
-
    __pyx_t_14 = (__pyx_v_self->lenbuf[__pyx_v_b]);
-    __pyx_t_15 = __pyx_t_14;
-    for (__pyx_t_16 = 0; __pyx_t_16 < __pyx_t_15; __pyx_t_16+=1) {
-      __pyx_v_j = __pyx_t_16;
-
+429:                 indices[i] = offset + j
-
      __pyx_t_17 = __pyx_v_i;
-      __pyx_t_7 = -1;
-      if (__pyx_t_17 < 0) {
-        __pyx_t_17 += __pyx_pybuffernd_indices.diminfo[0].shape;
-        if (unlikely(__pyx_t_17 < 0)) __pyx_t_7 = 0;
-      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_indices.diminfo[0].shape)) __pyx_t_7 = 0;
-      if (unlikely(__pyx_t_7 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_7);
-        __PYX_ERR(0, 429, __pyx_L1_error)
-      }
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_indices.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_indices.diminfo[0].strides) = (__pyx_v_offset + __pyx_v_j);
-
+430:                 i += 1
-
      __pyx_v_i = (__pyx_v_i + 1);
-    }
-  }
-
 431: 
-
+432:         return IntIndex(self.length, indices)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->length); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 432, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 432, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
-  __Pyx_INCREF(((PyObject *)__pyx_v_indices));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_indices));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_indices));
-  __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_IntIndex), __pyx_t_1, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 432, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_r = __pyx_t_5;
-  __pyx_t_5 = 0;
-  goto __pyx_L0;
-
 433: 
-
+434:     cpdef BlockIndex intersect(self, SparseIndex other):
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_15intersect(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_intersect(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other, int __pyx_skip_dispatch) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_y = 0;
-  PyArrayObject *__pyx_v_xloc = 0;
-  PyArrayObject *__pyx_v_xlen = 0;
-  PyArrayObject *__pyx_v_yloc = 0;
-  PyArrayObject *__pyx_v_ylen = 0;
-  PyArrayObject *__pyx_v_out_bloc = 0;
-  PyArrayObject *__pyx_v_out_blen = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_max_len;
-  Py_ssize_t __pyx_v_result_indexer;
-  __pyx_t_5numpy_int32_t __pyx_v_cur_loc;
-  __pyx_t_5numpy_int32_t __pyx_v_cur_length;
-  __pyx_t_5numpy_int32_t __pyx_v_diff;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out_blen;
-  __Pyx_Buffer __pyx_pybuffer_out_blen;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out_bloc;
-  __Pyx_Buffer __pyx_pybuffer_out_bloc;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_xlen;
-  __Pyx_Buffer __pyx_pybuffer_xlen;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_xloc;
-  __Pyx_Buffer __pyx_pybuffer_xloc;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_ylen;
-  __Pyx_Buffer __pyx_pybuffer_ylen;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_yloc;
-  __Pyx_Buffer __pyx_pybuffer_yloc;
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("intersect", 0);
-  __pyx_pybuffer_xloc.pybuffer.buf = NULL;
-  __pyx_pybuffer_xloc.refcount = 0;
-  __pyx_pybuffernd_xloc.data = NULL;
-  __pyx_pybuffernd_xloc.rcbuffer = &__pyx_pybuffer_xloc;
-  __pyx_pybuffer_xlen.pybuffer.buf = NULL;
-  __pyx_pybuffer_xlen.refcount = 0;
-  __pyx_pybuffernd_xlen.data = NULL;
-  __pyx_pybuffernd_xlen.rcbuffer = &__pyx_pybuffer_xlen;
-  __pyx_pybuffer_yloc.pybuffer.buf = NULL;
-  __pyx_pybuffer_yloc.refcount = 0;
-  __pyx_pybuffernd_yloc.data = NULL;
-  __pyx_pybuffernd_yloc.rcbuffer = &__pyx_pybuffer_yloc;
-  __pyx_pybuffer_ylen.pybuffer.buf = NULL;
-  __pyx_pybuffer_ylen.refcount = 0;
-  __pyx_pybuffernd_ylen.data = NULL;
-  __pyx_pybuffernd_ylen.rcbuffer = &__pyx_pybuffer_ylen;
-  __pyx_pybuffer_out_bloc.pybuffer.buf = NULL;
-  __pyx_pybuffer_out_bloc.refcount = 0;
-  __pyx_pybuffernd_out_bloc.data = NULL;
-  __pyx_pybuffernd_out_bloc.rcbuffer = &__pyx_pybuffer_out_bloc;
-  __pyx_pybuffer_out_blen.pybuffer.buf = NULL;
-  __pyx_pybuffer_out_blen.refcount = 0;
-  __pyx_pybuffernd_out_blen.data = NULL;
-  __pyx_pybuffernd_out_blen.rcbuffer = &__pyx_pybuffer_out_blen;
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_intersect); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_15intersect)) {
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-          if (likely(__pyx_t_4)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-            __Pyx_INCREF(__pyx_t_4);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_3, function);
-          }
-        }
-        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_other)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_other));
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 434, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(0, 434, __pyx_L1_error)
-        __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_2);
-        __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_13);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xlen.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xloc.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ylen.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yloc.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.intersect", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xlen.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xloc.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ylen.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yloc.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_y);
-  __Pyx_XDECREF((PyObject *)__pyx_v_xloc);
-  __Pyx_XDECREF((PyObject *)__pyx_v_xlen);
-  __Pyx_XDECREF((PyObject *)__pyx_v_yloc);
-  __Pyx_XDECREF((PyObject *)__pyx_v_ylen);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_bloc);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_blen);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_15intersect(PyObject *__pyx_v_self, PyObject *__pyx_v_other); /*proto*/
-static char __pyx_doc_6pandas_5_libs_6sparse_10BlockIndex_14intersect[] = "\n        Intersect two BlockIndex objects\n\n        Returns\n        -------\n        BlockIndex\n        ";
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_15intersect(PyObject *__pyx_v_self, PyObject *__pyx_v_other) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("intersect (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "other", 0))) __PYX_ERR(0, 434, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_14intersect(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_other));
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_14intersect(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("intersect", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_intersect(__pyx_v_self, __pyx_v_other, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 434, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.intersect", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 435:         """
-
 436:         Intersect two BlockIndex objects
-
 437: 
-
 438:         Returns
-
 439:         -------
-
 440:         BlockIndex
-
 441:         """
-
 442:         cdef:
-
 443:             BlockIndex y
-
 444:             ndarray[int32_t, ndim=1] xloc, xlen, yloc, ylen, out_bloc, out_blen
-
+445:             Py_ssize_t xi = 0, yi = 0, max_len, result_indexer = 0
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_result_indexer = 0;
-
 446:             int32_t cur_loc, cur_length, diff
-
 447: 
-
+448:         y = other.to_block_index()
-
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_other), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 448, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 448, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(0, 448, __pyx_L1_error)
-  __pyx_v_y = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
 449: 
-
+450:         if self.length != y.length:
-
  __pyx_t_5 = ((__pyx_v_self->length != __pyx_v_y->length) != 0);
-  if (unlikely(__pyx_t_5)) {
-/* … */
-  }
-
+451:             raise Exception('Indices must reference same underlying length')
-
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 451, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_1);
-    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __PYX_ERR(0, 451, __pyx_L1_error)
-
 452: 
-
+453:         xloc = self.blocs
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blocs);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xloc.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xloc.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xloc.rcbuffer->pybuffer, (PyObject*)__pyx_v_xloc, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-      }
-      __pyx_t_7 = __pyx_t_8 = __pyx_t_9 = 0;
-    }
-    __pyx_pybuffernd_xloc.diminfo[0].strides = __pyx_pybuffernd_xloc.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xloc.diminfo[0].shape = __pyx_pybuffernd_xloc.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 453, __pyx_L1_error)
-  }
-  __pyx_v_xloc = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+454:         xlen = self.blengths
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blengths);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xlen.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xlen.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xlen.rcbuffer->pybuffer, (PyObject*)__pyx_v_xlen, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
-      }
-      __pyx_t_9 = __pyx_t_8 = __pyx_t_7 = 0;
-    }
-    __pyx_pybuffernd_xlen.diminfo[0].strides = __pyx_pybuffernd_xlen.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xlen.diminfo[0].shape = __pyx_pybuffernd_xlen.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 454, __pyx_L1_error)
-  }
-  __pyx_v_xlen = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+455:         yloc = y.blocs
-
  __pyx_t_1 = ((PyObject *)__pyx_v_y->blocs);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yloc.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yloc.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yloc.rcbuffer->pybuffer, (PyObject*)__pyx_v_yloc, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-      }
-      __pyx_t_7 = __pyx_t_8 = __pyx_t_9 = 0;
-    }
-    __pyx_pybuffernd_yloc.diminfo[0].strides = __pyx_pybuffernd_yloc.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_yloc.diminfo[0].shape = __pyx_pybuffernd_yloc.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 455, __pyx_L1_error)
-  }
-  __pyx_v_yloc = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+456:         ylen = y.blengths
-
  __pyx_t_1 = ((PyObject *)__pyx_v_y->blengths);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ylen.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ylen.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ylen.rcbuffer->pybuffer, (PyObject*)__pyx_v_ylen, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
-      }
-      __pyx_t_9 = __pyx_t_8 = __pyx_t_7 = 0;
-    }
-    __pyx_pybuffernd_ylen.diminfo[0].strides = __pyx_pybuffernd_ylen.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ylen.diminfo[0].shape = __pyx_pybuffernd_ylen.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 456, __pyx_L1_error)
-  }
-  __pyx_v_ylen = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
 457: 
-
 458:         # block may be split, but can't exceed original len / 2 + 1
-
+459:         max_len = min(self.length, y.length) // 2 + 1
-
  __pyx_t_10 = __pyx_v_y->length;
-  __pyx_t_11 = __pyx_v_self->length;
-  if (((__pyx_t_10 < __pyx_t_11) != 0)) {
-    __pyx_t_12 = __pyx_t_10;
-  } else {
-    __pyx_t_12 = __pyx_t_11;
-  }
-  __pyx_v_max_len = (__Pyx_div_long(__pyx_t_12, 2) + 1);
-
+460:         out_bloc = np.empty(max_len, dtype=np.int32)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 460, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 460, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_max_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 460, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 460, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 460, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 460, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_13 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 460, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_13) < 0) __PYX_ERR(0, 460, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  __pyx_t_13 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 460, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_13) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_13, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 460, __pyx_L1_error)
-  __pyx_t_14 = ((PyArrayObject *)__pyx_t_13);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_bloc, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-      }
-      __pyx_t_7 = __pyx_t_8 = __pyx_t_9 = 0;
-    }
-    __pyx_pybuffernd_out_bloc.diminfo[0].strides = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_bloc.diminfo[0].shape = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 460, __pyx_L1_error)
-  }
-  __pyx_t_14 = 0;
-  __pyx_v_out_bloc = ((PyArrayObject *)__pyx_t_13);
-  __pyx_t_13 = 0;
-
+461:         out_blen = np.empty(max_len, dtype=np.int32)
-
  __Pyx_GetModuleGlobalName(__pyx_t_13, __pyx_n_s_np); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_13, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  __pyx_t_13 = PyInt_FromSsize_t(__pyx_v_max_len); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_13);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_13);
-  __pyx_t_13 = 0;
-  __pyx_t_13 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_int32); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem(__pyx_t_13, __pyx_n_s_dtype, __pyx_t_4) < 0) __PYX_ERR(0, 461, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 461, __pyx_L1_error)
-  __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_blen, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
-      }
-      __pyx_t_9 = __pyx_t_8 = __pyx_t_7 = 0;
-    }
-    __pyx_pybuffernd_out_blen.diminfo[0].strides = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_blen.diminfo[0].shape = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 461, __pyx_L1_error)
-  }
-  __pyx_t_14 = 0;
-  __pyx_v_out_blen = ((PyArrayObject *)__pyx_t_4);
-  __pyx_t_4 = 0;
-
 462: 
-
+463:         while True:
-
  while (1) {
-
 464:             # we are done (or possibly never began)
-
+465:             if xi >= self.nblocks or yi >= y.nblocks:
-
    __pyx_t_15 = ((__pyx_v_xi >= __pyx_v_self->nblocks) != 0);
-    if (!__pyx_t_15) {
-    } else {
-      __pyx_t_5 = __pyx_t_15;
-      goto __pyx_L7_bool_binop_done;
-    }
-    __pyx_t_15 = ((__pyx_v_yi >= __pyx_v_y->nblocks) != 0);
-    __pyx_t_5 = __pyx_t_15;
-    __pyx_L7_bool_binop_done:;
-    if (__pyx_t_5) {
-/* … */
-    }
-
+466:                 break
-
      goto __pyx_L5_break;
-
 467: 
-
 468:             # completely symmetric...would like to avoid code dup but oh well
-
+469:             if xloc[xi] >= yloc[yi]:
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_t_6 = -1;
-    if (__pyx_t_16 < 0) {
-      __pyx_t_16 += __pyx_pybuffernd_xloc.diminfo[0].shape;
-      if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
-    } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xloc.diminfo[0].shape)) __pyx_t_6 = 0;
-    if (unlikely(__pyx_t_6 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_6);
-      __PYX_ERR(0, 469, __pyx_L1_error)
-    }
-    __pyx_t_17 = __pyx_v_yi;
-    __pyx_t_6 = -1;
-    if (__pyx_t_17 < 0) {
-      __pyx_t_17 += __pyx_pybuffernd_yloc.diminfo[0].shape;
-      if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_yloc.diminfo[0].shape)) __pyx_t_6 = 0;
-    if (unlikely(__pyx_t_6 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_6);
-      __PYX_ERR(0, 469, __pyx_L1_error)
-    }
-    __pyx_t_5 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xloc.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xloc.diminfo[0].strides)) >= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_yloc.diminfo[0].strides))) != 0);
-    if (__pyx_t_5) {
-/* … */
-      goto __pyx_L9;
-    }
-
+470:                 cur_loc = xloc[xi]
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_6 = -1;
-      if (__pyx_t_17 < 0) {
-        __pyx_t_17 += __pyx_pybuffernd_xloc.diminfo[0].shape;
-        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_xloc.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 470, __pyx_L1_error)
-      }
-      __pyx_v_cur_loc = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_xloc.diminfo[0].strides));
-
+471:                 diff = xloc[xi] - yloc[yi]
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_6 = -1;
-      if (__pyx_t_17 < 0) {
-        __pyx_t_17 += __pyx_pybuffernd_xloc.diminfo[0].shape;
-        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_xloc.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 471, __pyx_L1_error)
-      }
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_6 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_yloc.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_yloc.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 471, __pyx_L1_error)
-      }
-      __pyx_v_diff = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_xloc.diminfo[0].strides)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yloc.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_yloc.diminfo[0].strides)));
-
 472: 
-
+473:                 if ylen[yi] <= diff:
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_6 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_ylen.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_ylen.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 473, __pyx_L1_error)
-      }
-      __pyx_t_5 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ylen.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_ylen.diminfo[0].strides)) <= __pyx_v_diff) != 0);
-      if (__pyx_t_5) {
-/* … */
-      }
-
 474:                     # have to skip this block
-
+475:                     yi += 1
-
        __pyx_v_yi = (__pyx_v_yi + 1);
-
+476:                     continue
-
        goto __pyx_L4_continue;
-
 477: 
-
+478:                 if ylen[yi] - diff < xlen[xi]:
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_6 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_ylen.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_ylen.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 478, __pyx_L1_error)
-      }
-      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_6 = -1;
-      if (__pyx_t_17 < 0) {
-        __pyx_t_17 += __pyx_pybuffernd_xlen.diminfo[0].shape;
-        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_xlen.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 478, __pyx_L1_error)
-      }
-      __pyx_t_5 = ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ylen.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_ylen.diminfo[0].strides)) - __pyx_v_diff) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xlen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_xlen.diminfo[0].strides))) != 0);
-      if (__pyx_t_5) {
-/* … */
-        goto __pyx_L11;
-      }
-
 479:                     # take end of y block, move onward
-
+480:                     cur_length = ylen[yi] - diff
-
        __pyx_t_17 = __pyx_v_yi;
-        __pyx_t_6 = -1;
-        if (__pyx_t_17 < 0) {
-          __pyx_t_17 += __pyx_pybuffernd_ylen.diminfo[0].shape;
-          if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-        } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_ylen.diminfo[0].shape)) __pyx_t_6 = 0;
-        if (unlikely(__pyx_t_6 != -1)) {
-          __Pyx_RaiseBufferIndexError(__pyx_t_6);
-          __PYX_ERR(0, 480, __pyx_L1_error)
-        }
-        __pyx_v_cur_length = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ylen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_ylen.diminfo[0].strides)) - __pyx_v_diff);
-
+481:                     yi += 1
-
        __pyx_v_yi = (__pyx_v_yi + 1);
-
 482:                 else:
-
 483:                     # take end of x block
-
+484:                     cur_length = xlen[xi]
-
      /*else*/ {
-        __pyx_t_17 = __pyx_v_xi;
-        __pyx_t_6 = -1;
-        if (__pyx_t_17 < 0) {
-          __pyx_t_17 += __pyx_pybuffernd_xlen.diminfo[0].shape;
-          if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-        } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_xlen.diminfo[0].shape)) __pyx_t_6 = 0;
-        if (unlikely(__pyx_t_6 != -1)) {
-          __Pyx_RaiseBufferIndexError(__pyx_t_6);
-          __PYX_ERR(0, 484, __pyx_L1_error)
-        }
-        __pyx_v_cur_length = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xlen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_xlen.diminfo[0].strides));
-
+485:                     xi += 1
-
        __pyx_v_xi = (__pyx_v_xi + 1);
-      }
-      __pyx_L11:;
-
 486: 
-
 487:             else:  # xloc[xi] < yloc[yi]
-
+488:                 cur_loc = yloc[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_6 = -1;
-      if (__pyx_t_17 < 0) {
-        __pyx_t_17 += __pyx_pybuffernd_yloc.diminfo[0].shape;
-        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_yloc.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 488, __pyx_L1_error)
-      }
-      __pyx_v_cur_loc = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_yloc.diminfo[0].strides));
-
+489:                 diff = yloc[yi] - xloc[xi]
-
      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_6 = -1;
-      if (__pyx_t_17 < 0) {
-        __pyx_t_17 += __pyx_pybuffernd_yloc.diminfo[0].shape;
-        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_yloc.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 489, __pyx_L1_error)
-      }
-      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_6 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_xloc.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xloc.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 489, __pyx_L1_error)
-      }
-      __pyx_v_diff = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_yloc.diminfo[0].strides)) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xloc.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xloc.diminfo[0].strides)));
-
 490: 
-
+491:                 if xlen[xi] <= diff:
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_6 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_xlen.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xlen.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 491, __pyx_L1_error)
-      }
-      __pyx_t_5 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xlen.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xlen.diminfo[0].strides)) <= __pyx_v_diff) != 0);
-      if (__pyx_t_5) {
-/* … */
-      }
-
 492:                     # have to skip this block
-
+493:                     xi += 1
-
        __pyx_v_xi = (__pyx_v_xi + 1);
-
+494:                     continue
-
        goto __pyx_L4_continue;
-
 495: 
-
+496:                 if xlen[xi] - diff < ylen[yi]:
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_6 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_xlen.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xlen.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 496, __pyx_L1_error)
-      }
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_6 = -1;
-      if (__pyx_t_17 < 0) {
-        __pyx_t_17 += __pyx_pybuffernd_ylen.diminfo[0].shape;
-        if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_ylen.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 496, __pyx_L1_error)
-      }
-      __pyx_t_5 = ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xlen.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xlen.diminfo[0].strides)) - __pyx_v_diff) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ylen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_ylen.diminfo[0].strides))) != 0);
-      if (__pyx_t_5) {
-/* … */
-        goto __pyx_L13;
-      }
-
 497:                     # take end of x block, move onward
-
+498:                     cur_length = xlen[xi] - diff
-
        __pyx_t_17 = __pyx_v_xi;
-        __pyx_t_6 = -1;
-        if (__pyx_t_17 < 0) {
-          __pyx_t_17 += __pyx_pybuffernd_xlen.diminfo[0].shape;
-          if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-        } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_xlen.diminfo[0].shape)) __pyx_t_6 = 0;
-        if (unlikely(__pyx_t_6 != -1)) {
-          __Pyx_RaiseBufferIndexError(__pyx_t_6);
-          __PYX_ERR(0, 498, __pyx_L1_error)
-        }
-        __pyx_v_cur_length = ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xlen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_xlen.diminfo[0].strides)) - __pyx_v_diff);
-
+499:                     xi += 1
-
        __pyx_v_xi = (__pyx_v_xi + 1);
-
 500:                 else:
-
 501:                     # take end of y block
-
+502:                     cur_length = ylen[yi]
-
      /*else*/ {
-        __pyx_t_17 = __pyx_v_yi;
-        __pyx_t_6 = -1;
-        if (__pyx_t_17 < 0) {
-          __pyx_t_17 += __pyx_pybuffernd_ylen.diminfo[0].shape;
-          if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-        } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_ylen.diminfo[0].shape)) __pyx_t_6 = 0;
-        if (unlikely(__pyx_t_6 != -1)) {
-          __Pyx_RaiseBufferIndexError(__pyx_t_6);
-          __PYX_ERR(0, 502, __pyx_L1_error)
-        }
-        __pyx_v_cur_length = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ylen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_ylen.diminfo[0].strides));
-
+503:                     yi += 1
-
        __pyx_v_yi = (__pyx_v_yi + 1);
-      }
-      __pyx_L13:;
-    }
-    __pyx_L9:;
-
 504: 
-
+505:             out_bloc[result_indexer] = cur_loc
-
    __pyx_t_17 = __pyx_v_result_indexer;
-    __pyx_t_6 = -1;
-    if (__pyx_t_17 < 0) {
-      __pyx_t_17 += __pyx_pybuffernd_out_bloc.diminfo[0].shape;
-      if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_out_bloc.diminfo[0].shape)) __pyx_t_6 = 0;
-    if (unlikely(__pyx_t_6 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_6);
-      __PYX_ERR(0, 505, __pyx_L1_error)
-    }
-    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out_bloc.diminfo[0].strides) = __pyx_v_cur_loc;
-
+506:             out_blen[result_indexer] = cur_length
-
    __pyx_t_17 = __pyx_v_result_indexer;
-    __pyx_t_6 = -1;
-    if (__pyx_t_17 < 0) {
-      __pyx_t_17 += __pyx_pybuffernd_out_blen.diminfo[0].shape;
-      if (unlikely(__pyx_t_17 < 0)) __pyx_t_6 = 0;
-    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_out_blen.diminfo[0].shape)) __pyx_t_6 = 0;
-    if (unlikely(__pyx_t_6 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_6);
-      __PYX_ERR(0, 506, __pyx_L1_error)
-    }
-    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out_blen.diminfo[0].strides) = __pyx_v_cur_length;
-
+507:             result_indexer += 1
-
    __pyx_v_result_indexer = (__pyx_v_result_indexer + 1);
-    __pyx_L4_continue:;
-  }
-  __pyx_L5_break:;
-
 508: 
-
+509:         out_bloc = out_bloc[:result_indexer]
-
  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 509, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_13 = PySlice_New(Py_None, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 509, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_out_bloc), __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 509, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 509, __pyx_L1_error)
-  __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_7, &__pyx_t_8, &__pyx_t_9);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_bloc, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_7, __pyx_t_8, __pyx_t_9);
-      }
-      __pyx_t_7 = __pyx_t_8 = __pyx_t_9 = 0;
-    }
-    __pyx_pybuffernd_out_bloc.diminfo[0].strides = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_bloc.diminfo[0].shape = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 509, __pyx_L1_error)
-  }
-  __pyx_t_14 = 0;
-  __Pyx_DECREF_SET(__pyx_v_out_bloc, ((PyArrayObject *)__pyx_t_4));
-  __pyx_t_4 = 0;
-
+510:         out_blen = out_blen[:result_indexer]
-
  __pyx_t_4 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 510, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_13 = PySlice_New(Py_None, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 510, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_out_blen), __pyx_t_13); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 510, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 510, __pyx_L1_error)
-  __pyx_t_14 = ((PyArrayObject *)__pyx_t_4);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_t_14, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_9, &__pyx_t_8, &__pyx_t_7);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_blen, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_9, __pyx_t_8, __pyx_t_7);
-      }
-      __pyx_t_9 = __pyx_t_8 = __pyx_t_7 = 0;
-    }
-    __pyx_pybuffernd_out_blen.diminfo[0].strides = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_blen.diminfo[0].shape = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 510, __pyx_L1_error)
-  }
-  __pyx_t_14 = 0;
-  __Pyx_DECREF_SET(__pyx_v_out_blen, ((PyArrayObject *)__pyx_t_4));
-  __pyx_t_4 = 0;
-
 511: 
-
+512:         return BlockIndex(self.length, out_bloc, out_blen)
-
  __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_4 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->length); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 512, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_13 = PyTuple_New(3); if (unlikely(!__pyx_t_13)) __PYX_ERR(0, 512, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_13);
-  __Pyx_GIVEREF(__pyx_t_4);
-  PyTuple_SET_ITEM(__pyx_t_13, 0, __pyx_t_4);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_bloc));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_bloc));
-  PyTuple_SET_ITEM(__pyx_t_13, 1, ((PyObject *)__pyx_v_out_bloc));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_blen));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_blen));
-  PyTuple_SET_ITEM(__pyx_t_13, 2, ((PyObject *)__pyx_v_out_blen));
-  __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockIndex), __pyx_t_13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 512, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_13); __pyx_t_13 = 0;
-  __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4);
-  __pyx_t_4 = 0;
-  goto __pyx_L0;
-
 513: 
-
+514:     cpdef BlockIndex make_union(self, SparseIndex y):
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_17make_union(PyObject *__pyx_v_self, PyObject *__pyx_v_y); /*proto*/
-static struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_make_union(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_y, int __pyx_skip_dispatch) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("make_union", 0);
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_make_union); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 514, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_17make_union)) {
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-          if (likely(__pyx_t_4)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-            __Pyx_INCREF(__pyx_t_4);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_3, function);
-          }
-        }
-        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_y)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_y));
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 514, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(0, 514, __pyx_L1_error)
-        __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_2);
-        __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.make_union", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_17make_union(PyObject *__pyx_v_self, PyObject *__pyx_v_y); /*proto*/
-static char __pyx_doc_6pandas_5_libs_6sparse_10BlockIndex_16make_union[] = "\n        Combine together two BlockIndex objects, accepting indices if contained\n        in one or the other\n\n        Parameters\n        ----------\n        other : SparseIndex\n\n        Notes\n        -----\n        union is a protected keyword in Cython, hence make_union\n\n        Returns\n        -------\n        BlockIndex\n        ";
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_17make_union(PyObject *__pyx_v_self, PyObject *__pyx_v_y) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("make_union (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "y", 0))) __PYX_ERR(0, 514, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_16make_union(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_y));
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_16make_union(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_y) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("make_union", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_make_union(__pyx_v_self, __pyx_v_y, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 514, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.make_union", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 515:         """
-
 516:         Combine together two BlockIndex objects, accepting indices if contained
-
 517:         in one or the other
-
 518: 
-
 519:         Parameters
-
 520:         ----------
-
 521:         other : SparseIndex
-
 522: 
-
 523:         Notes
-
 524:         -----
-
 525:         union is a protected keyword in Cython, hence make_union
-
 526: 
-
 527:         Returns
-
 528:         -------
-
 529:         BlockIndex
-
 530:         """
-
+531:         return BlockUnion(self, y.to_block_index()).result
-
  __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_y), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 531, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_3)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_3);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 531, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_INCREF(((PyObject *)__pyx_v_self));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
-  PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_self));
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockUnion), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 531, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_INCREF(((PyObject *)((struct __pyx_obj_6pandas_5_libs_6sparse_BlockUnion *)__pyx_t_1)->__pyx_base.result));
-  __pyx_r = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockUnion *)__pyx_t_1)->__pyx_base.result;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 532: 
-
+533:     cpdef Py_ssize_t lookup(self, Py_ssize_t index):
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_19lookup(PyObject *__pyx_v_self, PyObject *__pyx_arg_index); /*proto*/
-static Py_ssize_t __pyx_f_6pandas_5_libs_6sparse_10BlockIndex_lookup(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, Py_ssize_t __pyx_v_index, int __pyx_skip_dispatch) {
-  Py_ssize_t __pyx_v_i;
-  Py_ssize_t __pyx_v_cum_len;
-  PyArrayObject *__pyx_v_locs = 0;
-  PyArrayObject *__pyx_v_lens = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_lens;
-  __Pyx_Buffer __pyx_pybuffer_lens;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_locs;
-  __Pyx_Buffer __pyx_pybuffer_locs;
-  Py_ssize_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("lookup", 0);
-  __pyx_pybuffer_locs.pybuffer.buf = NULL;
-  __pyx_pybuffer_locs.refcount = 0;
-  __pyx_pybuffernd_locs.data = NULL;
-  __pyx_pybuffernd_locs.rcbuffer = &__pyx_pybuffer_locs;
-  __pyx_pybuffer_lens.pybuffer.buf = NULL;
-  __pyx_pybuffer_lens.refcount = 0;
-  __pyx_pybuffernd_lens.data = NULL;
-  __pyx_pybuffernd_lens.rcbuffer = &__pyx_pybuffer_lens;
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_19lookup)) {
-        __pyx_t_3 = PyInt_FromSsize_t(__pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 533, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
-          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-          if (likely(__pyx_t_5)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-            __Pyx_INCREF(__pyx_t_5);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_4, function);
-          }
-        }
-        __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3);
-        __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 533, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_6 = __Pyx_PyIndex_AsSsize_t(__pyx_t_2); if (unlikely((__pyx_t_6 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 533, __pyx_L1_error)
-        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-        __pyx_r = __pyx_t_6;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_WriteUnraisable("pandas._libs.sparse.BlockIndex.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_locs);
-  __Pyx_XDECREF((PyObject *)__pyx_v_lens);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_19lookup(PyObject *__pyx_v_self, PyObject *__pyx_arg_index); /*proto*/
-static char __pyx_doc_6pandas_5_libs_6sparse_10BlockIndex_18lookup[] = "\n        Return the internal location if value exists on given index.\n        Return -1 otherwise.\n        ";
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_19lookup(PyObject *__pyx_v_self, PyObject *__pyx_arg_index) {
-  Py_ssize_t __pyx_v_index;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("lookup (wrapper)", 0);
-  assert(__pyx_arg_index); {
-    __pyx_v_index = __Pyx_PyIndex_AsSsize_t(__pyx_arg_index); if (unlikely((__pyx_v_index == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 533, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_18lookup(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), ((Py_ssize_t)__pyx_v_index));
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_18lookup(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, Py_ssize_t __pyx_v_index) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("lookup", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_lookup(__pyx_v_self, __pyx_v_index, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 533, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.lookup", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 534:         """
-
 535:         Return the internal location if value exists on given index.
-
 536:         Return -1 otherwise.
-
 537:         """
-
 538:         cdef:
-
 539:             Py_ssize_t i, cum_len
-
 540:             ndarray[int32_t, ndim=1] locs, lens
-
 541: 
-
+542:         locs = self.blocs
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blocs);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)__pyx_v_locs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_locs.diminfo[0].strides = __pyx_pybuffernd_locs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_locs.diminfo[0].shape = __pyx_pybuffernd_locs.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 542, __pyx_L1_error)
-  }
-  __pyx_v_locs = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+543:         lens = self.blengths
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blengths);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)__pyx_v_lens, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_10, __pyx_t_9, __pyx_t_8);
-      }
-      __pyx_t_10 = __pyx_t_9 = __pyx_t_8 = 0;
-    }
-    __pyx_pybuffernd_lens.diminfo[0].strides = __pyx_pybuffernd_lens.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lens.diminfo[0].shape = __pyx_pybuffernd_lens.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 543, __pyx_L1_error)
-  }
-  __pyx_v_lens = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
 544: 
-
+545:         if self.nblocks == 0:
-
  __pyx_t_11 = ((__pyx_v_self->nblocks == 0) != 0);
-  if (__pyx_t_11) {
-/* … */
-  }
-
+546:             return -1
-
    __pyx_r = -1L;
-    goto __pyx_L0;
-
+547:         elif index < locs[0]:
-
  __pyx_t_12 = 0;
-  __pyx_t_7 = -1;
-  if (__pyx_t_12 < 0) {
-    __pyx_t_12 += __pyx_pybuffernd_locs.diminfo[0].shape;
-    if (unlikely(__pyx_t_12 < 0)) __pyx_t_7 = 0;
-  } else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_7 = 0;
-  if (unlikely(__pyx_t_7 != -1)) {
-    __Pyx_RaiseBufferIndexError(__pyx_t_7);
-    __PYX_ERR(0, 547, __pyx_L1_error)
-  }
-  __pyx_t_11 = ((__pyx_v_index < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_locs.diminfo[0].strides))) != 0);
-  if (__pyx_t_11) {
-/* … */
-  }
-
+548:             return -1
-
    __pyx_r = -1L;
-    goto __pyx_L0;
-
 549: 
-
+550:         cum_len = 0
-
  __pyx_v_cum_len = 0;
-
+551:         for i in range(self.nblocks):
-
  __pyx_t_13 = __pyx_v_self->nblocks;
-  __pyx_t_14 = __pyx_t_13;
-  for (__pyx_t_6 = 0; __pyx_t_6 < __pyx_t_14; __pyx_t_6+=1) {
-    __pyx_v_i = __pyx_t_6;
-
+552:             if index >= locs[i] and index < locs[i] + lens[i]:
-
    __pyx_t_12 = __pyx_v_i;
-    __pyx_t_7 = -1;
-    if (__pyx_t_12 < 0) {
-      __pyx_t_12 += __pyx_pybuffernd_locs.diminfo[0].shape;
-      if (unlikely(__pyx_t_12 < 0)) __pyx_t_7 = 0;
-    } else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_7 = 0;
-    if (unlikely(__pyx_t_7 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_7);
-      __PYX_ERR(0, 552, __pyx_L1_error)
-    }
-    __pyx_t_15 = ((__pyx_v_index >= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_locs.diminfo[0].strides))) != 0);
-    if (__pyx_t_15) {
-    } else {
-      __pyx_t_11 = __pyx_t_15;
-      goto __pyx_L7_bool_binop_done;
-    }
-    __pyx_t_12 = __pyx_v_i;
-    __pyx_t_7 = -1;
-    if (__pyx_t_12 < 0) {
-      __pyx_t_12 += __pyx_pybuffernd_locs.diminfo[0].shape;
-      if (unlikely(__pyx_t_12 < 0)) __pyx_t_7 = 0;
-    } else if (unlikely(__pyx_t_12 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_7 = 0;
-    if (unlikely(__pyx_t_7 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_7);
-      __PYX_ERR(0, 552, __pyx_L1_error)
-    }
-    __pyx_t_16 = __pyx_v_i;
-    __pyx_t_7 = -1;
-    if (__pyx_t_16 < 0) {
-      __pyx_t_16 += __pyx_pybuffernd_lens.diminfo[0].shape;
-      if (unlikely(__pyx_t_16 < 0)) __pyx_t_7 = 0;
-    } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_lens.diminfo[0].shape)) __pyx_t_7 = 0;
-    if (unlikely(__pyx_t_7 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_7);
-      __PYX_ERR(0, 552, __pyx_L1_error)
-    }
-    __pyx_t_15 = ((__pyx_v_index < ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_12, __pyx_pybuffernd_locs.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_lens.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_lens.diminfo[0].strides)))) != 0);
-    __pyx_t_11 = __pyx_t_15;
-    __pyx_L7_bool_binop_done:;
-    if (__pyx_t_11) {
-/* … */
-    }
-
+553:                 return cum_len + index - locs[i]
-
      __pyx_t_16 = __pyx_v_i;
-      __pyx_t_7 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_locs.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_7 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_7 = 0;
-      if (unlikely(__pyx_t_7 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_7);
-        __PYX_ERR(0, 553, __pyx_L1_error)
-      }
-      __pyx_r = ((__pyx_v_cum_len + __pyx_v_index) - (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_locs.diminfo[0].strides)));
-      goto __pyx_L0;
-
+554:             cum_len += lens[i]
-
    __pyx_t_16 = __pyx_v_i;
-    __pyx_t_7 = -1;
-    if (__pyx_t_16 < 0) {
-      __pyx_t_16 += __pyx_pybuffernd_lens.diminfo[0].shape;
-      if (unlikely(__pyx_t_16 < 0)) __pyx_t_7 = 0;
-    } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_lens.diminfo[0].shape)) __pyx_t_7 = 0;
-    if (unlikely(__pyx_t_7 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_7);
-      __PYX_ERR(0, 554, __pyx_L1_error)
-    }
-    __pyx_v_cum_len = (__pyx_v_cum_len + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_lens.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_lens.diminfo[0].strides)));
-  }
-
 555: 
-
+556:         return -1
-
  __pyx_r = -1L;
-  goto __pyx_L0;
-
 557: 
-
 558:     @cython.wraparound(False)
-
+559:     cpdef ndarray[int32_t] lookup_array(self, ndarray[int32_t, ndim=1] indexer):
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_21lookup_array(PyObject *__pyx_v_self, PyObject *__pyx_v_indexer); /*proto*/
-static PyArrayObject *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_lookup_array(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyArrayObject *__pyx_v_indexer, int __pyx_skip_dispatch) {
-  Py_ssize_t __pyx_v_n;
-  Py_ssize_t __pyx_v_i;
-  Py_ssize_t __pyx_v_j;
-  Py_ssize_t __pyx_v_ind_val;
-  PyArrayObject *__pyx_v_locs = 0;
-  PyArrayObject *__pyx_v_lens = 0;
-  PyArrayObject *__pyx_v_results = 0;
-  PyObject *__pyx_v_cum_len = NULL;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indexer;
-  __Pyx_Buffer __pyx_pybuffer_indexer;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_lens;
-  __Pyx_Buffer __pyx_pybuffer_lens;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_locs;
-  __Pyx_Buffer __pyx_pybuffer_locs;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_results;
-  __Pyx_Buffer __pyx_pybuffer_results;
-  PyArrayObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("lookup_array", 0);
-  __pyx_pybuffer_locs.pybuffer.buf = NULL;
-  __pyx_pybuffer_locs.refcount = 0;
-  __pyx_pybuffernd_locs.data = NULL;
-  __pyx_pybuffernd_locs.rcbuffer = &__pyx_pybuffer_locs;
-  __pyx_pybuffer_lens.pybuffer.buf = NULL;
-  __pyx_pybuffer_lens.refcount = 0;
-  __pyx_pybuffernd_lens.data = NULL;
-  __pyx_pybuffernd_lens.rcbuffer = &__pyx_pybuffer_lens;
-  __pyx_pybuffer_results.pybuffer.buf = NULL;
-  __pyx_pybuffer_results.refcount = 0;
-  __pyx_pybuffernd_results.data = NULL;
-  __pyx_pybuffernd_results.rcbuffer = &__pyx_pybuffer_results;
-  __pyx_pybuffer_indexer.pybuffer.buf = NULL;
-  __pyx_pybuffer_indexer.refcount = 0;
-  __pyx_pybuffernd_indexer.data = NULL;
-  __pyx_pybuffernd_indexer.rcbuffer = &__pyx_pybuffer_indexer;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 559, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indexer.diminfo[0].strides = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indexer.diminfo[0].shape = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.shape[0];
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_lookup_array); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 559, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_21lookup_array)) {
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-          if (likely(__pyx_t_4)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-            __Pyx_INCREF(__pyx_t_4);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_3, function);
-          }
-        }
-        __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_indexer)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_indexer));
-        __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 559, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_2);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 559, __pyx_L1_error)
-        __pyx_r = ((PyArrayObject *)__pyx_t_2);
-        __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_10);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_results.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.lookup_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_results.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_locs);
-  __Pyx_XDECREF((PyObject *)__pyx_v_lens);
-  __Pyx_XDECREF((PyObject *)__pyx_v_results);
-  __Pyx_XDECREF(__pyx_v_cum_len);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_21lookup_array(PyObject *__pyx_v_self, PyObject *__pyx_v_indexer); /*proto*/
-static char __pyx_doc_6pandas_5_libs_6sparse_10BlockIndex_20lookup_array[] = "\n        Vectorized lookup, returns ndarray[int32_t]\n        ";
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_21lookup_array(PyObject *__pyx_v_self, PyObject *__pyx_v_indexer) {
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("lookup_array (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indexer), __pyx_ptype_5numpy_ndarray, 1, "indexer", 0))) __PYX_ERR(0, 559, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_20lookup_array(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), ((PyArrayObject *)__pyx_v_indexer));
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_20lookup_array(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyArrayObject *__pyx_v_indexer) {
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indexer;
-  __Pyx_Buffer __pyx_pybuffer_indexer;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("lookup_array", 0);
-  __pyx_pybuffer_indexer.pybuffer.buf = NULL;
-  __pyx_pybuffer_indexer.refcount = 0;
-  __pyx_pybuffernd_indexer.data = NULL;
-  __pyx_pybuffernd_indexer.rcbuffer = &__pyx_pybuffer_indexer;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer, (PyObject*)__pyx_v_indexer, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 559, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indexer.diminfo[0].strides = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indexer.diminfo[0].shape = __pyx_pybuffernd_indexer.rcbuffer->pybuffer.shape[0];
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_lookup_array(__pyx_v_self, __pyx_v_indexer, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 559, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.lookup_array", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indexer.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 560:         """
-
 561:         Vectorized lookup, returns ndarray[int32_t]
-
 562:         """
-
 563:         cdef:
-
 564:             Py_ssize_t n, i, j, ind_val
-
 565:             ndarray[int32_t, ndim=1] locs, lens
-
 566:             ndarray[int32_t, ndim=1] results
-
 567: 
-
+568:         locs = self.blocs
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blocs);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_locs.rcbuffer->pybuffer);
-    __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_5 < 0)) {
-      PyErr_Fetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_locs.rcbuffer->pybuffer, (PyObject*)__pyx_v_locs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
-      }
-      __pyx_t_6 = __pyx_t_7 = __pyx_t_8 = 0;
-    }
-    __pyx_pybuffernd_locs.diminfo[0].strides = __pyx_pybuffernd_locs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_locs.diminfo[0].shape = __pyx_pybuffernd_locs.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 568, __pyx_L1_error)
-  }
-  __pyx_v_locs = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+569:         lens = self.blengths
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blengths);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_lens.rcbuffer->pybuffer);
-    __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_5 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_7, &__pyx_t_6);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_lens.rcbuffer->pybuffer, (PyObject*)__pyx_v_lens, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_6);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_7, __pyx_t_6);
-      }
-      __pyx_t_8 = __pyx_t_7 = __pyx_t_6 = 0;
-    }
-    __pyx_pybuffernd_lens.diminfo[0].strides = __pyx_pybuffernd_lens.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_lens.diminfo[0].shape = __pyx_pybuffernd_lens.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 569, __pyx_L1_error)
-  }
-  __pyx_v_lens = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
 570: 
-
+571:         n = len(indexer)
-
  __pyx_t_9 = PyObject_Length(((PyObject *)__pyx_v_indexer)); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 571, __pyx_L1_error)
-  __pyx_v_n = __pyx_t_9;
-
+572:         results = np.empty(n, dtype=np.int32)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_n); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_10 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int32); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_10);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_10) < 0) __PYX_ERR(0, 572, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-  __pyx_t_10 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_10);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_10) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_10, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 572, __pyx_L1_error)
-  __pyx_t_11 = ((PyArrayObject *)__pyx_t_10);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_results.rcbuffer->pybuffer);
-    __pyx_t_5 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_results.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_5 < 0)) {
-      PyErr_Fetch(&__pyx_t_6, &__pyx_t_7, &__pyx_t_8);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_results.rcbuffer->pybuffer, (PyObject*)__pyx_v_results, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_7); Py_XDECREF(__pyx_t_8);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_6, __pyx_t_7, __pyx_t_8);
-      }
-      __pyx_t_6 = __pyx_t_7 = __pyx_t_8 = 0;
-    }
-    __pyx_pybuffernd_results.diminfo[0].strides = __pyx_pybuffernd_results.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_results.diminfo[0].shape = __pyx_pybuffernd_results.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 572, __pyx_L1_error)
-  }
-  __pyx_t_11 = 0;
-  __pyx_v_results = ((PyArrayObject *)__pyx_t_10);
-  __pyx_t_10 = 0;
-
+573:         results[:] = -1
-
  if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_results), __pyx_slice__8, __pyx_int_neg_1) < 0)) __PYX_ERR(0, 573, __pyx_L1_error)
-
 574: 
-
+575:         if self.npoints == 0:
-
  __pyx_t_12 = ((__pyx_v_self->npoints == 0) != 0);
-  if (__pyx_t_12) {
-/* … */
-  }
-
+576:             return results
-
    __Pyx_XDECREF(((PyObject *)__pyx_r));
-    __Pyx_INCREF(((PyObject *)__pyx_v_results));
-    __pyx_r = ((PyArrayObject *)__pyx_v_results);
-    goto __pyx_L0;
-
 577: 
-
+578:         for i in range(n):
-
  __pyx_t_9 = __pyx_v_n;
-  __pyx_t_13 = __pyx_t_9;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_i = __pyx_t_14;
-
+579:             ind_val = indexer[i]
-
    __pyx_t_15 = __pyx_v_i;
-    __pyx_t_5 = -1;
-    if (__pyx_t_15 < 0) {
-      __pyx_t_5 = 0;
-    } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_indexer.diminfo[0].shape)) __pyx_t_5 = 0;
-    if (unlikely(__pyx_t_5 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_5);
-      __PYX_ERR(0, 579, __pyx_L1_error)
-    }
-    __pyx_v_ind_val = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_indexer.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_indexer.diminfo[0].strides));
-
+580:             if not (ind_val < 0 or self.length <= ind_val):
-
    __pyx_t_16 = ((__pyx_v_ind_val < 0) != 0);
-    if (!__pyx_t_16) {
-    } else {
-      __pyx_t_12 = __pyx_t_16;
-      goto __pyx_L7_bool_binop_done;
-    }
-    __pyx_t_16 = ((__pyx_v_self->length <= __pyx_v_ind_val) != 0);
-    __pyx_t_12 = __pyx_t_16;
-    __pyx_L7_bool_binop_done:;
-    __pyx_t_16 = ((!__pyx_t_12) != 0);
-    if (__pyx_t_16) {
-/* … */
-    }
-  }
-
+581:                 cum_len = 0
-
      __Pyx_INCREF(__pyx_int_0);
-      __Pyx_XDECREF_SET(__pyx_v_cum_len, __pyx_int_0);
-
+582:                 for j in range(self.nblocks):
-
      __pyx_t_17 = __pyx_v_self->nblocks;
-      __pyx_t_18 = __pyx_t_17;
-      for (__pyx_t_19 = 0; __pyx_t_19 < __pyx_t_18; __pyx_t_19+=1) {
-        __pyx_v_j = __pyx_t_19;
-
+583:                     if ind_val >= locs[j] and ind_val < locs[j] + lens[j]:
-
        __pyx_t_15 = __pyx_v_j;
-        __pyx_t_5 = -1;
-        if (__pyx_t_15 < 0) {
-          __pyx_t_5 = 0;
-        } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_5 = 0;
-        if (unlikely(__pyx_t_5 != -1)) {
-          __Pyx_RaiseBufferIndexError(__pyx_t_5);
-          __PYX_ERR(0, 583, __pyx_L1_error)
-        }
-        __pyx_t_12 = ((__pyx_v_ind_val >= (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_locs.diminfo[0].strides))) != 0);
-        if (__pyx_t_12) {
-        } else {
-          __pyx_t_16 = __pyx_t_12;
-          goto __pyx_L12_bool_binop_done;
-        }
-        __pyx_t_15 = __pyx_v_j;
-        __pyx_t_5 = -1;
-        if (__pyx_t_15 < 0) {
-          __pyx_t_5 = 0;
-        } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_5 = 0;
-        if (unlikely(__pyx_t_5 != -1)) {
-          __Pyx_RaiseBufferIndexError(__pyx_t_5);
-          __PYX_ERR(0, 583, __pyx_L1_error)
-        }
-        __pyx_t_20 = __pyx_v_j;
-        __pyx_t_5 = -1;
-        if (__pyx_t_20 < 0) {
-          __pyx_t_5 = 0;
-        } else if (unlikely(__pyx_t_20 >= __pyx_pybuffernd_lens.diminfo[0].shape)) __pyx_t_5 = 0;
-        if (unlikely(__pyx_t_5 != -1)) {
-          __Pyx_RaiseBufferIndexError(__pyx_t_5);
-          __PYX_ERR(0, 583, __pyx_L1_error)
-        }
-        __pyx_t_12 = ((__pyx_v_ind_val < ((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_locs.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_lens.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_lens.diminfo[0].strides)))) != 0);
-        __pyx_t_16 = __pyx_t_12;
-        __pyx_L12_bool_binop_done:;
-        if (__pyx_t_16) {
-/* … */
-        }
-
+584:                         results[i] = cum_len + ind_val - locs[j]
-
          __pyx_t_10 = PyInt_FromSsize_t(__pyx_v_ind_val); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 584, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_10);
-          __pyx_t_1 = PyNumber_Add(__pyx_v_cum_len, __pyx_t_10); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 584, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_1);
-          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-          __pyx_t_20 = __pyx_v_j;
-          __pyx_t_5 = -1;
-          if (__pyx_t_20 < 0) {
-            __pyx_t_5 = 0;
-          } else if (unlikely(__pyx_t_20 >= __pyx_pybuffernd_locs.diminfo[0].shape)) __pyx_t_5 = 0;
-          if (unlikely(__pyx_t_5 != -1)) {
-            __Pyx_RaiseBufferIndexError(__pyx_t_5);
-            __PYX_ERR(0, 584, __pyx_L1_error)
-          }
-          __pyx_t_10 = __Pyx_PyInt_From_npy_int32((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_locs.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_locs.diminfo[0].strides))); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 584, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_10);
-          __pyx_t_3 = PyNumber_Subtract(__pyx_t_1, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 584, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_3);
-          __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-          __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-          __pyx_t_21 = __Pyx_PyInt_As_npy_int32(__pyx_t_3); if (unlikely((__pyx_t_21 == ((npy_int32)-1)) && PyErr_Occurred())) __PYX_ERR(0, 584, __pyx_L1_error)
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-          __pyx_t_20 = __pyx_v_i;
-          __pyx_t_5 = -1;
-          if (__pyx_t_20 < 0) {
-            __pyx_t_5 = 0;
-          } else if (unlikely(__pyx_t_20 >= __pyx_pybuffernd_results.diminfo[0].shape)) __pyx_t_5 = 0;
-          if (unlikely(__pyx_t_5 != -1)) {
-            __Pyx_RaiseBufferIndexError(__pyx_t_5);
-            __PYX_ERR(0, 584, __pyx_L1_error)
-          }
-          *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_results.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_results.diminfo[0].strides) = __pyx_t_21;
-
+585:                     cum_len += lens[j]
-
        __pyx_t_20 = __pyx_v_j;
-        __pyx_t_5 = -1;
-        if (__pyx_t_20 < 0) {
-          __pyx_t_5 = 0;
-        } else if (unlikely(__pyx_t_20 >= __pyx_pybuffernd_lens.diminfo[0].shape)) __pyx_t_5 = 0;
-        if (unlikely(__pyx_t_5 != -1)) {
-          __Pyx_RaiseBufferIndexError(__pyx_t_5);
-          __PYX_ERR(0, 585, __pyx_L1_error)
-        }
-        __pyx_t_3 = __Pyx_PyInt_From_npy_int32((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_lens.rcbuffer->pybuffer.buf, __pyx_t_20, __pyx_pybuffernd_lens.diminfo[0].strides))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 585, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_10 = PyNumber_InPlaceAdd(__pyx_v_cum_len, __pyx_t_3); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 585, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_10);
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __Pyx_DECREF_SET(__pyx_v_cum_len, __pyx_t_10);
-        __pyx_t_10 = 0;
-      }
-
+586:         return results
-
  __Pyx_XDECREF(((PyObject *)__pyx_r));
-  __Pyx_INCREF(((PyObject *)__pyx_v_results));
-  __pyx_r = ((PyArrayObject *)__pyx_v_results);
-  goto __pyx_L0;
-
 587: 
-
+588:     cpdef ndarray reindex(self, ndarray[float64_t, ndim=1] values,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_23reindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyArrayObject *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_reindex(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, CYTHON_UNUSED PyArrayObject *__pyx_v_values, CYTHON_UNUSED __pyx_t_5numpy_float64_t __pyx_v_fill_value, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other_, int __pyx_skip_dispatch) {
-  Py_ssize_t __pyx_v_i;
-  Py_ssize_t __pyx_v_j;
-  Py_ssize_t __pyx_v_ocur;
-  CYTHON_UNUSED Py_ssize_t __pyx_v_ocurlen;
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_other = 0;
-  CYTHON_UNUSED PyArrayObject *__pyx_v_result = 0;
-  PyArrayObject *__pyx_v_slocs = 0;
-  PyArrayObject *__pyx_v_slens = 0;
-  PyArrayObject *__pyx_v_olocs = 0;
-  PyArrayObject *__pyx_v_olens = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_olens;
-  __Pyx_Buffer __pyx_pybuffer_olens;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_olocs;
-  __Pyx_Buffer __pyx_pybuffer_olocs;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_result;
-  __Pyx_Buffer __pyx_pybuffer_result;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_slens;
-  __Pyx_Buffer __pyx_pybuffer_slens;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_slocs;
-  __Pyx_Buffer __pyx_pybuffer_slocs;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
-  __Pyx_Buffer __pyx_pybuffer_values;
-  PyArrayObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("reindex", 0);
-  __pyx_pybuffer_result.pybuffer.buf = NULL;
-  __pyx_pybuffer_result.refcount = 0;
-  __pyx_pybuffernd_result.data = NULL;
-  __pyx_pybuffernd_result.rcbuffer = &__pyx_pybuffer_result;
-  __pyx_pybuffer_slocs.pybuffer.buf = NULL;
-  __pyx_pybuffer_slocs.refcount = 0;
-  __pyx_pybuffernd_slocs.data = NULL;
-  __pyx_pybuffernd_slocs.rcbuffer = &__pyx_pybuffer_slocs;
-  __pyx_pybuffer_slens.pybuffer.buf = NULL;
-  __pyx_pybuffer_slens.refcount = 0;
-  __pyx_pybuffernd_slens.data = NULL;
-  __pyx_pybuffernd_slens.rcbuffer = &__pyx_pybuffer_slens;
-  __pyx_pybuffer_olocs.pybuffer.buf = NULL;
-  __pyx_pybuffer_olocs.refcount = 0;
-  __pyx_pybuffernd_olocs.data = NULL;
-  __pyx_pybuffernd_olocs.rcbuffer = &__pyx_pybuffer_olocs;
-  __pyx_pybuffer_olens.pybuffer.buf = NULL;
-  __pyx_pybuffer_olens.refcount = 0;
-  __pyx_pybuffernd_olens.data = NULL;
-  __pyx_pybuffernd_olens.rcbuffer = &__pyx_pybuffer_olens;
-  __pyx_pybuffer_values.pybuffer.buf = NULL;
-  __pyx_pybuffer_values.refcount = 0;
-  __pyx_pybuffernd_values.data = NULL;
-  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 588, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_reindex); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_23reindex)) {
-        __Pyx_XDECREF(((PyObject *)__pyx_r));
-        __pyx_t_3 = PyFloat_FromDouble(__pyx_v_fill_value); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 588, __pyx_L1_error)
-        __Pyx_GOTREF(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_4 = __pyx_t_1; __pyx_t_5 = NULL;
-        __pyx_t_6 = 0;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
-          __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-          if (likely(__pyx_t_5)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-            __Pyx_INCREF(__pyx_t_5);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_4, function);
-            __pyx_t_6 = 1;
-          }
-        }
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_values), __pyx_t_3, ((PyObject *)__pyx_v_other_)};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
-          PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_values), __pyx_t_3, ((PyObject *)__pyx_v_other_)};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        } else
-        #endif
-        {
-          __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 588, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_7);
-          if (__pyx_t_5) {
-            __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
-          }
-          __Pyx_INCREF(((PyObject *)__pyx_v_values));
-          __Pyx_GIVEREF(((PyObject *)__pyx_v_values));
-          PyTuple_SET_ITEM(__pyx_t_7, 0+__pyx_t_6, ((PyObject *)__pyx_v_values));
-          __Pyx_GIVEREF(__pyx_t_3);
-          PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3);
-          __Pyx_INCREF(((PyObject *)__pyx_v_other_));
-          __Pyx_GIVEREF(((PyObject *)__pyx_v_other_));
-          PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, ((PyObject *)__pyx_v_other_));
-          __pyx_t_3 = 0;
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 588, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-        }
-        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 588, __pyx_L1_error)
-        __pyx_r = ((PyArrayObject *)__pyx_t_2);
-        __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_r = ((PyArrayObject *)Py_None); __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_7);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_olens.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_olocs.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_slens.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_slocs.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.reindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_olens.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_olocs.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_slens.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_slocs.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_other);
-  __Pyx_XDECREF((PyObject *)__pyx_v_result);
-  __Pyx_XDECREF((PyObject *)__pyx_v_slocs);
-  __Pyx_XDECREF((PyObject *)__pyx_v_slens);
-  __Pyx_XDECREF((PyObject *)__pyx_v_olocs);
-  __Pyx_XDECREF((PyObject *)__pyx_v_olens);
-  __Pyx_XGIVEREF((PyObject *)__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_23reindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_23reindex(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyArrayObject *__pyx_v_values = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_fill_value;
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other_ = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("reindex (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_values,&__pyx_n_s_fill_value,&__pyx_n_s_other,0};
-    PyObject* values[3] = {0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_values)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fill_value)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("reindex", 1, 3, 3, 1); __PYX_ERR(0, 588, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_other)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("reindex", 1, 3, 3, 2); __PYX_ERR(0, 588, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "reindex") < 0)) __PYX_ERR(0, 588, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-    }
-    __pyx_v_values = ((PyArrayObject *)values[0]);
-    __pyx_v_fill_value = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_fill_value == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(0, 589, __pyx_L3_error)
-    __pyx_v_other_ = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[2]);
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("reindex", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 588, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.reindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) __PYX_ERR(0, 588, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_other_), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "other_", 0))) __PYX_ERR(0, 589, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_22reindex(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), __pyx_v_values, __pyx_v_fill_value, __pyx_v_other_);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_22reindex(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, __pyx_t_5numpy_float64_t __pyx_v_fill_value, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_other_) {
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
-  __Pyx_Buffer __pyx_pybuffer_values;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("reindex", 0);
-  __pyx_pybuffer_values.pybuffer.buf = NULL;
-  __pyx_pybuffer_values.refcount = 0;
-  __pyx_pybuffernd_values.data = NULL;
-  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 588, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = ((PyObject *)__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_reindex(__pyx_v_self, __pyx_v_values, __pyx_v_fill_value, __pyx_v_other_, 1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 588, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.reindex", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 589:                           float64_t fill_value, SparseIndex other_):
-
 590:         cdef:
-
+591:             Py_ssize_t i = 0, j = 0, ocur, ocurlen
-
  __pyx_v_i = 0;
-  __pyx_v_j = 0;
-
 592:             BlockIndex other
-
 593:             ndarray[float64_t, ndim=1] result
-
 594:             ndarray[int32_t, ndim=1] slocs, slens, olocs, olens
-
 595: 
-
+596:         other = other_.to_block_index()
-
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_other_), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 596, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = NULL;
-  if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
-    __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_2);
-    if (likely(__pyx_t_4)) {
-      PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_2);
-      __Pyx_INCREF(__pyx_t_4);
-      __Pyx_INCREF(function);
-      __Pyx_DECREF_SET(__pyx_t_2, function);
-    }
-  }
-  __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 596, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(0, 596, __pyx_L1_error)
-  __pyx_v_other = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
 597: 
-
+598:         olocs = other.blocs
-
  __pyx_t_1 = ((PyObject *)__pyx_v_other->blocs);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_olocs.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_olocs.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_olocs.rcbuffer->pybuffer, (PyObject*)__pyx_v_olocs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_olocs.diminfo[0].strides = __pyx_pybuffernd_olocs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_olocs.diminfo[0].shape = __pyx_pybuffernd_olocs.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 598, __pyx_L1_error)
-  }
-  __pyx_v_olocs = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+599:         olens = other.blengths
-
  __pyx_t_1 = ((PyObject *)__pyx_v_other->blengths);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_olens.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_olens.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_olens.rcbuffer->pybuffer, (PyObject*)__pyx_v_olens, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_10, __pyx_t_9, __pyx_t_8);
-      }
-      __pyx_t_10 = __pyx_t_9 = __pyx_t_8 = 0;
-    }
-    __pyx_pybuffernd_olens.diminfo[0].strides = __pyx_pybuffernd_olens.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_olens.diminfo[0].shape = __pyx_pybuffernd_olens.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 599, __pyx_L1_error)
-  }
-  __pyx_v_olens = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+600:         slocs = self.blocs
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blocs);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_slocs.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_slocs.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_slocs.rcbuffer->pybuffer, (PyObject*)__pyx_v_slocs, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_slocs.diminfo[0].strides = __pyx_pybuffernd_slocs.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_slocs.diminfo[0].shape = __pyx_pybuffernd_slocs.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 600, __pyx_L1_error)
-  }
-  __pyx_v_slocs = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+601:         slens = self.blengths
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->blengths);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_slens.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_slens.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_10, &__pyx_t_9, &__pyx_t_8);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_slens.rcbuffer->pybuffer, (PyObject*)__pyx_v_slens, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_8);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_10, __pyx_t_9, __pyx_t_8);
-      }
-      __pyx_t_10 = __pyx_t_9 = __pyx_t_8 = 0;
-    }
-    __pyx_pybuffernd_slens.diminfo[0].strides = __pyx_pybuffernd_slens.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_slens.diminfo[0].shape = __pyx_pybuffernd_slens.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 601, __pyx_L1_error)
-  }
-  __pyx_v_slens = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
 602: 
-
+603:         result = np.empty(other.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_other->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_np); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_7, __pyx_n_s_float64); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_3) < 0) __PYX_ERR(0, 603, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 603, __pyx_L1_error)
-  __pyx_t_11 = ((PyArrayObject *)__pyx_t_3);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_result.rcbuffer->pybuffer);
-    __pyx_t_6 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_t_11, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_6 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_result.rcbuffer->pybuffer, (PyObject*)__pyx_v_result, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_result.diminfo[0].strides = __pyx_pybuffernd_result.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_result.diminfo[0].shape = __pyx_pybuffernd_result.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_6 < 0)) __PYX_ERR(0, 603, __pyx_L1_error)
-  }
-  __pyx_t_11 = 0;
-  __pyx_v_result = ((PyArrayObject *)__pyx_t_3);
-  __pyx_t_3 = 0;
-
 604: 
-
+605:         for i in range(other.nblocks):
-
  __pyx_t_12 = __pyx_v_other->nblocks;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_i = __pyx_t_14;
-
+606:             ocur = olocs[i]
-
    __pyx_t_15 = __pyx_v_i;
-    __pyx_t_6 = -1;
-    if (__pyx_t_15 < 0) {
-      __pyx_t_15 += __pyx_pybuffernd_olocs.diminfo[0].shape;
-      if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
-    } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_olocs.diminfo[0].shape)) __pyx_t_6 = 0;
-    if (unlikely(__pyx_t_6 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_6);
-      __PYX_ERR(0, 606, __pyx_L1_error)
-    }
-    __pyx_v_ocur = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_olocs.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_olocs.diminfo[0].strides));
-
+607:             ocurlen = olens[i]
-
    __pyx_t_15 = __pyx_v_i;
-    __pyx_t_6 = -1;
-    if (__pyx_t_15 < 0) {
-      __pyx_t_15 += __pyx_pybuffernd_olens.diminfo[0].shape;
-      if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
-    } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_olens.diminfo[0].shape)) __pyx_t_6 = 0;
-    if (unlikely(__pyx_t_6 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_6);
-      __PYX_ERR(0, 607, __pyx_L1_error)
-    }
-    __pyx_v_ocurlen = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_olens.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_olens.diminfo[0].strides));
-
 608: 
-
+609:             while slocs[j] + slens[j] < ocur:
-
    while (1) {
-      __pyx_t_15 = __pyx_v_j;
-      __pyx_t_6 = -1;
-      if (__pyx_t_15 < 0) {
-        __pyx_t_15 += __pyx_pybuffernd_slocs.diminfo[0].shape;
-        if (unlikely(__pyx_t_15 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_15 >= __pyx_pybuffernd_slocs.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 609, __pyx_L1_error)
-      }
-      __pyx_t_16 = __pyx_v_j;
-      __pyx_t_6 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_slens.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_6 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_slens.diminfo[0].shape)) __pyx_t_6 = 0;
-      if (unlikely(__pyx_t_6 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_6);
-        __PYX_ERR(0, 609, __pyx_L1_error)
-      }
-      __pyx_t_17 = ((((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_slocs.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_slocs.diminfo[0].strides)) + (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_slens.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_slens.diminfo[0].strides))) < __pyx_v_ocur) != 0);
-      if (!__pyx_t_17) break;
-
+610:                 j += 1
-
      __pyx_v_j = (__pyx_v_j + 1);
-    }
-  }
-
 611: 
-
+612:     cpdef put(self, ndarray[float64_t, ndim=1] values,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_25put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_put(CYTHON_UNUSED struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, CYTHON_UNUSED PyArrayObject *__pyx_v_values, CYTHON_UNUSED PyArrayObject *__pyx_v_indices, CYTHON_UNUSED PyObject *__pyx_v_to_put, int __pyx_skip_dispatch) {
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
-  __Pyx_Buffer __pyx_pybuffer_indices;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
-  __Pyx_Buffer __pyx_pybuffer_values;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("put", 0);
-  __pyx_pybuffer_values.pybuffer.buf = NULL;
-  __pyx_pybuffer_values.refcount = 0;
-  __pyx_pybuffernd_values.data = NULL;
-  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
-  __pyx_pybuffer_indices.pybuffer.buf = NULL;
-  __pyx_pybuffer_indices.refcount = 0;
-  __pyx_pybuffernd_indices.data = NULL;
-  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 612, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 612, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_put); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 612, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_25put)) {
-        __Pyx_XDECREF(__pyx_r);
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-        __pyx_t_5 = 0;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-          if (likely(__pyx_t_4)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-            __Pyx_INCREF(__pyx_t_4);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_3, function);
-            __pyx_t_5 = 1;
-          }
-        }
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[4] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices), __pyx_v_to_put};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 612, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[4] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices), __pyx_v_to_put};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 3+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 612, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_6 = PyTuple_New(3+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 612, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_6);
-          if (__pyx_t_4) {
-            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
-          }
-          __Pyx_INCREF(((PyObject *)__pyx_v_values));
-          __Pyx_GIVEREF(((PyObject *)__pyx_v_values));
-          PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_values));
-          __Pyx_INCREF(((PyObject *)__pyx_v_indices));
-          __Pyx_GIVEREF(((PyObject *)__pyx_v_indices));
-          PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)__pyx_v_indices));
-          __Pyx_INCREF(__pyx_v_to_put);
-          __Pyx_GIVEREF(__pyx_v_to_put);
-          PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_5, __pyx_v_to_put);
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 612, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        }
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_r = __pyx_t_2;
-        __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_6);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-/* … */
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_25put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_25put(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyArrayObject *__pyx_v_values = 0;
-  PyArrayObject *__pyx_v_indices = 0;
-  PyObject *__pyx_v_to_put = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("put (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_values,&__pyx_n_s_indices,&__pyx_n_s_to_put,0};
-    PyObject* values[3] = {0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_values)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_indices)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("put", 1, 3, 3, 1); __PYX_ERR(0, 612, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_to_put)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("put", 1, 3, 3, 2); __PYX_ERR(0, 612, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "put") < 0)) __PYX_ERR(0, 612, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-    }
-    __pyx_v_values = ((PyArrayObject *)values[0]);
-    __pyx_v_indices = ((PyArrayObject *)values[1]);
-    __pyx_v_to_put = values[2];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("put", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 612, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) __PYX_ERR(0, 612, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indices), __pyx_ptype_5numpy_ndarray, 1, "indices", 0))) __PYX_ERR(0, 613, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_24put(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), __pyx_v_values, __pyx_v_indices, __pyx_v_to_put);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_24put(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, PyArrayObject *__pyx_v_indices, PyObject *__pyx_v_to_put) {
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
-  __Pyx_Buffer __pyx_pybuffer_indices;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
-  __Pyx_Buffer __pyx_pybuffer_values;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("put", 0);
-  __pyx_pybuffer_values.pybuffer.buf = NULL;
-  __pyx_pybuffer_values.refcount = 0;
-  __pyx_pybuffernd_values.data = NULL;
-  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
-  __pyx_pybuffer_indices.pybuffer.buf = NULL;
-  __pyx_pybuffer_indices.refcount = 0;
-  __pyx_pybuffernd_indices.data = NULL;
-  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 612, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 612, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_10BlockIndex_put(__pyx_v_self, __pyx_v_values, __pyx_v_indices, __pyx_v_to_put, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 612, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.put", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 613:               ndarray[int32_t, ndim=1] indices, object to_put):
-
 614:         pass
-
 615: 
-
+616:     cpdef take(self, ndarray[float64_t, ndim=1] values,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_27take(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_10BlockIndex_take(CYTHON_UNUSED struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, CYTHON_UNUSED PyArrayObject *__pyx_v_values, CYTHON_UNUSED PyArrayObject *__pyx_v_indices, int __pyx_skip_dispatch) {
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
-  __Pyx_Buffer __pyx_pybuffer_indices;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
-  __Pyx_Buffer __pyx_pybuffer_values;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("take", 0);
-  __pyx_pybuffer_values.pybuffer.buf = NULL;
-  __pyx_pybuffer_values.refcount = 0;
-  __pyx_pybuffernd_values.data = NULL;
-  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
-  __pyx_pybuffer_indices.pybuffer.buf = NULL;
-  __pyx_pybuffer_indices.refcount = 0;
-  __pyx_pybuffernd_indices.data = NULL;
-  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 616, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 616, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
-  /* Check if called by wrapper */
-  if (unlikely(__pyx_skip_dispatch)) ;
-  /* Check if overridden in Python */
-  else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-    if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
-      PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_take); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error)
-      __Pyx_GOTREF(__pyx_t_1);
-      if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_27take)) {
-        __Pyx_XDECREF(__pyx_r);
-        __Pyx_INCREF(__pyx_t_1);
-        __pyx_t_3 = __pyx_t_1; __pyx_t_4 = NULL;
-        __pyx_t_5 = 0;
-        if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
-          __pyx_t_4 = PyMethod_GET_SELF(__pyx_t_3);
-          if (likely(__pyx_t_4)) {
-            PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-            __Pyx_INCREF(__pyx_t_4);
-            __Pyx_INCREF(function);
-            __Pyx_DECREF_SET(__pyx_t_3, function);
-            __pyx_t_5 = 1;
-          }
-        }
-        #if CYTHON_FAST_PYCALL
-        if (PyFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices)};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        #if CYTHON_FAST_PYCCALL
-        if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
-          PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_values), ((PyObject *)__pyx_v_indices)};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error)
-          __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-          __Pyx_GOTREF(__pyx_t_2);
-        } else
-        #endif
-        {
-          __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 616, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_6);
-          if (__pyx_t_4) {
-            __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
-          }
-          __Pyx_INCREF(((PyObject *)__pyx_v_values));
-          __Pyx_GIVEREF(((PyObject *)__pyx_v_values));
-          PyTuple_SET_ITEM(__pyx_t_6, 0+__pyx_t_5, ((PyObject *)__pyx_v_values));
-          __Pyx_INCREF(((PyObject *)__pyx_v_indices));
-          __Pyx_GIVEREF(((PyObject *)__pyx_v_indices));
-          PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, ((PyObject *)__pyx_v_indices));
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 616, __pyx_L1_error)
-          __Pyx_GOTREF(__pyx_t_2);
-          __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-        }
-        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __pyx_r = __pyx_t_2;
-        __pyx_t_2 = 0;
-        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-        goto __pyx_L0;
-      }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-      __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
-      __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
-      if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
-        __pyx_tp_dict_version = __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
-      }
-      #endif
-      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
-    }
-    #endif
-  }
-/* … */
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_6);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.take", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-/* … */
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_27take(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_10BlockIndex_27take(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyArrayObject *__pyx_v_values = 0;
-  PyArrayObject *__pyx_v_indices = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("take (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_values,&__pyx_n_s_indices,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_values)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_indices)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("take", 1, 2, 2, 1); __PYX_ERR(0, 616, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "take") < 0)) __PYX_ERR(0, 616, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_values = ((PyArrayObject *)values[0]);
-    __pyx_v_indices = ((PyArrayObject *)values[1]);
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("take", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 616, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.take", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_values), __pyx_ptype_5numpy_ndarray, 1, "values", 0))) __PYX_ERR(0, 616, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_indices), __pyx_ptype_5numpy_ndarray, 1, "indices", 0))) __PYX_ERR(0, 617, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_26take(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_self), __pyx_v_values, __pyx_v_indices);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10BlockIndex_26take(struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_self, PyArrayObject *__pyx_v_values, PyArrayObject *__pyx_v_indices) {
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_indices;
-  __Pyx_Buffer __pyx_pybuffer_indices;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_values;
-  __Pyx_Buffer __pyx_pybuffer_values;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("take", 0);
-  __pyx_pybuffer_values.pybuffer.buf = NULL;
-  __pyx_pybuffer_values.refcount = 0;
-  __pyx_pybuffernd_values.data = NULL;
-  __pyx_pybuffernd_values.rcbuffer = &__pyx_pybuffer_values;
-  __pyx_pybuffer_indices.pybuffer.buf = NULL;
-  __pyx_pybuffer_indices.refcount = 0;
-  __pyx_pybuffernd_indices.data = NULL;
-  __pyx_pybuffernd_indices.rcbuffer = &__pyx_pybuffer_indices;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_values.rcbuffer->pybuffer, (PyObject*)__pyx_v_values, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 616, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_values.diminfo[0].strides = __pyx_pybuffernd_values.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_values.diminfo[0].shape = __pyx_pybuffernd_values.rcbuffer->pybuffer.shape[0];
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_indices.rcbuffer->pybuffer, (PyObject*)__pyx_v_indices, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 616, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_indices.diminfo[0].strides = __pyx_pybuffernd_indices.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_indices.diminfo[0].shape = __pyx_pybuffernd_indices.rcbuffer->pybuffer.shape[0];
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_10BlockIndex_take(__pyx_v_self, __pyx_v_values, __pyx_v_indices, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockIndex.take", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_indices.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_values.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 617:                ndarray[int32_t, ndim=1] indices):
-
 618:         pass
-
 619: 
-
 620: 
-
 621: @cython.internal
-
+622: cdef class BlockMerge:
-
struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge {
-  PyObject_HEAD
-  struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockMerge *__pyx_vtab;
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *x;
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *y;
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *result;
-  PyArrayObject *xstart;
-  PyArrayObject *xlen;
-  PyArrayObject *xend;
-  PyArrayObject *ystart;
-  PyArrayObject *ylen;
-  PyArrayObject *yend;
-  __pyx_t_5numpy_int32_t xi;
-  __pyx_t_5numpy_int32_t yi;
-};
-/* … */
-struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockMerge {
-  PyObject *(*_make_merged_blocks)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *);
-  PyObject *(*_set_current_indices)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *, __pyx_t_5numpy_int32_t, __pyx_t_5numpy_int32_t, int);
-};
-static struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockMerge *__pyx_vtabptr_6pandas_5_libs_6sparse_BlockMerge;
-
-
 623:     """
-
 624:     Object-oriented approach makes sharing state between recursive functions a
-
 625:     lot easier and reduces code duplication
-
 626:     """
-
 627:     cdef:
-
 628:         BlockIndex x, y, result
-
 629:         ndarray xstart, xlen, xend, ystart, ylen, yend
-
 630:         int32_t xi, yi  # block indices
-
 631: 
-
+632:     def __init__(self, BlockIndex x, BlockIndex y):
-
/* Python wrapper */
-static int __pyx_pw_6pandas_5_libs_6sparse_10BlockMerge_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static int __pyx_pw_6pandas_5_libs_6sparse_10BlockMerge_1__init__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_x = 0;
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_y = 0;
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__ (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_y,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(0, 632, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 632, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_x = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)values[0]);
-    __pyx_v_y = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)values[1]);
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 632, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockMerge.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return -1;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_x), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex, 1, "x", 0))) __PYX_ERR(0, 632, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_y), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex, 1, "y", 0))) __PYX_ERR(0, 632, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10BlockMerge___init__(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *)__pyx_v_self), __pyx_v_x, __pyx_v_y);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static int __pyx_pf_6pandas_5_libs_6sparse_10BlockMerge___init__(struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *__pyx_v_self, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_y) {
-  int __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__init__", 0);
-/* … */
-  /* function exit code */
-  __pyx_r = 0;
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockMerge.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+633:         self.x = x
-
  __Pyx_INCREF(((PyObject *)__pyx_v_x));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_x));
-  __Pyx_GOTREF(__pyx_v_self->x);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->x));
-  __pyx_v_self->x = __pyx_v_x;
-
+634:         self.y = y
-
  __Pyx_INCREF(((PyObject *)__pyx_v_y));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_y));
-  __Pyx_GOTREF(__pyx_v_self->y);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->y));
-  __pyx_v_self->y = __pyx_v_y;
-
 635: 
-
+636:         if x.length != y.length:
-
  __pyx_t_1 = ((__pyx_v_x->length != __pyx_v_y->length) != 0);
-  if (unlikely(__pyx_t_1)) {
-/* … */
-  }
-
+637:             raise Exception('Indices must reference same underlying length')
-
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__7, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 637, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __PYX_ERR(0, 637, __pyx_L1_error)
-
 638: 
-
+639:         self.xstart = self.x.blocs
-
  __pyx_t_2 = ((PyObject *)__pyx_v_self->x->blocs);
-  __Pyx_INCREF(__pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
-  __Pyx_GOTREF(__pyx_v_self->xstart);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->xstart));
-  __pyx_v_self->xstart = ((PyArrayObject *)__pyx_t_2);
-  __pyx_t_2 = 0;
-
+640:         self.ystart = self.y.blocs
-
  __pyx_t_2 = ((PyObject *)__pyx_v_self->y->blocs);
-  __Pyx_INCREF(__pyx_t_2);
-  __Pyx_GIVEREF(__pyx_t_2);
-  __Pyx_GOTREF(__pyx_v_self->ystart);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->ystart));
-  __pyx_v_self->ystart = ((PyArrayObject *)__pyx_t_2);
-  __pyx_t_2 = 0;
-
 641: 
-
+642:         self.xend = self.x.blocs + self.x.blengths
-
  __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_v_self->x->blocs), ((PyObject *)__pyx_v_self->x->blengths)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 642, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 642, __pyx_L1_error)
-  __Pyx_GIVEREF(__pyx_t_2);
-  __Pyx_GOTREF(__pyx_v_self->xend);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->xend));
-  __pyx_v_self->xend = ((PyArrayObject *)__pyx_t_2);
-  __pyx_t_2 = 0;
-
+643:         self.yend = self.y.blocs + self.y.blengths
-
  __pyx_t_2 = PyNumber_Add(((PyObject *)__pyx_v_self->y->blocs), ((PyObject *)__pyx_v_self->y->blengths)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 643, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 643, __pyx_L1_error)
-  __Pyx_GIVEREF(__pyx_t_2);
-  __Pyx_GOTREF(__pyx_v_self->yend);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->yend));
-  __pyx_v_self->yend = ((PyArrayObject *)__pyx_t_2);
-  __pyx_t_2 = 0;
-
 644: 
-
 645:         # self.xlen = self.x.blengths
-
 646:         # self.ylen = self.y.blengths
-
 647: 
-
+648:         self.xi = 0
-
  __pyx_v_self->xi = 0;
-
+649:         self.yi = 0
-
  __pyx_v_self->yi = 0;
-
 650: 
-
+651:         self.result = self._make_merged_blocks()
-
  __pyx_t_2 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockMerge *)__pyx_v_self->__pyx_vtab)->_make_merged_blocks(__pyx_v_self); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 651, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (!(likely(((__pyx_t_2) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_2, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(0, 651, __pyx_L1_error)
-  __Pyx_GIVEREF(__pyx_t_2);
-  __Pyx_GOTREF(__pyx_v_self->result);
-  __Pyx_DECREF(((PyObject *)__pyx_v_self->result));
-  __pyx_v_self->result = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_2);
-  __pyx_t_2 = 0;
-
 652: 
-
+653:     cdef _make_merged_blocks(self):
-
static PyObject *__pyx_f_6pandas_5_libs_6sparse_10BlockMerge__make_merged_blocks(CYTHON_UNUSED struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *__pyx_v_self) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("_make_merged_blocks", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockMerge._make_merged_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+654:         raise NotImplementedError
-
  __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-  __PYX_ERR(0, 654, __pyx_L1_error)
-
 655: 
-
+656:     cdef _set_current_indices(self, int32_t xi, int32_t yi, bint mode):
-
static PyObject *__pyx_f_6pandas_5_libs_6sparse_10BlockMerge__set_current_indices(struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *__pyx_v_self, __pyx_t_5numpy_int32_t __pyx_v_xi, __pyx_t_5numpy_int32_t __pyx_v_yi, int __pyx_v_mode) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("_set_current_indices", 0);
-/* … */
-  /* function exit code */
-  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+657:         if mode == 0:
-
  __pyx_t_1 = ((__pyx_v_mode == 0) != 0);
-  if (__pyx_t_1) {
-/* … */
-    goto __pyx_L3;
-  }
-
+658:             self.xi = xi
-
    __pyx_v_self->xi = __pyx_v_xi;
-
+659:             self.yi = yi
-
    __pyx_v_self->yi = __pyx_v_yi;
-
 660:         else:
-
+661:             self.xi = yi
-
  /*else*/ {
-    __pyx_v_self->xi = __pyx_v_yi;
-
+662:             self.yi = xi
-
    __pyx_v_self->yi = __pyx_v_xi;
-  }
-  __pyx_L3:;
-
 663: 
-
 664: 
-
 665: @cython.internal
-
+666: cdef class BlockUnion(BlockMerge):
-
struct __pyx_obj_6pandas_5_libs_6sparse_BlockUnion {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge __pyx_base;
-};
-/* … */
-struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion {
-  struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockMerge __pyx_base;
-  __pyx_t_5numpy_int32_t (*_find_next_block_end)(struct __pyx_obj_6pandas_5_libs_6sparse_BlockUnion *, int);
-};
-static struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *__pyx_vtabptr_6pandas_5_libs_6sparse_BlockUnion;
-
-
 667:     """
-
 668:     Object-oriented approach makes sharing state between recursive functions a
-
 669:     lot easier and reduces code duplication
-
 670:     """
-
 671: 
-
+672:     cdef _make_merged_blocks(self):
-
static PyObject *__pyx_f_6pandas_5_libs_6sparse_10BlockUnion__make_merged_blocks(struct __pyx_obj_6pandas_5_libs_6sparse_BlockUnion *__pyx_v_self) {
-  PyArrayObject *__pyx_v_xstart = 0;
-  PyArrayObject *__pyx_v_xend = 0;
-  PyArrayObject *__pyx_v_ystart = 0;
-  PyArrayObject *__pyx_v_yend = 0;
-  PyArrayObject *__pyx_v_out_bloc = 0;
-  PyArrayObject *__pyx_v_out_blen = 0;
-  __pyx_t_5numpy_int32_t __pyx_v_nstart;
-  __pyx_t_5numpy_int32_t __pyx_v_nend;
-  Py_ssize_t __pyx_v_max_len;
-  Py_ssize_t __pyx_v_result_indexer;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out_blen;
-  __Pyx_Buffer __pyx_pybuffer_out_blen;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out_bloc;
-  __Pyx_Buffer __pyx_pybuffer_out_bloc;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_xend;
-  __Pyx_Buffer __pyx_pybuffer_xend;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_xstart;
-  __Pyx_Buffer __pyx_pybuffer_xstart;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_yend;
-  __Pyx_Buffer __pyx_pybuffer_yend;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_ystart;
-  __Pyx_Buffer __pyx_pybuffer_ystart;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("_make_merged_blocks", 0);
-  __pyx_pybuffer_xstart.pybuffer.buf = NULL;
-  __pyx_pybuffer_xstart.refcount = 0;
-  __pyx_pybuffernd_xstart.data = NULL;
-  __pyx_pybuffernd_xstart.rcbuffer = &__pyx_pybuffer_xstart;
-  __pyx_pybuffer_xend.pybuffer.buf = NULL;
-  __pyx_pybuffer_xend.refcount = 0;
-  __pyx_pybuffernd_xend.data = NULL;
-  __pyx_pybuffernd_xend.rcbuffer = &__pyx_pybuffer_xend;
-  __pyx_pybuffer_ystart.pybuffer.buf = NULL;
-  __pyx_pybuffer_ystart.refcount = 0;
-  __pyx_pybuffernd_ystart.data = NULL;
-  __pyx_pybuffernd_ystart.rcbuffer = &__pyx_pybuffer_ystart;
-  __pyx_pybuffer_yend.pybuffer.buf = NULL;
-  __pyx_pybuffer_yend.refcount = 0;
-  __pyx_pybuffernd_yend.data = NULL;
-  __pyx_pybuffernd_yend.rcbuffer = &__pyx_pybuffer_yend;
-  __pyx_pybuffer_out_bloc.pybuffer.buf = NULL;
-  __pyx_pybuffer_out_bloc.refcount = 0;
-  __pyx_pybuffernd_out_bloc.data = NULL;
-  __pyx_pybuffernd_out_bloc.rcbuffer = &__pyx_pybuffer_out_bloc;
-  __pyx_pybuffer_out_blen.pybuffer.buf = NULL;
-  __pyx_pybuffer_out_blen.refcount = 0;
-  __pyx_pybuffernd_out_blen.data = NULL;
-  __pyx_pybuffernd_out_blen.rcbuffer = &__pyx_pybuffer_out_blen;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_9);
-  __Pyx_XDECREF(__pyx_t_10);
-  __Pyx_XDECREF(__pyx_t_11);
-  __Pyx_XDECREF(__pyx_t_12);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockUnion._make_merged_blocks", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_xstart);
-  __Pyx_XDECREF((PyObject *)__pyx_v_xend);
-  __Pyx_XDECREF((PyObject *)__pyx_v_ystart);
-  __Pyx_XDECREF((PyObject *)__pyx_v_yend);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_bloc);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_blen);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 673:         cdef:
-
 674:             ndarray[int32_t, ndim=1] xstart, xend, ystart
-
 675:             ndarray[int32_t, ndim=1] yend, out_bloc, out_blen
-
 676:             int32_t nstart, nend, diff
-
+677:             Py_ssize_t max_len, result_indexer = 0
-
  __pyx_v_result_indexer = 0;
-
 678: 
-
+679:         xstart = self.xstart
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.xstart);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
-    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_2 < 0)) {
-      PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer, (PyObject*)__pyx_v_xstart, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_3, __pyx_t_4, __pyx_t_5);
-      }
-      __pyx_t_3 = __pyx_t_4 = __pyx_t_5 = 0;
-    }
-    __pyx_pybuffernd_xstart.diminfo[0].strides = __pyx_pybuffernd_xstart.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xstart.diminfo[0].shape = __pyx_pybuffernd_xstart.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 679, __pyx_L1_error)
-  }
-  __pyx_v_xstart = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+680:         xend = self.xend
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.xend);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
-    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xend.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_2 < 0)) {
-      PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xend.rcbuffer->pybuffer, (PyObject*)__pyx_v_xend, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
-      }
-      __pyx_t_5 = __pyx_t_4 = __pyx_t_3 = 0;
-    }
-    __pyx_pybuffernd_xend.diminfo[0].strides = __pyx_pybuffernd_xend.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xend.diminfo[0].shape = __pyx_pybuffernd_xend.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 680, __pyx_L1_error)
-  }
-  __pyx_v_xend = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+681:         ystart = self.ystart
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.ystart);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
-    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_2 < 0)) {
-      PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer, (PyObject*)__pyx_v_ystart, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_3, __pyx_t_4, __pyx_t_5);
-      }
-      __pyx_t_3 = __pyx_t_4 = __pyx_t_5 = 0;
-    }
-    __pyx_pybuffernd_ystart.diminfo[0].strides = __pyx_pybuffernd_ystart.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ystart.diminfo[0].shape = __pyx_pybuffernd_ystart.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 681, __pyx_L1_error)
-  }
-  __pyx_v_ystart = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+682:         yend = self.yend
-
  __pyx_t_1 = ((PyObject *)__pyx_v_self->__pyx_base.yend);
-  __Pyx_INCREF(__pyx_t_1);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
-    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yend.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_1), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_2 < 0)) {
-      PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yend.rcbuffer->pybuffer, (PyObject*)__pyx_v_yend, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
-      }
-      __pyx_t_5 = __pyx_t_4 = __pyx_t_3 = 0;
-    }
-    __pyx_pybuffernd_yend.diminfo[0].strides = __pyx_pybuffernd_yend.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_yend.diminfo[0].shape = __pyx_pybuffernd_yend.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 682, __pyx_L1_error)
-  }
-  __pyx_v_yend = ((PyArrayObject *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
 683: 
-
+684:         max_len = min(self.x.length, self.y.length) // 2 + 1
-
  __pyx_t_6 = __pyx_v_self->__pyx_base.y->length;
-  __pyx_t_7 = __pyx_v_self->__pyx_base.x->length;
-  if (((__pyx_t_6 < __pyx_t_7) != 0)) {
-    __pyx_t_8 = __pyx_t_6;
-  } else {
-    __pyx_t_8 = __pyx_t_7;
-  }
-  __pyx_v_max_len = (__Pyx_div_long(__pyx_t_8, 2) + 1);
-
+685:         out_bloc = np.empty(max_len, dtype=np.int32)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 685, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_9);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_max_len); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 685, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_10);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 685, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_11, __pyx_n_s_np); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 685, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __pyx_t_12 = __Pyx_PyObject_GetAttrStr(__pyx_t_11, __pyx_n_s_int32); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 685, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_12) < 0) __PYX_ERR(0, 685, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  __pyx_t_12 = __Pyx_PyObject_Call(__pyx_t_9, __pyx_t_10, __pyx_t_1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 685, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (!(likely(((__pyx_t_12) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_12, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 685, __pyx_L1_error)
-  __pyx_t_13 = ((PyArrayObject *)__pyx_t_12);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
-    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_2 < 0)) {
-      PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_bloc, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_3, __pyx_t_4, __pyx_t_5);
-      }
-      __pyx_t_3 = __pyx_t_4 = __pyx_t_5 = 0;
-    }
-    __pyx_pybuffernd_out_bloc.diminfo[0].strides = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_bloc.diminfo[0].shape = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 685, __pyx_L1_error)
-  }
-  __pyx_t_13 = 0;
-  __pyx_v_out_bloc = ((PyArrayObject *)__pyx_t_12);
-  __pyx_t_12 = 0;
-
+686:         out_blen = np.empty(max_len, dtype=np.int32)
-
  __Pyx_GetModuleGlobalName(__pyx_t_12, __pyx_n_s_np); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 686, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_12, __pyx_n_s_empty); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 686, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  __pyx_t_12 = PyInt_FromSsize_t(__pyx_v_max_len); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 686, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __pyx_t_10 = PyTuple_New(1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 686, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_10);
-  __Pyx_GIVEREF(__pyx_t_12);
-  PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_12);
-  __pyx_t_12 = 0;
-  __pyx_t_12 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 686, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_np); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 686, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_9);
-  __pyx_t_11 = __Pyx_PyObject_GetAttrStr(__pyx_t_9, __pyx_n_s_int32); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 686, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-  if (PyDict_SetItem(__pyx_t_12, __pyx_n_s_dtype, __pyx_t_11) < 0) __PYX_ERR(0, 686, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-  __pyx_t_11 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 686, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 686, __pyx_L1_error)
-  __pyx_t_13 = ((PyArrayObject *)__pyx_t_11);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
-    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_2 < 0)) {
-      PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_blen, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
-      }
-      __pyx_t_5 = __pyx_t_4 = __pyx_t_3 = 0;
-    }
-    __pyx_pybuffernd_out_blen.diminfo[0].strides = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_blen.diminfo[0].shape = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 686, __pyx_L1_error)
-  }
-  __pyx_t_13 = 0;
-  __pyx_v_out_blen = ((PyArrayObject *)__pyx_t_11);
-  __pyx_t_11 = 0;
-
 687: 
-
+688:         while True:
-
  while (1) {
-
 689:             # we are done (or possibly never began)
-
+690:             if self.xi >= self.x.nblocks and self.yi >= self.y.nblocks:
-
    __pyx_t_15 = ((__pyx_v_self->__pyx_base.xi >= __pyx_v_self->__pyx_base.x->nblocks) != 0);
-    if (__pyx_t_15) {
-    } else {
-      __pyx_t_14 = __pyx_t_15;
-      goto __pyx_L6_bool_binop_done;
-    }
-    __pyx_t_15 = ((__pyx_v_self->__pyx_base.yi >= __pyx_v_self->__pyx_base.y->nblocks) != 0);
-    __pyx_t_14 = __pyx_t_15;
-    __pyx_L6_bool_binop_done:;
-    if (__pyx_t_14) {
-/* … */
-    }
-
+691:                 break
-
      goto __pyx_L4_break;
-
+692:             elif self.yi >= self.y.nblocks:
-
    __pyx_t_14 = ((__pyx_v_self->__pyx_base.yi >= __pyx_v_self->__pyx_base.y->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L5;
-    }
-
 693:                 # through with y, just pass through x blocks
-
+694:                 nstart = xstart[self.xi]
-
      __pyx_t_16 = __pyx_v_self->__pyx_base.xi;
-      __pyx_t_2 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_xstart.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_2 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xstart.diminfo[0].shape)) __pyx_t_2 = 0;
-      if (unlikely(__pyx_t_2 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_2);
-        __PYX_ERR(0, 694, __pyx_L1_error)
-      }
-      __pyx_v_nstart = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xstart.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xstart.diminfo[0].strides));
-
+695:                 nend = xend[self.xi]
-
      __pyx_t_16 = __pyx_v_self->__pyx_base.xi;
-      __pyx_t_2 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_xend.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_2 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xend.diminfo[0].shape)) __pyx_t_2 = 0;
-      if (unlikely(__pyx_t_2 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_2);
-        __PYX_ERR(0, 695, __pyx_L1_error)
-      }
-      __pyx_v_nend = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xend.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xend.diminfo[0].strides));
-
+696:                 self.xi += 1
-
      __pyx_v_self->__pyx_base.xi = (__pyx_v_self->__pyx_base.xi + 1);
-
+697:             elif self.xi >= self.x.nblocks:
-
    __pyx_t_14 = ((__pyx_v_self->__pyx_base.xi >= __pyx_v_self->__pyx_base.x->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L5;
-    }
-
 698:                 # through with x, just pass through y blocks
-
+699:                 nstart = ystart[self.yi]
-
      __pyx_t_16 = __pyx_v_self->__pyx_base.yi;
-      __pyx_t_2 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_ystart.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_2 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_ystart.diminfo[0].shape)) __pyx_t_2 = 0;
-      if (unlikely(__pyx_t_2 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_2);
-        __PYX_ERR(0, 699, __pyx_L1_error)
-      }
-      __pyx_v_nstart = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ystart.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_ystart.diminfo[0].strides));
-
+700:                 nend = yend[self.yi]
-
      __pyx_t_16 = __pyx_v_self->__pyx_base.yi;
-      __pyx_t_2 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_yend.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_2 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_yend.diminfo[0].shape)) __pyx_t_2 = 0;
-      if (unlikely(__pyx_t_2 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_2);
-        __PYX_ERR(0, 700, __pyx_L1_error)
-      }
-      __pyx_v_nend = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yend.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_yend.diminfo[0].strides));
-
+701:                 self.yi += 1
-
      __pyx_v_self->__pyx_base.yi = (__pyx_v_self->__pyx_base.yi + 1);
-
 702:             else:
-
 703:                 # find end of new block
-
+704:                 if xstart[self.xi] < ystart[self.yi]:
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_self->__pyx_base.xi;
-      __pyx_t_2 = -1;
-      if (__pyx_t_16 < 0) {
-        __pyx_t_16 += __pyx_pybuffernd_xstart.diminfo[0].shape;
-        if (unlikely(__pyx_t_16 < 0)) __pyx_t_2 = 0;
-      } else if (unlikely(__pyx_t_16 >= __pyx_pybuffernd_xstart.diminfo[0].shape)) __pyx_t_2 = 0;
-      if (unlikely(__pyx_t_2 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_2);
-        __PYX_ERR(0, 704, __pyx_L1_error)
-      }
-      __pyx_t_17 = __pyx_v_self->__pyx_base.yi;
-      __pyx_t_2 = -1;
-      if (__pyx_t_17 < 0) {
-        __pyx_t_17 += __pyx_pybuffernd_ystart.diminfo[0].shape;
-        if (unlikely(__pyx_t_17 < 0)) __pyx_t_2 = 0;
-      } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_ystart.diminfo[0].shape)) __pyx_t_2 = 0;
-      if (unlikely(__pyx_t_2 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_2);
-        __PYX_ERR(0, 704, __pyx_L1_error)
-      }
-      __pyx_t_14 = (((*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xstart.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_xstart.diminfo[0].strides)) < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ystart.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_ystart.diminfo[0].strides))) != 0);
-      if (__pyx_t_14) {
-/* … */
-        goto __pyx_L8;
-      }
-
+705:                     nstart = xstart[self.xi]
-
        __pyx_t_17 = __pyx_v_self->__pyx_base.xi;
-        __pyx_t_2 = -1;
-        if (__pyx_t_17 < 0) {
-          __pyx_t_17 += __pyx_pybuffernd_xstart.diminfo[0].shape;
-          if (unlikely(__pyx_t_17 < 0)) __pyx_t_2 = 0;
-        } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_xstart.diminfo[0].shape)) __pyx_t_2 = 0;
-        if (unlikely(__pyx_t_2 != -1)) {
-          __Pyx_RaiseBufferIndexError(__pyx_t_2);
-          __PYX_ERR(0, 705, __pyx_L1_error)
-        }
-        __pyx_v_nstart = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xstart.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_xstart.diminfo[0].strides));
-
+706:                     nend = self._find_next_block_end(0)
-
        __pyx_t_8 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *)__pyx_v_self->__pyx_base.__pyx_vtab)->_find_next_block_end(__pyx_v_self, 0); if (unlikely(__pyx_t_8 == ((__pyx_t_5numpy_int32_t)-1))) __PYX_ERR(0, 706, __pyx_L1_error)
-        __pyx_v_nend = __pyx_t_8;
-
 707:                 else:
-
+708:                     nstart = ystart[self.yi]
-
      /*else*/ {
-        __pyx_t_17 = __pyx_v_self->__pyx_base.yi;
-        __pyx_t_2 = -1;
-        if (__pyx_t_17 < 0) {
-          __pyx_t_17 += __pyx_pybuffernd_ystart.diminfo[0].shape;
-          if (unlikely(__pyx_t_17 < 0)) __pyx_t_2 = 0;
-        } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_ystart.diminfo[0].shape)) __pyx_t_2 = 0;
-        if (unlikely(__pyx_t_2 != -1)) {
-          __Pyx_RaiseBufferIndexError(__pyx_t_2);
-          __PYX_ERR(0, 708, __pyx_L1_error)
-        }
-        __pyx_v_nstart = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ystart.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_ystart.diminfo[0].strides));
-
+709:                     nend = self._find_next_block_end(1)
-
        __pyx_t_8 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *)__pyx_v_self->__pyx_base.__pyx_vtab)->_find_next_block_end(__pyx_v_self, 1); if (unlikely(__pyx_t_8 == ((__pyx_t_5numpy_int32_t)-1))) __PYX_ERR(0, 709, __pyx_L1_error)
-        __pyx_v_nend = __pyx_t_8;
-      }
-      __pyx_L8:;
-    }
-    __pyx_L5:;
-
 710: 
-
+711:             out_bloc[result_indexer] = nstart
-
    __pyx_t_17 = __pyx_v_result_indexer;
-    __pyx_t_2 = -1;
-    if (__pyx_t_17 < 0) {
-      __pyx_t_17 += __pyx_pybuffernd_out_bloc.diminfo[0].shape;
-      if (unlikely(__pyx_t_17 < 0)) __pyx_t_2 = 0;
-    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_out_bloc.diminfo[0].shape)) __pyx_t_2 = 0;
-    if (unlikely(__pyx_t_2 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_2);
-      __PYX_ERR(0, 711, __pyx_L1_error)
-    }
-    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out_bloc.diminfo[0].strides) = __pyx_v_nstart;
-
+712:             out_blen[result_indexer] = nend - nstart
-
    __pyx_t_17 = __pyx_v_result_indexer;
-    __pyx_t_2 = -1;
-    if (__pyx_t_17 < 0) {
-      __pyx_t_17 += __pyx_pybuffernd_out_blen.diminfo[0].shape;
-      if (unlikely(__pyx_t_17 < 0)) __pyx_t_2 = 0;
-    } else if (unlikely(__pyx_t_17 >= __pyx_pybuffernd_out_blen.diminfo[0].shape)) __pyx_t_2 = 0;
-    if (unlikely(__pyx_t_2 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_2);
-      __PYX_ERR(0, 712, __pyx_L1_error)
-    }
-    *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out_blen.diminfo[0].strides) = (__pyx_v_nend - __pyx_v_nstart);
-
+713:             result_indexer += 1
-
    __pyx_v_result_indexer = (__pyx_v_result_indexer + 1);
-  }
-  __pyx_L4_break:;
-
 714: 
-
+715:         out_bloc = out_bloc[:result_indexer]
-
  __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 715, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __pyx_t_12 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 715, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-  __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_out_bloc), __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 715, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 715, __pyx_L1_error)
-  __pyx_t_13 = ((PyArrayObject *)__pyx_t_11);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer);
-    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_2 < 0)) {
-      PyErr_Fetch(&__pyx_t_3, &__pyx_t_4, &__pyx_t_5);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_bloc.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_bloc, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_3); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_3, __pyx_t_4, __pyx_t_5);
-      }
-      __pyx_t_3 = __pyx_t_4 = __pyx_t_5 = 0;
-    }
-    __pyx_pybuffernd_out_bloc.diminfo[0].strides = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_bloc.diminfo[0].shape = __pyx_pybuffernd_out_bloc.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 715, __pyx_L1_error)
-  }
-  __pyx_t_13 = 0;
-  __Pyx_DECREF_SET(__pyx_v_out_bloc, ((PyArrayObject *)__pyx_t_11));
-  __pyx_t_11 = 0;
-
+716:         out_blen = out_blen[:result_indexer]
-
  __pyx_t_11 = PyInt_FromSsize_t(__pyx_v_result_indexer); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 716, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __pyx_t_12 = PySlice_New(Py_None, __pyx_t_11, Py_None); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 716, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
-  __pyx_t_11 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_out_blen), __pyx_t_12); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 716, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  if (!(likely(((__pyx_t_11) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_11, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 716, __pyx_L1_error)
-  __pyx_t_13 = ((PyArrayObject *)__pyx_t_11);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer);
-    __pyx_t_2 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_t_13, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_2 < 0)) {
-      PyErr_Fetch(&__pyx_t_5, &__pyx_t_4, &__pyx_t_3);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out_blen.rcbuffer->pybuffer, (PyObject*)__pyx_v_out_blen, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_3);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_5, __pyx_t_4, __pyx_t_3);
-      }
-      __pyx_t_5 = __pyx_t_4 = __pyx_t_3 = 0;
-    }
-    __pyx_pybuffernd_out_blen.diminfo[0].strides = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out_blen.diminfo[0].shape = __pyx_pybuffernd_out_blen.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 716, __pyx_L1_error)
-  }
-  __pyx_t_13 = 0;
-  __Pyx_DECREF_SET(__pyx_v_out_blen, ((PyArrayObject *)__pyx_t_11));
-  __pyx_t_11 = 0;
-
 717: 
-
+718:         return BlockIndex(self.x.length, out_bloc, out_blen)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_11 = __Pyx_PyInt_From_npy_int32(__pyx_v_self->__pyx_base.x->length); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 718, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __pyx_t_12 = PyTuple_New(3); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 718, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_12);
-  __Pyx_GIVEREF(__pyx_t_11);
-  PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_bloc));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_bloc));
-  PyTuple_SET_ITEM(__pyx_t_12, 1, ((PyObject *)__pyx_v_out_bloc));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_blen));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_blen));
-  PyTuple_SET_ITEM(__pyx_t_12, 2, ((PyObject *)__pyx_v_out_blen));
-  __pyx_t_11 = 0;
-  __pyx_t_11 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_6pandas_5_libs_6sparse_BlockIndex), __pyx_t_12, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 718, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_11);
-  __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
-  __pyx_r = __pyx_t_11;
-  __pyx_t_11 = 0;
-  goto __pyx_L0;
-
 719: 
-
+720:     cdef int32_t _find_next_block_end(self, bint mode) except -1:
-
static __pyx_t_5numpy_int32_t __pyx_f_6pandas_5_libs_6sparse_10BlockUnion__find_next_block_end(struct __pyx_obj_6pandas_5_libs_6sparse_BlockUnion *__pyx_v_self, int __pyx_v_mode) {
-  CYTHON_UNUSED PyArrayObject *__pyx_v_xstart = 0;
-  PyArrayObject *__pyx_v_xend = 0;
-  PyArrayObject *__pyx_v_ystart = 0;
-  PyArrayObject *__pyx_v_yend = 0;
-  __pyx_t_5numpy_int32_t __pyx_v_xi;
-  __pyx_t_5numpy_int32_t __pyx_v_yi;
-  __pyx_t_5numpy_int32_t __pyx_v_ynblocks;
-  __pyx_t_5numpy_int32_t __pyx_v_nend;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_xend;
-  __Pyx_Buffer __pyx_pybuffer_xend;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_xstart;
-  __Pyx_Buffer __pyx_pybuffer_xstart;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_yend;
-  __Pyx_Buffer __pyx_pybuffer_yend;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_ystart;
-  __Pyx_Buffer __pyx_pybuffer_ystart;
-  __pyx_t_5numpy_int32_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("_find_next_block_end", 0);
-  __pyx_pybuffer_xstart.pybuffer.buf = NULL;
-  __pyx_pybuffer_xstart.refcount = 0;
-  __pyx_pybuffernd_xstart.data = NULL;
-  __pyx_pybuffernd_xstart.rcbuffer = &__pyx_pybuffer_xstart;
-  __pyx_pybuffer_xend.pybuffer.buf = NULL;
-  __pyx_pybuffer_xend.refcount = 0;
-  __pyx_pybuffernd_xend.data = NULL;
-  __pyx_pybuffernd_xend.rcbuffer = &__pyx_pybuffer_xend;
-  __pyx_pybuffer_ystart.pybuffer.buf = NULL;
-  __pyx_pybuffer_ystart.refcount = 0;
-  __pyx_pybuffernd_ystart.data = NULL;
-  __pyx_pybuffernd_ystart.rcbuffer = &__pyx_pybuffer_ystart;
-  __pyx_pybuffer_yend.pybuffer.buf = NULL;
-  __pyx_pybuffer_yend.refcount = 0;
-  __pyx_pybuffernd_yend.data = NULL;
-  __pyx_pybuffernd_yend.rcbuffer = &__pyx_pybuffer_yend;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.BlockUnion._find_next_block_end", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = -1;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_xstart);
-  __Pyx_XDECREF((PyObject *)__pyx_v_xend);
-  __Pyx_XDECREF((PyObject *)__pyx_v_ystart);
-  __Pyx_XDECREF((PyObject *)__pyx_v_yend);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 721:         """
-
 722:         Wow, this got complicated in a hurry
-
 723: 
-
 724:         mode 0: block started in index x
-
 725:         mode 1: block started in index y
-
 726:         """
-
 727:         cdef:
-
 728:             ndarray[int32_t, ndim=1] xstart, xend, ystart, yend
-
 729:             int32_t xi, yi, xnblocks, ynblocks, nend
-
 730: 
-
+731:         if mode != 0 and mode != 1:
-
  switch (__pyx_v_mode) {
-    case 0:
-    case 1:
-    __pyx_t_1 = 0;
-    break;
-    default:
-    __pyx_t_1 = 1;
-    break;
-  }
-  if (unlikely(__pyx_t_1)) {
-/* … */
-  }
-
+732:             raise Exception('Mode must be 0 or 1')
-
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)(&((PyTypeObject*)PyExc_Exception)[0])), __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 732, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __PYX_ERR(0, 732, __pyx_L1_error)
-/* … */
-  __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_u_Mode_must_be_0_or_1); if (unlikely(!__pyx_tuple__11)) __PYX_ERR(0, 732, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__11);
-  __Pyx_GIVEREF(__pyx_tuple__11);
-
 733: 
-
 734:         # so symmetric code will work
-
+735:         if mode == 0:
-
  __pyx_t_1 = ((__pyx_v_mode == 0) != 0);
-  if (__pyx_t_1) {
-/* … */
-    goto __pyx_L4;
-  }
-
+736:             xstart = self.xstart
-
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.xstart);
-    __Pyx_INCREF(__pyx_t_2);
-    {
-      __Pyx_BufFmt_StackElem __pyx_stack[1];
-      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
-      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-      if (unlikely(__pyx_t_3 < 0)) {
-        PyErr_Fetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
-        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer, (PyObject*)__pyx_v_xstart, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-          Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_6);
-          __Pyx_RaiseBufferFallbackError();
-        } else {
-          PyErr_Restore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
-        }
-        __pyx_t_4 = __pyx_t_5 = __pyx_t_6 = 0;
-      }
-      __pyx_pybuffernd_xstart.diminfo[0].strides = __pyx_pybuffernd_xstart.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xstart.diminfo[0].shape = __pyx_pybuffernd_xstart.rcbuffer->pybuffer.shape[0];
-      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 736, __pyx_L1_error)
-    }
-    __pyx_v_xstart = ((PyArrayObject *)__pyx_t_2);
-    __pyx_t_2 = 0;
-
+737:             xend = self.xend
-
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.xend);
-    __Pyx_INCREF(__pyx_t_2);
-    {
-      __Pyx_BufFmt_StackElem __pyx_stack[1];
-      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
-      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xend.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-      if (unlikely(__pyx_t_3 < 0)) {
-        PyErr_Fetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
-        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xend.rcbuffer->pybuffer, (PyObject*)__pyx_v_xend, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-          Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4);
-          __Pyx_RaiseBufferFallbackError();
-        } else {
-          PyErr_Restore(__pyx_t_6, __pyx_t_5, __pyx_t_4);
-        }
-        __pyx_t_6 = __pyx_t_5 = __pyx_t_4 = 0;
-      }
-      __pyx_pybuffernd_xend.diminfo[0].strides = __pyx_pybuffernd_xend.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xend.diminfo[0].shape = __pyx_pybuffernd_xend.rcbuffer->pybuffer.shape[0];
-      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 737, __pyx_L1_error)
-    }
-    __pyx_v_xend = ((PyArrayObject *)__pyx_t_2);
-    __pyx_t_2 = 0;
-
+738:             xi = self.xi
-
    __pyx_t_7 = __pyx_v_self->__pyx_base.xi;
-    __pyx_v_xi = __pyx_t_7;
-
 739: 
-
+740:             ystart = self.ystart
-
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.ystart);
-    __Pyx_INCREF(__pyx_t_2);
-    {
-      __Pyx_BufFmt_StackElem __pyx_stack[1];
-      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
-      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-      if (unlikely(__pyx_t_3 < 0)) {
-        PyErr_Fetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
-        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer, (PyObject*)__pyx_v_ystart, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-          Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_6);
-          __Pyx_RaiseBufferFallbackError();
-        } else {
-          PyErr_Restore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
-        }
-        __pyx_t_4 = __pyx_t_5 = __pyx_t_6 = 0;
-      }
-      __pyx_pybuffernd_ystart.diminfo[0].strides = __pyx_pybuffernd_ystart.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ystart.diminfo[0].shape = __pyx_pybuffernd_ystart.rcbuffer->pybuffer.shape[0];
-      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 740, __pyx_L1_error)
-    }
-    __pyx_v_ystart = ((PyArrayObject *)__pyx_t_2);
-    __pyx_t_2 = 0;
-
+741:             yend = self.yend
-
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.yend);
-    __Pyx_INCREF(__pyx_t_2);
-    {
-      __Pyx_BufFmt_StackElem __pyx_stack[1];
-      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
-      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yend.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-      if (unlikely(__pyx_t_3 < 0)) {
-        PyErr_Fetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
-        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yend.rcbuffer->pybuffer, (PyObject*)__pyx_v_yend, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-          Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4);
-          __Pyx_RaiseBufferFallbackError();
-        } else {
-          PyErr_Restore(__pyx_t_6, __pyx_t_5, __pyx_t_4);
-        }
-        __pyx_t_6 = __pyx_t_5 = __pyx_t_4 = 0;
-      }
-      __pyx_pybuffernd_yend.diminfo[0].strides = __pyx_pybuffernd_yend.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_yend.diminfo[0].shape = __pyx_pybuffernd_yend.rcbuffer->pybuffer.shape[0];
-      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 741, __pyx_L1_error)
-    }
-    __pyx_v_yend = ((PyArrayObject *)__pyx_t_2);
-    __pyx_t_2 = 0;
-
+742:             yi = self.yi
-
    __pyx_t_7 = __pyx_v_self->__pyx_base.yi;
-    __pyx_v_yi = __pyx_t_7;
-
+743:             ynblocks = self.y.nblocks
-
    __pyx_t_7 = __pyx_v_self->__pyx_base.y->nblocks;
-    __pyx_v_ynblocks = __pyx_t_7;
-
 744:         else:
-
+745:             xstart = self.ystart
-
  /*else*/ {
-    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.ystart);
-    __Pyx_INCREF(__pyx_t_2);
-    {
-      __Pyx_BufFmt_StackElem __pyx_stack[1];
-      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer);
-      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-      if (unlikely(__pyx_t_3 < 0)) {
-        PyErr_Fetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
-        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xstart.rcbuffer->pybuffer, (PyObject*)__pyx_v_xstart, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-          Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_6);
-          __Pyx_RaiseBufferFallbackError();
-        } else {
-          PyErr_Restore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
-        }
-        __pyx_t_4 = __pyx_t_5 = __pyx_t_6 = 0;
-      }
-      __pyx_pybuffernd_xstart.diminfo[0].strides = __pyx_pybuffernd_xstart.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xstart.diminfo[0].shape = __pyx_pybuffernd_xstart.rcbuffer->pybuffer.shape[0];
-      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 745, __pyx_L1_error)
-    }
-    __pyx_v_xstart = ((PyArrayObject *)__pyx_t_2);
-    __pyx_t_2 = 0;
-
+746:             xend = self.yend
-
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.yend);
-    __Pyx_INCREF(__pyx_t_2);
-    {
-      __Pyx_BufFmt_StackElem __pyx_stack[1];
-      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_xend.rcbuffer->pybuffer);
-      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xend.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-      if (unlikely(__pyx_t_3 < 0)) {
-        PyErr_Fetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
-        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_xend.rcbuffer->pybuffer, (PyObject*)__pyx_v_xend, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-          Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4);
-          __Pyx_RaiseBufferFallbackError();
-        } else {
-          PyErr_Restore(__pyx_t_6, __pyx_t_5, __pyx_t_4);
-        }
-        __pyx_t_6 = __pyx_t_5 = __pyx_t_4 = 0;
-      }
-      __pyx_pybuffernd_xend.diminfo[0].strides = __pyx_pybuffernd_xend.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_xend.diminfo[0].shape = __pyx_pybuffernd_xend.rcbuffer->pybuffer.shape[0];
-      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 746, __pyx_L1_error)
-    }
-    __pyx_v_xend = ((PyArrayObject *)__pyx_t_2);
-    __pyx_t_2 = 0;
-
+747:             xi = self.yi
-
    __pyx_t_7 = __pyx_v_self->__pyx_base.yi;
-    __pyx_v_xi = __pyx_t_7;
-
 748: 
-
+749:             ystart = self.xstart
-
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.xstart);
-    __Pyx_INCREF(__pyx_t_2);
-    {
-      __Pyx_BufFmt_StackElem __pyx_stack[1];
-      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer);
-      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-      if (unlikely(__pyx_t_3 < 0)) {
-        PyErr_Fetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
-        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_ystart.rcbuffer->pybuffer, (PyObject*)__pyx_v_ystart, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-          Py_XDECREF(__pyx_t_4); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_6);
-          __Pyx_RaiseBufferFallbackError();
-        } else {
-          PyErr_Restore(__pyx_t_4, __pyx_t_5, __pyx_t_6);
-        }
-        __pyx_t_4 = __pyx_t_5 = __pyx_t_6 = 0;
-      }
-      __pyx_pybuffernd_ystart.diminfo[0].strides = __pyx_pybuffernd_ystart.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_ystart.diminfo[0].shape = __pyx_pybuffernd_ystart.rcbuffer->pybuffer.shape[0];
-      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 749, __pyx_L1_error)
-    }
-    __pyx_v_ystart = ((PyArrayObject *)__pyx_t_2);
-    __pyx_t_2 = 0;
-
+750:             yend = self.xend
-
    __pyx_t_2 = ((PyObject *)__pyx_v_self->__pyx_base.xend);
-    __Pyx_INCREF(__pyx_t_2);
-    {
-      __Pyx_BufFmt_StackElem __pyx_stack[1];
-      __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_yend.rcbuffer->pybuffer);
-      __pyx_t_3 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yend.rcbuffer->pybuffer, (PyObject*)((PyArrayObject *)__pyx_t_2), &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack);
-      if (unlikely(__pyx_t_3 < 0)) {
-        PyErr_Fetch(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4);
-        if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_yend.rcbuffer->pybuffer, (PyObject*)__pyx_v_yend, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int32_t, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) {
-          Py_XDECREF(__pyx_t_6); Py_XDECREF(__pyx_t_5); Py_XDECREF(__pyx_t_4);
-          __Pyx_RaiseBufferFallbackError();
-        } else {
-          PyErr_Restore(__pyx_t_6, __pyx_t_5, __pyx_t_4);
-        }
-        __pyx_t_6 = __pyx_t_5 = __pyx_t_4 = 0;
-      }
-      __pyx_pybuffernd_yend.diminfo[0].strides = __pyx_pybuffernd_yend.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_yend.diminfo[0].shape = __pyx_pybuffernd_yend.rcbuffer->pybuffer.shape[0];
-      if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 750, __pyx_L1_error)
-    }
-    __pyx_v_yend = ((PyArrayObject *)__pyx_t_2);
-    __pyx_t_2 = 0;
-
+751:             yi = self.xi
-
    __pyx_t_7 = __pyx_v_self->__pyx_base.xi;
-    __pyx_v_yi = __pyx_t_7;
-
+752:             ynblocks = self.x.nblocks
-
    __pyx_t_7 = __pyx_v_self->__pyx_base.x->nblocks;
-    __pyx_v_ynblocks = __pyx_t_7;
-  }
-  __pyx_L4:;
-
 753: 
-
+754:         nend = xend[xi]
-
  __pyx_t_8 = __pyx_v_xi;
-  __pyx_t_3 = -1;
-  if (__pyx_t_8 < 0) {
-    __pyx_t_8 += __pyx_pybuffernd_xend.diminfo[0].shape;
-    if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0;
-  } else if (unlikely(__pyx_t_8 >= __pyx_pybuffernd_xend.diminfo[0].shape)) __pyx_t_3 = 0;
-  if (unlikely(__pyx_t_3 != -1)) {
-    __Pyx_RaiseBufferIndexError(__pyx_t_3);
-    __PYX_ERR(0, 754, __pyx_L1_error)
-  }
-  __pyx_v_nend = (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_xend.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_xend.diminfo[0].strides));
-
 755: 
-
 756:         # done with y?
-
+757:         if yi == ynblocks:
-
  __pyx_t_1 = ((__pyx_v_yi == __pyx_v_ynblocks) != 0);
-  if (__pyx_t_1) {
-/* … */
-  }
-
+758:             self._set_current_indices(xi + 1, yi, mode)
-
    __pyx_t_2 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._set_current_indices(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *)__pyx_v_self), (__pyx_v_xi + 1), __pyx_v_yi, __pyx_v_mode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 758, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
+759:             return nend
-
    __pyx_r = __pyx_v_nend;
-    goto __pyx_L0;
-
+760:         elif nend < ystart[yi]:
-
  __pyx_t_8 = __pyx_v_yi;
-  __pyx_t_3 = -1;
-  if (__pyx_t_8 < 0) {
-    __pyx_t_8 += __pyx_pybuffernd_ystart.diminfo[0].shape;
-    if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0;
-  } else if (unlikely(__pyx_t_8 >= __pyx_pybuffernd_ystart.diminfo[0].shape)) __pyx_t_3 = 0;
-  if (unlikely(__pyx_t_3 != -1)) {
-    __Pyx_RaiseBufferIndexError(__pyx_t_3);
-    __PYX_ERR(0, 760, __pyx_L1_error)
-  }
-  __pyx_t_1 = ((__pyx_v_nend < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ystart.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_ystart.diminfo[0].strides))) != 0);
-  if (__pyx_t_1) {
-/* … */
-  }
-
 761:             # block ends before y block
-
+762:             self._set_current_indices(xi + 1, yi, mode)
-
    __pyx_t_2 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._set_current_indices(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *)__pyx_v_self), (__pyx_v_xi + 1), __pyx_v_yi, __pyx_v_mode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 762, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
+763:             return nend
-
    __pyx_r = __pyx_v_nend;
-    goto __pyx_L0;
-
 764:         else:
-
+765:             while yi < ynblocks and nend > yend[yi]:
-
  /*else*/ {
-    while (1) {
-      __pyx_t_9 = ((__pyx_v_yi < __pyx_v_ynblocks) != 0);
-      if (__pyx_t_9) {
-      } else {
-        __pyx_t_1 = __pyx_t_9;
-        goto __pyx_L8_bool_binop_done;
-      }
-      __pyx_t_8 = __pyx_v_yi;
-      __pyx_t_3 = -1;
-      if (__pyx_t_8 < 0) {
-        __pyx_t_8 += __pyx_pybuffernd_yend.diminfo[0].shape;
-        if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0;
-      } else if (unlikely(__pyx_t_8 >= __pyx_pybuffernd_yend.diminfo[0].shape)) __pyx_t_3 = 0;
-      if (unlikely(__pyx_t_3 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_3);
-        __PYX_ERR(0, 765, __pyx_L1_error)
-      }
-      __pyx_t_9 = ((__pyx_v_nend > (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_yend.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_yend.diminfo[0].strides))) != 0);
-      __pyx_t_1 = __pyx_t_9;
-      __pyx_L8_bool_binop_done:;
-      if (!__pyx_t_1) break;
-
+766:                 yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-
 767: 
-
+768:             self._set_current_indices(xi + 1, yi, mode)
-
    __pyx_t_2 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *)__pyx_v_self->__pyx_base.__pyx_vtab)->__pyx_base._set_current_indices(((struct __pyx_obj_6pandas_5_libs_6sparse_BlockMerge *)__pyx_v_self), (__pyx_v_xi + 1), __pyx_v_yi, __pyx_v_mode); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 768, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_2);
-    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-
 769: 
-
+770:             if yi == ynblocks:
-
    __pyx_t_1 = ((__pyx_v_yi == __pyx_v_ynblocks) != 0);
-    if (__pyx_t_1) {
-/* … */
-    }
-
+771:                 return nend
-
      __pyx_r = __pyx_v_nend;
-      goto __pyx_L0;
-
 772: 
-
+773:             if nend < ystart[yi]:
-
    __pyx_t_8 = __pyx_v_yi;
-    __pyx_t_3 = -1;
-    if (__pyx_t_8 < 0) {
-      __pyx_t_8 += __pyx_pybuffernd_ystart.diminfo[0].shape;
-      if (unlikely(__pyx_t_8 < 0)) __pyx_t_3 = 0;
-    } else if (unlikely(__pyx_t_8 >= __pyx_pybuffernd_ystart.diminfo[0].shape)) __pyx_t_3 = 0;
-    if (unlikely(__pyx_t_3 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_3);
-      __PYX_ERR(0, 773, __pyx_L1_error)
-    }
-    __pyx_t_1 = ((__pyx_v_nend < (*__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int32_t *, __pyx_pybuffernd_ystart.rcbuffer->pybuffer.buf, __pyx_t_8, __pyx_pybuffernd_ystart.diminfo[0].strides))) != 0);
-    if (__pyx_t_1) {
-/* … */
-    }
-
 774:                 # we're done, return the block end
-
+775:                 return nend
-
      __pyx_r = __pyx_v_nend;
-      goto __pyx_L0;
-
 776:             else:
-
 777:                 # merge blocks, continue searching
-
 778:                 # this also catches the case where blocks
-
+779:                 return self._find_next_block_end(1 - mode)
-
    /*else*/ {
-      __pyx_t_7 = ((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockUnion *)__pyx_v_self->__pyx_base.__pyx_vtab)->_find_next_block_end(__pyx_v_self, (1 - __pyx_v_mode)); if (unlikely(__pyx_t_7 == ((__pyx_t_5numpy_int32_t)-1))) __PYX_ERR(0, 779, __pyx_L1_error)
-      __pyx_r = __pyx_t_7;
-      goto __pyx_L0;
-    }
-  }
-
 780: 
-
 781: 
-
 782: # -----------------------------------------------------------------------------
-
 783: # Sparse arithmetic
-
 784: 
-
 785: include "sparse_op_helper.pxi"
-
 786: 
-
 787: 
-
 788: # -----------------------------------------------------------------------------
-
 789: # SparseArray mask create operations
-
 790: 
-
+791: def make_mask_object_ndarray(ndarray[object, ndim=1] arr, object fill_value):
-
/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_139make_mask_object_ndarray(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_6pandas_5_libs_6sparse_139make_mask_object_ndarray = {"make_mask_object_ndarray", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pandas_5_libs_6sparse_139make_mask_object_ndarray, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_139make_mask_object_ndarray(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  PyArrayObject *__pyx_v_arr = 0;
-  PyObject *__pyx_v_fill_value = 0;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("make_mask_object_ndarray (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arr,&__pyx_n_s_fill_value,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_arr)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_fill_value)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("make_mask_object_ndarray", 1, 2, 2, 1); __PYX_ERR(0, 791, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "make_mask_object_ndarray") < 0)) __PYX_ERR(0, 791, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_arr = ((PyArrayObject *)values[0]);
-    __pyx_v_fill_value = values[1];
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("make_mask_object_ndarray", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 791, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.make_mask_object_ndarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arr), __pyx_ptype_5numpy_ndarray, 1, "arr", 0))) __PYX_ERR(0, 791, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_138make_mask_object_ndarray(__pyx_self, __pyx_v_arr, __pyx_v_fill_value);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_138make_mask_object_ndarray(CYTHON_UNUSED PyObject *__pyx_self, PyArrayObject *__pyx_v_arr, PyObject *__pyx_v_fill_value) {
-  PyObject *__pyx_v_value = 0;
-  Py_ssize_t __pyx_v_i;
-  Py_ssize_t __pyx_v_new_length;
-  PyArrayObject *__pyx_v_mask = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_arr;
-  __Pyx_Buffer __pyx_pybuffer_arr;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_mask;
-  __Pyx_Buffer __pyx_pybuffer_mask;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("make_mask_object_ndarray", 0);
-  __pyx_pybuffer_mask.pybuffer.buf = NULL;
-  __pyx_pybuffer_mask.refcount = 0;
-  __pyx_pybuffernd_mask.data = NULL;
-  __pyx_pybuffernd_mask.rcbuffer = &__pyx_pybuffer_mask;
-  __pyx_pybuffer_arr.pybuffer.buf = NULL;
-  __pyx_pybuffer_arr.refcount = 0;
-  __pyx_pybuffernd_arr.data = NULL;
-  __pyx_pybuffernd_arr.rcbuffer = &__pyx_pybuffer_arr;
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_arr.rcbuffer->pybuffer, (PyObject*)__pyx_v_arr, &__Pyx_TypeInfo_object, PyBUF_FORMAT| PyBUF_STRIDES, 1, 0, __pyx_stack) == -1)) __PYX_ERR(0, 791, __pyx_L1_error)
-  }
-  __pyx_pybuffernd_arr.diminfo[0].strides = __pyx_pybuffernd_arr.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_arr.diminfo[0].shape = __pyx_pybuffernd_arr.rcbuffer->pybuffer.shape[0];
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.make_mask_object_ndarray", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_arr.rcbuffer->pybuffer);
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF(__pyx_v_value);
-  __Pyx_XDECREF((PyObject *)__pyx_v_mask);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-/* … */
-  __pyx_tuple__31 = PyTuple_Pack(6, __pyx_n_s_arr, __pyx_n_s_fill_value, __pyx_n_s_value, __pyx_n_s_i, __pyx_n_s_new_length, __pyx_n_s_mask); if (unlikely(!__pyx_tuple__31)) __PYX_ERR(0, 791, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_tuple__31);
-  __Pyx_GIVEREF(__pyx_tuple__31);
-/* … */
-  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_6pandas_5_libs_6sparse_139make_mask_object_ndarray, NULL, __pyx_n_s_pandas__libs_sparse); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 791, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_make_mask_object_ndarray, __pyx_t_1) < 0) __PYX_ERR(0, 791, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_codeobj__32 = (PyObject*)__Pyx_PyCode_New(2, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__31, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_pandas__libs_sparse_pyx, __pyx_n_s_make_mask_object_ndarray, 791, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__32)) __PYX_ERR(0, 791, __pyx_L1_error)
-
 792:     cdef:
-
 793:         object value
-
 794:         Py_ssize_t i
-
+795:         Py_ssize_t new_length = len(arr)
-
  __pyx_t_1 = PyObject_Length(((PyObject *)__pyx_v_arr)); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 795, __pyx_L1_error)
-  __pyx_v_new_length = __pyx_t_1;
-
 796:         ndarray[int8_t, ndim=1] mask
-
 797: 
-
+798:     mask = np.ones(new_length, dtype=np.int8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_np); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 798, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ones); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 798, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = PyInt_FromSsize_t(__pyx_v_new_length); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 798, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 798, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_GIVEREF(__pyx_t_2);
-  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
-  __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 798, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_np); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 798, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_int8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 798, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, __pyx_t_6) < 0) __PYX_ERR(0, 798, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 798, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (!(likely(((__pyx_t_6) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_6, __pyx_ptype_5numpy_ndarray))))) __PYX_ERR(0, 798, __pyx_L1_error)
-  __pyx_t_7 = ((PyArrayObject *)__pyx_t_6);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_mask.rcbuffer->pybuffer);
-    __pyx_t_8 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_t_7, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_8 < 0)) {
-      PyErr_Fetch(&__pyx_t_9, &__pyx_t_10, &__pyx_t_11);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_mask.rcbuffer->pybuffer, (PyObject*)__pyx_v_mask, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10); Py_XDECREF(__pyx_t_11);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_9, __pyx_t_10, __pyx_t_11);
-      }
-      __pyx_t_9 = __pyx_t_10 = __pyx_t_11 = 0;
-    }
-    __pyx_pybuffernd_mask.diminfo[0].strides = __pyx_pybuffernd_mask.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_mask.diminfo[0].shape = __pyx_pybuffernd_mask.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 798, __pyx_L1_error)
-  }
-  __pyx_t_7 = 0;
-  __pyx_v_mask = ((PyArrayObject *)__pyx_t_6);
-  __pyx_t_6 = 0;
-
 799: 
-
+800:     for i in range(new_length):
-
  __pyx_t_1 = __pyx_v_new_length;
-  __pyx_t_12 = __pyx_t_1;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_i = __pyx_t_13;
-
+801:         value = arr[i]
-
    __pyx_t_14 = __pyx_v_i;
-    __pyx_t_8 = -1;
-    if (__pyx_t_14 < 0) {
-      __pyx_t_14 += __pyx_pybuffernd_arr.diminfo[0].shape;
-      if (unlikely(__pyx_t_14 < 0)) __pyx_t_8 = 0;
-    } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_arr.diminfo[0].shape)) __pyx_t_8 = 0;
-    if (unlikely(__pyx_t_8 != -1)) {
-      __Pyx_RaiseBufferIndexError(__pyx_t_8);
-      __PYX_ERR(0, 801, __pyx_L1_error)
-    }
-    __pyx_t_6 = (PyObject *) *__Pyx_BufPtrStrided1d(PyObject **, __pyx_pybuffernd_arr.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_arr.diminfo[0].strides);
-    __Pyx_INCREF((PyObject*)__pyx_t_6);
-    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_6);
-    __pyx_t_6 = 0;
-
+802:         if value == fill_value and type(value) == type(fill_value):
-
    __pyx_t_6 = PyObject_RichCompare(__pyx_v_value, __pyx_v_fill_value, Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 802, __pyx_L1_error)
-    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 802, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (__pyx_t_16) {
-    } else {
-      __pyx_t_15 = __pyx_t_16;
-      goto __pyx_L6_bool_binop_done;
-    }
-    __pyx_t_6 = PyObject_RichCompare(((PyObject *)Py_TYPE(__pyx_v_value)), ((PyObject *)Py_TYPE(__pyx_v_fill_value)), Py_EQ); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 802, __pyx_L1_error)
-    __pyx_t_16 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_16 < 0)) __PYX_ERR(0, 802, __pyx_L1_error)
-    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-    __pyx_t_15 = __pyx_t_16;
-    __pyx_L6_bool_binop_done:;
-    if (__pyx_t_15) {
-/* … */
-    }
-  }
-
+803:             mask[i] = 0
-
      __pyx_t_14 = __pyx_v_i;
-      __pyx_t_8 = -1;
-      if (__pyx_t_14 < 0) {
-        __pyx_t_14 += __pyx_pybuffernd_mask.diminfo[0].shape;
-        if (unlikely(__pyx_t_14 < 0)) __pyx_t_8 = 0;
-      } else if (unlikely(__pyx_t_14 >= __pyx_pybuffernd_mask.diminfo[0].shape)) __pyx_t_8 = 0;
-      if (unlikely(__pyx_t_8 != -1)) {
-        __Pyx_RaiseBufferIndexError(__pyx_t_8);
-        __PYX_ERR(0, 803, __pyx_L1_error)
-      }
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int8_t *, __pyx_pybuffernd_mask.rcbuffer->pybuffer.buf, __pyx_t_14, __pyx_pybuffernd_mask.diminfo[0].strides) = 0;
-
 804: 
-
+805:     return mask.view(dtype=bool)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_mask), __pyx_n_s_view); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 805, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_6);
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 805, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_dtype, ((PyObject*)&PyBool_Type)) < 0) __PYX_ERR(0, 805, __pyx_L1_error)
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 805, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_r = __pyx_t_4;
-  __pyx_t_4 = 0;
-  goto __pyx_L0;
-
diff --git a/pandas/_libs/sparse_op_helper.html b/pandas/_libs/sparse_op_helper.html deleted file mode 100644 index 9c7cb436b4f5a..0000000000000 --- a/pandas/_libs/sparse_op_helper.html +++ /dev/null @@ -1,33878 +0,0 @@ - - - - - - Cython: sparse_op_helper.pxi - - - -

Generated by Cython 0.29.24

-

- Yellow lines hint at Python interaction.
- Click on a line that starts with a "+" to see the C code that Cython generated for it. -

-

Raw output: sparse_op_helper.pxi

-
 0001: """
-
 0002: Template for each `dtype` helper function for sparse ops
-
 0003: 
-
 0004: WARNING: DO NOT edit .pxi FILE directly, .pxi is generated from .pxi.in
-
 0005: """
-
 0006: 
-
 0007: # ----------------------------------------------------------------------
-
 0008: # Sparse op
-
 0009: # ----------------------------------------------------------------------
-
 0010: 
-
 0011: ctypedef fused sparse_t:
-
 0012:     float64_t
-
 0013:     int64_t
-
 0014: 
-
 0015: 
-
+0016: cdef inline float64_t __div__(sparse_t a, sparse_t b):
-
static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_t_5numpy_float64_t __pyx_v_a, __pyx_t_5numpy_float64_t __pyx_v_b) {
-  __pyx_t_5numpy_float64_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__pyx_fuse_0__div__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_WriteUnraisable("pandas._libs.sparse.__div__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_t_5numpy_int64_t __pyx_v_a, __pyx_t_5numpy_int64_t __pyx_v_b) {
-  __pyx_t_5numpy_float64_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__pyx_fuse_1__div__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_WriteUnraisable("pandas._libs.sparse.__div__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+0017:     if b == 0:
-
  __pyx_t_1 = ((__pyx_v_b == 0.0) != 0);
-  if (__pyx_t_1) {
-/* … */
-  }
-/* … */
-  __pyx_t_1 = ((__pyx_v_b == 0) != 0);
-  if (__pyx_t_1) {
-/* … */
-  }
-
+0018:         if a > 0:
-
    __pyx_t_1 = ((__pyx_v_a > 0.0) != 0);
-    if (__pyx_t_1) {
-/* … */
-    }
-/* … */
-    __pyx_t_1 = ((__pyx_v_a > 0) != 0);
-    if (__pyx_t_1) {
-/* … */
-    }
-
+0019:             return INF
-
      __pyx_r = __pyx_v_6pandas_5_libs_6sparse_INF;
-      goto __pyx_L0;
-/* … */
-      __pyx_r = __pyx_v_6pandas_5_libs_6sparse_INF;
-      goto __pyx_L0;
-
+0020:         elif a < 0:
-
    __pyx_t_1 = ((__pyx_v_a < 0.0) != 0);
-    if (__pyx_t_1) {
-/* … */
-    }
-/* … */
-    __pyx_t_1 = ((__pyx_v_a < 0) != 0);
-    if (__pyx_t_1) {
-/* … */
-    }
-
+0021:             return -INF
-
      __pyx_r = (-__pyx_v_6pandas_5_libs_6sparse_INF);
-      goto __pyx_L0;
-/* … */
-      __pyx_r = (-__pyx_v_6pandas_5_libs_6sparse_INF);
-      goto __pyx_L0;
-
 0022:         else:
-
+0023:             return NaN
-
    /*else*/ {
-      __pyx_r = __pyx_v_6pandas_5_libs_6sparse_NaN;
-      goto __pyx_L0;
-    }
-/* … */
-    /*else*/ {
-      __pyx_r = __pyx_v_6pandas_5_libs_6sparse_NaN;
-      goto __pyx_L0;
-    }
-
 0024:     else:
-
+0025:         return float(a) / b
-
  /*else*/ {
-    if (unlikely(__pyx_v_b == 0)) {
-      PyErr_SetString(PyExc_ZeroDivisionError, "float division");
-      __PYX_ERR(2, 25, __pyx_L1_error)
-    }
-    __pyx_r = (((__pyx_t_5numpy_float64_t)((double)__pyx_v_a)) / __pyx_v_b);
-    goto __pyx_L0;
-  }
-/* … */
-  /*else*/ {
-    if (unlikely(__pyx_v_b == 0)) {
-      PyErr_SetString(PyExc_ZeroDivisionError, "float division");
-      __PYX_ERR(2, 25, __pyx_L1_error)
-    }
-    __pyx_r = (((double)__pyx_v_a) / ((double)__pyx_v_b));
-    goto __pyx_L0;
-  }
-
 0026: 
-
 0027: 
-
+0028: cdef inline float64_t __truediv__(sparse_t a, sparse_t b):
-
static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_t_5numpy_float64_t __pyx_v_a, __pyx_t_5numpy_float64_t __pyx_v_b) {
-  __pyx_t_5numpy_float64_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__pyx_fuse_0__truediv__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_t_5numpy_int64_t __pyx_v_a, __pyx_t_5numpy_int64_t __pyx_v_b) {
-  __pyx_t_5numpy_float64_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__pyx_fuse_1__truediv__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+0029:     return __div__(a, b)
-
  __pyx_r = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_a, __pyx_v_b);
-  goto __pyx_L0;
-/* … */
-  __pyx_r = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_a, __pyx_v_b);
-  goto __pyx_L0;
-
 0030: 
-
 0031: 
-
+0032: cdef inline sparse_t __mod__(sparse_t a, sparse_t b):
-
static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_t_5numpy_float64_t __pyx_v_a, __pyx_t_5numpy_float64_t __pyx_v_b) {
-  __pyx_t_5numpy_float64_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__pyx_fuse_0__mod__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_WriteUnraisable("pandas._libs.sparse.__mod__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static CYTHON_INLINE __pyx_t_5numpy_int64_t __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_t_5numpy_int64_t __pyx_v_a, __pyx_t_5numpy_int64_t __pyx_v_b) {
-  __pyx_t_5numpy_int64_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__pyx_fuse_1__mod__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_WriteUnraisable("pandas._libs.sparse.__mod__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+0033:     if b == 0:
-
  __pyx_t_1 = ((__pyx_v_b == 0.0) != 0);
-  if (__pyx_t_1) {
-/* … */
-  }
-/* … */
-  __pyx_t_1 = ((__pyx_v_b == 0) != 0);
-  if (__pyx_t_1) {
-/* … */
-  }
-
 0034:         if sparse_t is float64_t:
-
+0035:             return NaN
-
    __pyx_r = __pyx_v_6pandas_5_libs_6sparse_NaN;
-    goto __pyx_L0;
-
 0036:         else:
-
+0037:             return 0
-
    __pyx_r = 0;
-    goto __pyx_L0;
-
 0038:     else:
-
+0039:         return a % b
-
  /*else*/ {
-    if (unlikely(__pyx_v_b == 0)) {
-      PyErr_SetString(PyExc_ZeroDivisionError, "float divmod()");
-      __PYX_ERR(2, 39, __pyx_L1_error)
-    }
-    __pyx_r = __Pyx_mod___pyx_t_5numpy_float64_t(__pyx_v_a, __pyx_v_b);
-    goto __pyx_L0;
-  }
-/* … */
-  /*else*/ {
-    if (unlikely(__pyx_v_b == 0)) {
-      PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-      __PYX_ERR(2, 39, __pyx_L1_error)
-    }
-    __pyx_r = __Pyx_mod___pyx_t_5numpy_int64_t(__pyx_v_a, __pyx_v_b);
-    goto __pyx_L0;
-  }
-
 0040: 
-
 0041: 
-
+0042: cdef inline sparse_t __floordiv__(sparse_t a, sparse_t b):
-
static CYTHON_INLINE __pyx_t_5numpy_float64_t __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_t_5numpy_float64_t __pyx_v_a, __pyx_t_5numpy_float64_t __pyx_v_b) {
-  __pyx_t_5numpy_float64_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__pyx_fuse_0__floordiv__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_WriteUnraisable("pandas._libs.sparse.__floordiv__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static CYTHON_INLINE __pyx_t_5numpy_int64_t __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_t_5numpy_int64_t __pyx_v_a, __pyx_t_5numpy_int64_t __pyx_v_b) {
-  __pyx_t_5numpy_int64_t __pyx_r;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("__pyx_fuse_1__floordiv__", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_WriteUnraisable("pandas._libs.sparse.__floordiv__", __pyx_clineno, __pyx_lineno, __pyx_filename, 1, 0);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
+0043:     if b == 0:
-
  __pyx_t_1 = ((__pyx_v_b == 0.0) != 0);
-  if (__pyx_t_1) {
-/* … */
-  }
-/* … */
-  __pyx_t_1 = ((__pyx_v_b == 0) != 0);
-  if (__pyx_t_1) {
-/* … */
-  }
-
 0044:         if sparse_t is float64_t:
-
+0045:             return NaN
-
    __pyx_r = __pyx_v_6pandas_5_libs_6sparse_NaN;
-    goto __pyx_L0;
-
 0046:         else:
-
+0047:             return 0
-
    __pyx_r = 0;
-    goto __pyx_L0;
-
 0048:     else:
-
+0049:         return a // b
-
  /*else*/ {
-    if (unlikely(__pyx_v_b == 0)) {
-      PyErr_SetString(PyExc_ZeroDivisionError, "float division");
-      __PYX_ERR(2, 49, __pyx_L1_error)
-    }
-    __pyx_r = floor(__pyx_v_a / __pyx_v_b);
-    goto __pyx_L0;
-  }
-/* … */
-  /*else*/ {
-    if (unlikely(__pyx_v_b == 0)) {
-      PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-      __PYX_ERR(2, 49, __pyx_L1_error)
-    }
-    else if (sizeof(__pyx_t_5numpy_int64_t) == sizeof(long) && (!(((__pyx_t_5numpy_int64_t)-1) > 0)) && unlikely(__pyx_v_b == (__pyx_t_5numpy_int64_t)-1)  && unlikely(UNARY_NEG_WOULD_OVERFLOW(__pyx_v_a))) {
-      PyErr_SetString(PyExc_OverflowError, "value too large to perform division");
-      __PYX_ERR(2, 49, __pyx_L1_error)
-    }
-    __pyx_r = __Pyx_div___pyx_t_5numpy_int64_t(__pyx_v_a, __pyx_v_b);
-    goto __pyx_L0;
-  }
-
 0050: 
-
 0051: 
-
 0052: # ----------------------------------------------------------------------
-
 0053: # sparse array op
-
 0054: # ----------------------------------------------------------------------
-
 0055: 
-
 0056: 
-
 0057: @cython.wraparound(False)
-
 0058: @cython.boundscheck(False)
-
+0059: cdef inline tuple block_op_add_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_add_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_add_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0060:                                                 BlockIndex xindex,
-
 0061:                                                 float64_t xfill,
-
 0062:                                                 float64_t[:] y_,
-
 0063:                                                 BlockIndex yindex,
-
 0064:                                                 float64_t yfill):
-
 0065:     '''
-
 0066:     Binary operator on BlockIndex objects with fill values
-
 0067:     '''
-
 0068: 
-
 0069:     cdef:
-
 0070:         BlockIndex out_index
-
+0071:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+0072:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 0073:         int32_t xloc, yloc
-
+0074:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 0075: 
-
 0076:         float64_t[:] x, y
-
 0077:         ndarray[float64_t, ndim=1] out
-
 0078: 
-
 0079:     # to suppress Cython warning
-
+0080:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0081:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0082: 
-
+0083:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 83, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+0084:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 84, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 84, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 84, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 84, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 84, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 84, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 84, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 84, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 84, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 84, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 84, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0085: 
-
 0086:     # Wow, what a hack job. Need to do something about this
-
 0087: 
-
 0088:     # walk the two SparseVectors, adding matched locations...
-
+0089:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+0090:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0091:             # use y fill value
-
+0092:             out[out_i] = x[xi] + yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
-
+0093:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0094: 
-
 0095:             # advance x location
-
+0096:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0097:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0098:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0099:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+0100:             continue
-
      goto __pyx_L3_continue;
-
 0101: 
-
+0102:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0103:             # use x fill value
-
+0104:             out[out_i] = xfill + y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+0105:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0106: 
-
 0107:             # advance y location
-
+0108:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0109:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0110:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0111:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+0112:             continue
-
      goto __pyx_L3_continue;
-
 0113: 
-
+0114:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+0115:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 0116: 
-
 0117:         # each index in the out_index had to come from either x, y, or both
-
+0118:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+0119:             out[out_i] = x[xi] + y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) + (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0120:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0121:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0122: 
-
 0123:             # advance both locations
-
+0124:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0125:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0126:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0127:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0128: 
-
+0129:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0130:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0131:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0132:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0133: 
-
+0134:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 0135:             # use y fill value
-
+0136:             out[out_i] = x[xi] + yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
-
+0137:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0138: 
-
 0139:             # advance x location
-
+0140:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0141:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0142:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0143:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0144:         else:
-
 0145:             # use x fill value
-
+0146:             out[out_i] = xfill + y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0147:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0148: 
-
 0149:             # advance y location
-
+0150:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0151:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+0152:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0153:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0154: 
-
+0155:     return out, out_index, xfill + yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_xfill + __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 155, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 155, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0156: 
-
 0157: 
-
 0158: @cython.wraparound(False)
-
 0159: @cython.boundscheck(False)
-
+0160: cdef inline tuple int_op_add_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_add_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_add_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0161:                                               IntIndex xindex,
-
 0162:                                               float64_t xfill,
-
 0163:                                               float64_t[:] y_,
-
 0164:                                               IntIndex yindex,
-
 0165:                                               float64_t yfill):
-
 0166:     cdef:
-
 0167:         IntIndex out_index
-
+0168:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 0169:         int32_t xloc, yloc
-
 0170:         int32_t[:] xindices, yindices, out_indices
-
 0171:         float64_t[:] x, y
-
 0172:         ndarray[float64_t, ndim=1] out
-
 0173: 
-
 0174:     # suppress Cython compiler warnings due to inlining
-
+0175:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0176:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0177: 
-
 0178:     # need to do this first to know size of result array
-
+0179:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 179, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+0180:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 180, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 180, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 180, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 180, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 180, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 180, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 180, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 180, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 180, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 180, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 180, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0181: 
-
+0182:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 182, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0183:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 183, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0184:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 184, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 0185: 
-
 0186:     # walk the two SparseVectors, adding matched locations...
-
+0187:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+0188:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0189:             # use x fill value
-
+0190:             out[out_i] = xfill + y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0191:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0192:             continue
-
      goto __pyx_L3_continue;
-
 0193: 
-
+0194:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0195:             # use y fill value
-
+0196:             out[out_i] = x[xi] + yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
-
+0197:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0198:             continue
-
      goto __pyx_L3_continue;
-
 0199: 
-
+0200:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+0201:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 0202: 
-
 0203:         # each index in the out_index had to come from either x, y, or both
-
+0204:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+0205:             out[out_i] = x[xi] + y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) + (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+0206:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0207:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0208:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 0209:             # use y fill value
-
+0210:             out[out_i] = x[xi] + yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
-
+0211:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0212:         else:
-
 0213:             # use x fill value
-
+0214:             out[out_i] = xfill + y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+0215:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 0216: 
-
+0217:     return out, out_index, xfill + yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_xfill + __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 217, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 217, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0218: 
-
 0219: 
-
+0220: cpdef sparse_add_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_3sparse_add_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_add_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_add_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_3sparse_add_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_3sparse_add_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_add_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_add_float64", 1, 6, 6, 1); __PYX_ERR(2, 220, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_add_float64", 1, 6, 6, 2); __PYX_ERR(2, 220, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_add_float64", 1, 6, 6, 3); __PYX_ERR(2, 220, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_add_float64", 1, 6, 6, 4); __PYX_ERR(2, 220, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_add_float64", 1, 6, 6, 5); __PYX_ERR(2, 220, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_add_float64") < 0)) __PYX_ERR(2, 220, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 220, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 221, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 222, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 223, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_add_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 220, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 221, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 223, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_2sparse_add_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_2sparse_add_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_add_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 220, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 220, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_add_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 220, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0221:                                   SparseIndex xindex, float64_t xfill,
-
 0222:                                   float64_t[:] y,
-
 0223:                                   SparseIndex yindex, float64_t yfill):
-
 0224: 
-
+0225:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+0226:         return block_op_add_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 226, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 226, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 226, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_add_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 226, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+0227:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 227, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 227, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 227, __pyx_L1_error)
-
+0228:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+0229:         return int_op_add_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 229, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 229, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 229, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_add_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 229, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+0230:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 230, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 230, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 230, __pyx_L1_error)
-
 0231:     else:
-
+0232:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 232, __pyx_L1_error)
-  }
-
 0233: 
-
 0234: 
-
+0235: cpdef sparse_fill_add_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_5sparse_fill_add_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_add_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_add_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_5sparse_fill_add_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_5sparse_fill_add_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_add_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_add_float64", 1, 2, 2, 1); __PYX_ERR(2, 235, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_add_float64") < 0)) __PYX_ERR(2, 235, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 235, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 236, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_add_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 235, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_4sparse_fill_add_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_4sparse_fill_add_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_add_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_add_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 235, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_add_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0236:                                        float64_t yfill):
-
+0237:     return xfill + yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_xfill + __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 237, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0238: 
-
 0239: 
-
 0240: @cython.wraparound(False)
-
 0241: @cython.boundscheck(False)
-
+0242: cdef inline tuple block_op_add_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_add_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_add_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0243:                                                 BlockIndex xindex,
-
 0244:                                                 int64_t xfill,
-
 0245:                                                 int64_t[:] y_,
-
 0246:                                                 BlockIndex yindex,
-
 0247:                                                 int64_t yfill):
-
 0248:     '''
-
 0249:     Binary operator on BlockIndex objects with fill values
-
 0250:     '''
-
 0251: 
-
 0252:     cdef:
-
 0253:         BlockIndex out_index
-
+0254:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+0255:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 0256:         int32_t xloc, yloc
-
+0257:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 0258: 
-
 0259:         int64_t[:] x, y
-
 0260:         ndarray[int64_t, ndim=1] out
-
 0261: 
-
 0262:     # to suppress Cython warning
-
+0263:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0264:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0265: 
-
+0266:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 266, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+0267:     out = np.empty(out_index.npoints, dtype=np.int64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 267, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 267, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 267, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 267, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 267, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 267, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 267, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 267, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 267, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 267, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 267, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0268: 
-
 0269:     # Wow, what a hack job. Need to do something about this
-
 0270: 
-
 0271:     # walk the two SparseVectors, adding matched locations...
-
+0272:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+0273:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0274:             # use y fill value
-
+0275:             out[out_i] = x[xi] + yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
-
+0276:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0277: 
-
 0278:             # advance x location
-
+0279:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0280:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0281:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0282:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+0283:             continue
-
      goto __pyx_L3_continue;
-
 0284: 
-
+0285:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0286:             # use x fill value
-
+0287:             out[out_i] = xfill + y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+0288:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0289: 
-
 0290:             # advance y location
-
+0291:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0292:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0293:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0294:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+0295:             continue
-
      goto __pyx_L3_continue;
-
 0296: 
-
+0297:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+0298:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 0299: 
-
 0300:         # each index in the out_index had to come from either x, y, or both
-
+0301:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+0302:             out[out_i] = x[xi] + y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) + (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0303:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0304:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0305: 
-
 0306:             # advance both locations
-
+0307:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0308:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0309:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0310:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0311: 
-
+0312:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0313:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0314:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0315:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0316: 
-
+0317:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 0318:             # use y fill value
-
+0319:             out[out_i] = x[xi] + yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
-
+0320:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0321: 
-
 0322:             # advance x location
-
+0323:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0324:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0325:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0326:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0327:         else:
-
 0328:             # use x fill value
-
+0329:             out[out_i] = xfill + y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0330:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0331: 
-
 0332:             # advance y location
-
+0333:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0334:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+0335:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0336:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0337: 
-
+0338:     return out, out_index, xfill + yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill + __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 338, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 338, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0339: 
-
 0340: 
-
 0341: @cython.wraparound(False)
-
 0342: @cython.boundscheck(False)
-
+0343: cdef inline tuple int_op_add_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_add_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_add_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0344:                                               IntIndex xindex,
-
 0345:                                               int64_t xfill,
-
 0346:                                               int64_t[:] y_,
-
 0347:                                               IntIndex yindex,
-
 0348:                                               int64_t yfill):
-
 0349:     cdef:
-
 0350:         IntIndex out_index
-
+0351:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 0352:         int32_t xloc, yloc
-
 0353:         int32_t[:] xindices, yindices, out_indices
-
 0354:         int64_t[:] x, y
-
 0355:         ndarray[int64_t, ndim=1] out
-
 0356: 
-
 0357:     # suppress Cython compiler warnings due to inlining
-
+0358:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0359:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0360: 
-
 0361:     # need to do this first to know size of result array
-
+0362:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 362, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+0363:     out = np.empty(out_index.npoints, dtype=np.int64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 363, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 363, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 363, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 363, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 363, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 363, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 363, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 363, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 363, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 363, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 363, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0364: 
-
+0365:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 365, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0366:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 366, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0367:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 367, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 0368: 
-
 0369:     # walk the two SparseVectors, adding matched locations...
-
+0370:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+0371:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0372:             # use x fill value
-
+0373:             out[out_i] = xfill + y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0374:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0375:             continue
-
      goto __pyx_L3_continue;
-
 0376: 
-
+0377:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0378:             # use y fill value
-
+0379:             out[out_i] = x[xi] + yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
-
+0380:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0381:             continue
-
      goto __pyx_L3_continue;
-
 0382: 
-
+0383:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+0384:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 0385: 
-
 0386:         # each index in the out_index had to come from either x, y, or both
-
+0387:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+0388:             out[out_i] = x[xi] + y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) + (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+0389:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0390:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0391:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 0392:             # use y fill value
-
+0393:             out[out_i] = x[xi] + yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) + __pyx_v_yfill);
-
+0394:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0395:         else:
-
 0396:             # use x fill value
-
+0397:             out[out_i] = xfill + y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill + (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+0398:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 0399: 
-
+0400:     return out, out_index, xfill + yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill + __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 400, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 400, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0401: 
-
 0402: 
-
+0403: cpdef sparse_add_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_7sparse_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_add_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_add_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_7sparse_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_7sparse_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_add_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_add_int64", 1, 6, 6, 1); __PYX_ERR(2, 403, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_add_int64", 1, 6, 6, 2); __PYX_ERR(2, 403, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_add_int64", 1, 6, 6, 3); __PYX_ERR(2, 403, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_add_int64", 1, 6, 6, 4); __PYX_ERR(2, 403, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_add_int64", 1, 6, 6, 5); __PYX_ERR(2, 403, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_add_int64") < 0)) __PYX_ERR(2, 403, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 403, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 404, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 405, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 406, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_add_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 403, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 404, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 406, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_6sparse_add_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_6sparse_add_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_add_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 403, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 403, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_add_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 403, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0404:                                   SparseIndex xindex, int64_t xfill,
-
 0405:                                   int64_t[:] y,
-
 0406:                                   SparseIndex yindex, int64_t yfill):
-
 0407: 
-
+0408:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+0409:         return block_op_add_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 409, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 409, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 409, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_add_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 409, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+0410:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 410, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 410, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 410, __pyx_L1_error)
-
+0411:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+0412:         return int_op_add_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 412, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 412, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 412, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_add_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 412, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+0413:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 413, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 413, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 413, __pyx_L1_error)
-
 0414:     else:
-
+0415:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 415, __pyx_L1_error)
-  }
-
 0416: 
-
 0417: 
-
+0418: cpdef sparse_fill_add_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_9sparse_fill_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_add_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_add_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_9sparse_fill_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_9sparse_fill_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_add_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_add_int64", 1, 2, 2, 1); __PYX_ERR(2, 418, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_add_int64") < 0)) __PYX_ERR(2, 418, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 418, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 419, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_add_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 418, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8sparse_fill_add_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_8sparse_fill_add_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_add_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_add_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 418, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_add_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0419:                                        int64_t yfill):
-
+0420:     return xfill + yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill + __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 420, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0421: 
-
 0422: 
-
 0423: @cython.wraparound(False)
-
 0424: @cython.boundscheck(False)
-
+0425: cdef inline tuple block_op_sub_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_sub_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_sub_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0426:                                                 BlockIndex xindex,
-
 0427:                                                 float64_t xfill,
-
 0428:                                                 float64_t[:] y_,
-
 0429:                                                 BlockIndex yindex,
-
 0430:                                                 float64_t yfill):
-
 0431:     '''
-
 0432:     Binary operator on BlockIndex objects with fill values
-
 0433:     '''
-
 0434: 
-
 0435:     cdef:
-
 0436:         BlockIndex out_index
-
+0437:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+0438:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 0439:         int32_t xloc, yloc
-
+0440:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 0441: 
-
 0442:         float64_t[:] x, y
-
 0443:         ndarray[float64_t, ndim=1] out
-
 0444: 
-
 0445:     # to suppress Cython warning
-
+0446:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0447:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0448: 
-
+0449:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 449, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+0450:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 450, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 450, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 450, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 450, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 450, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 450, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 450, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 450, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 450, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 450, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 450, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0451: 
-
 0452:     # Wow, what a hack job. Need to do something about this
-
 0453: 
-
 0454:     # walk the two SparseVectors, adding matched locations...
-
+0455:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+0456:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0457:             # use y fill value
-
+0458:             out[out_i] = x[xi] - yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
-
+0459:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0460: 
-
 0461:             # advance x location
-
+0462:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0463:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0464:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0465:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+0466:             continue
-
      goto __pyx_L3_continue;
-
 0467: 
-
+0468:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0469:             # use x fill value
-
+0470:             out[out_i] = xfill - y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+0471:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0472: 
-
 0473:             # advance y location
-
+0474:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0475:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0476:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0477:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+0478:             continue
-
      goto __pyx_L3_continue;
-
 0479: 
-
+0480:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+0481:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 0482: 
-
 0483:         # each index in the out_index had to come from either x, y, or both
-
+0484:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+0485:             out[out_i] = x[xi] - y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) - (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0486:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0487:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0488: 
-
 0489:             # advance both locations
-
+0490:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0491:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0492:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0493:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0494: 
-
+0495:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0496:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0497:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0498:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0499: 
-
+0500:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 0501:             # use y fill value
-
+0502:             out[out_i] = x[xi] - yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
-
+0503:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0504: 
-
 0505:             # advance x location
-
+0506:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0507:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0508:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0509:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0510:         else:
-
 0511:             # use x fill value
-
+0512:             out[out_i] = xfill - y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0513:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0514: 
-
 0515:             # advance y location
-
+0516:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0517:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+0518:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0519:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0520: 
-
+0521:     return out, out_index, xfill - yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_xfill - __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 521, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 521, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0522: 
-
 0523: 
-
 0524: @cython.wraparound(False)
-
 0525: @cython.boundscheck(False)
-
+0526: cdef inline tuple int_op_sub_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_sub_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_sub_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0527:                                               IntIndex xindex,
-
 0528:                                               float64_t xfill,
-
 0529:                                               float64_t[:] y_,
-
 0530:                                               IntIndex yindex,
-
 0531:                                               float64_t yfill):
-
 0532:     cdef:
-
 0533:         IntIndex out_index
-
+0534:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 0535:         int32_t xloc, yloc
-
 0536:         int32_t[:] xindices, yindices, out_indices
-
 0537:         float64_t[:] x, y
-
 0538:         ndarray[float64_t, ndim=1] out
-
 0539: 
-
 0540:     # suppress Cython compiler warnings due to inlining
-
+0541:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0542:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0543: 
-
 0544:     # need to do this first to know size of result array
-
+0545:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 545, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+0546:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 546, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 546, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 546, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 546, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 546, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 546, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 546, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 546, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 546, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 546, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 546, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0547: 
-
+0548:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 548, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0549:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 549, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0550:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 550, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 0551: 
-
 0552:     # walk the two SparseVectors, adding matched locations...
-
+0553:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+0554:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0555:             # use x fill value
-
+0556:             out[out_i] = xfill - y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0557:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0558:             continue
-
      goto __pyx_L3_continue;
-
 0559: 
-
+0560:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0561:             # use y fill value
-
+0562:             out[out_i] = x[xi] - yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
-
+0563:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0564:             continue
-
      goto __pyx_L3_continue;
-
 0565: 
-
+0566:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+0567:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 0568: 
-
 0569:         # each index in the out_index had to come from either x, y, or both
-
+0570:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+0571:             out[out_i] = x[xi] - y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) - (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+0572:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0573:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0574:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 0575:             # use y fill value
-
+0576:             out[out_i] = x[xi] - yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
-
+0577:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0578:         else:
-
 0579:             # use x fill value
-
+0580:             out[out_i] = xfill - y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+0581:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 0582: 
-
+0583:     return out, out_index, xfill - yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_xfill - __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 583, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 583, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0584: 
-
 0585: 
-
+0586: cpdef sparse_sub_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_11sparse_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_sub_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_sub_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_11sparse_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_11sparse_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_sub_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_sub_float64", 1, 6, 6, 1); __PYX_ERR(2, 586, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_sub_float64", 1, 6, 6, 2); __PYX_ERR(2, 586, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_sub_float64", 1, 6, 6, 3); __PYX_ERR(2, 586, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_sub_float64", 1, 6, 6, 4); __PYX_ERR(2, 586, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_sub_float64", 1, 6, 6, 5); __PYX_ERR(2, 586, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_sub_float64") < 0)) __PYX_ERR(2, 586, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 586, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 587, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 588, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 589, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_sub_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 586, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 587, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 589, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10sparse_sub_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_10sparse_sub_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_sub_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 586, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 586, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_sub_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 586, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0587:                                   SparseIndex xindex, float64_t xfill,
-
 0588:                                   float64_t[:] y,
-
 0589:                                   SparseIndex yindex, float64_t yfill):
-
 0590: 
-
+0591:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+0592:         return block_op_sub_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 592, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 592, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 592, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_sub_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 592, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+0593:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 593, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 593, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 593, __pyx_L1_error)
-
+0594:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+0595:         return int_op_sub_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 595, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 595, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 595, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_sub_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 595, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+0596:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 596, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 596, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 596, __pyx_L1_error)
-
 0597:     else:
-
+0598:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 598, __pyx_L1_error)
-  }
-
 0599: 
-
 0600: 
-
+0601: cpdef sparse_fill_sub_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_13sparse_fill_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_sub_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_sub_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_13sparse_fill_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_13sparse_fill_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_sub_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_sub_float64", 1, 2, 2, 1); __PYX_ERR(2, 601, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_sub_float64") < 0)) __PYX_ERR(2, 601, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 601, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 602, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_sub_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 601, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_12sparse_fill_sub_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_12sparse_fill_sub_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_sub_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_sub_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 601, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_sub_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0602:                                        float64_t yfill):
-
+0603:     return xfill - yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_xfill - __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 603, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0604: 
-
 0605: 
-
 0606: @cython.wraparound(False)
-
 0607: @cython.boundscheck(False)
-
+0608: cdef inline tuple block_op_sub_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_sub_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_sub_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0609:                                                 BlockIndex xindex,
-
 0610:                                                 int64_t xfill,
-
 0611:                                                 int64_t[:] y_,
-
 0612:                                                 BlockIndex yindex,
-
 0613:                                                 int64_t yfill):
-
 0614:     '''
-
 0615:     Binary operator on BlockIndex objects with fill values
-
 0616:     '''
-
 0617: 
-
 0618:     cdef:
-
 0619:         BlockIndex out_index
-
+0620:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+0621:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 0622:         int32_t xloc, yloc
-
+0623:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 0624: 
-
 0625:         int64_t[:] x, y
-
 0626:         ndarray[int64_t, ndim=1] out
-
 0627: 
-
 0628:     # to suppress Cython warning
-
+0629:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0630:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0631: 
-
+0632:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 632, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+0633:     out = np.empty(out_index.npoints, dtype=np.int64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 633, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 633, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 633, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 633, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 633, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 633, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 633, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 633, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 633, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 633, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 633, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0634: 
-
 0635:     # Wow, what a hack job. Need to do something about this
-
 0636: 
-
 0637:     # walk the two SparseVectors, adding matched locations...
-
+0638:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+0639:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0640:             # use y fill value
-
+0641:             out[out_i] = x[xi] - yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
-
+0642:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0643: 
-
 0644:             # advance x location
-
+0645:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0646:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0647:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0648:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+0649:             continue
-
      goto __pyx_L3_continue;
-
 0650: 
-
+0651:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0652:             # use x fill value
-
+0653:             out[out_i] = xfill - y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+0654:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0655: 
-
 0656:             # advance y location
-
+0657:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0658:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0659:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0660:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+0661:             continue
-
      goto __pyx_L3_continue;
-
 0662: 
-
+0663:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+0664:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 0665: 
-
 0666:         # each index in the out_index had to come from either x, y, or both
-
+0667:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+0668:             out[out_i] = x[xi] - y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) - (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0669:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0670:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0671: 
-
 0672:             # advance both locations
-
+0673:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0674:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0675:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0676:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0677: 
-
+0678:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0679:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0680:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0681:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0682: 
-
+0683:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 0684:             # use y fill value
-
+0685:             out[out_i] = x[xi] - yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
-
+0686:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0687: 
-
 0688:             # advance x location
-
+0689:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0690:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0691:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0692:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0693:         else:
-
 0694:             # use x fill value
-
+0695:             out[out_i] = xfill - y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0696:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0697: 
-
 0698:             # advance y location
-
+0699:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0700:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+0701:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0702:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0703: 
-
+0704:     return out, out_index, xfill - yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill - __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 704, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 704, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0705: 
-
 0706: 
-
 0707: @cython.wraparound(False)
-
 0708: @cython.boundscheck(False)
-
+0709: cdef inline tuple int_op_sub_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_sub_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_sub_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0710:                                               IntIndex xindex,
-
 0711:                                               int64_t xfill,
-
 0712:                                               int64_t[:] y_,
-
 0713:                                               IntIndex yindex,
-
 0714:                                               int64_t yfill):
-
 0715:     cdef:
-
 0716:         IntIndex out_index
-
+0717:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 0718:         int32_t xloc, yloc
-
 0719:         int32_t[:] xindices, yindices, out_indices
-
 0720:         int64_t[:] x, y
-
 0721:         ndarray[int64_t, ndim=1] out
-
 0722: 
-
 0723:     # suppress Cython compiler warnings due to inlining
-
+0724:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0725:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0726: 
-
 0727:     # need to do this first to know size of result array
-
+0728:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 728, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+0729:     out = np.empty(out_index.npoints, dtype=np.int64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 729, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 729, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 729, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 729, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 729, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 729, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 729, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 729, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 729, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 729, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 729, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0730: 
-
+0731:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 731, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0732:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 732, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0733:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 733, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 0734: 
-
 0735:     # walk the two SparseVectors, adding matched locations...
-
+0736:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+0737:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0738:             # use x fill value
-
+0739:             out[out_i] = xfill - y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0740:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0741:             continue
-
      goto __pyx_L3_continue;
-
 0742: 
-
+0743:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0744:             # use y fill value
-
+0745:             out[out_i] = x[xi] - yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
-
+0746:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0747:             continue
-
      goto __pyx_L3_continue;
-
 0748: 
-
+0749:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+0750:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 0751: 
-
 0752:         # each index in the out_index had to come from either x, y, or both
-
+0753:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+0754:             out[out_i] = x[xi] - y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) - (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+0755:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0756:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0757:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 0758:             # use y fill value
-
+0759:             out[out_i] = x[xi] - yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) - __pyx_v_yfill);
-
+0760:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0761:         else:
-
 0762:             # use x fill value
-
+0763:             out[out_i] = xfill - y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill - (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+0764:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 0765: 
-
+0766:     return out, out_index, xfill - yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill - __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 766, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 766, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0767: 
-
 0768: 
-
+0769: cpdef sparse_sub_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_15sparse_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_sub_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_sub_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_15sparse_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_15sparse_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_sub_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_sub_int64", 1, 6, 6, 1); __PYX_ERR(2, 769, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_sub_int64", 1, 6, 6, 2); __PYX_ERR(2, 769, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_sub_int64", 1, 6, 6, 3); __PYX_ERR(2, 769, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_sub_int64", 1, 6, 6, 4); __PYX_ERR(2, 769, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_sub_int64", 1, 6, 6, 5); __PYX_ERR(2, 769, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_sub_int64") < 0)) __PYX_ERR(2, 769, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 769, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 770, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 771, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 772, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_sub_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 769, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 770, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 772, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_14sparse_sub_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_14sparse_sub_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_sub_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 769, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 769, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_sub_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 769, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0770:                                   SparseIndex xindex, int64_t xfill,
-
 0771:                                   int64_t[:] y,
-
 0772:                                   SparseIndex yindex, int64_t yfill):
-
 0773: 
-
+0774:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+0775:         return block_op_sub_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 775, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 775, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 775, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_sub_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 775, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+0776:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 776, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 776, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 776, __pyx_L1_error)
-
+0777:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+0778:         return int_op_sub_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 778, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 778, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 778, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_sub_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 778, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+0779:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 779, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 779, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 779, __pyx_L1_error)
-
 0780:     else:
-
+0781:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 781, __pyx_L1_error)
-  }
-
 0782: 
-
 0783: 
-
+0784: cpdef sparse_fill_sub_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_17sparse_fill_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_sub_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_sub_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_17sparse_fill_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_17sparse_fill_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_sub_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_sub_int64", 1, 2, 2, 1); __PYX_ERR(2, 784, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_sub_int64") < 0)) __PYX_ERR(2, 784, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 784, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 785, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_sub_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 784, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_16sparse_fill_sub_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_16sparse_fill_sub_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_sub_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_sub_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 784, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_sub_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0785:                                        int64_t yfill):
-
+0786:     return xfill - yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill - __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 786, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0787: 
-
 0788: 
-
 0789: @cython.wraparound(False)
-
 0790: @cython.boundscheck(False)
-
+0791: cdef inline tuple block_op_mul_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_mul_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_mul_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0792:                                                 BlockIndex xindex,
-
 0793:                                                 float64_t xfill,
-
 0794:                                                 float64_t[:] y_,
-
 0795:                                                 BlockIndex yindex,
-
 0796:                                                 float64_t yfill):
-
 0797:     '''
-
 0798:     Binary operator on BlockIndex objects with fill values
-
 0799:     '''
-
 0800: 
-
 0801:     cdef:
-
 0802:         BlockIndex out_index
-
+0803:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+0804:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 0805:         int32_t xloc, yloc
-
+0806:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 0807: 
-
 0808:         float64_t[:] x, y
-
 0809:         ndarray[float64_t, ndim=1] out
-
 0810: 
-
 0811:     # to suppress Cython warning
-
+0812:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0813:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0814: 
-
+0815:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 815, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+0816:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 816, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 816, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 816, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 816, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 816, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 816, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 816, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 816, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 816, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 816, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 816, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0817: 
-
 0818:     # Wow, what a hack job. Need to do something about this
-
 0819: 
-
 0820:     # walk the two SparseVectors, adding matched locations...
-
+0821:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+0822:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0823:             # use y fill value
-
+0824:             out[out_i] = x[xi] * yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
-
+0825:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0826: 
-
 0827:             # advance x location
-
+0828:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0829:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0830:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0831:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+0832:             continue
-
      goto __pyx_L3_continue;
-
 0833: 
-
+0834:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0835:             # use x fill value
-
+0836:             out[out_i] = xfill * y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+0837:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0838: 
-
 0839:             # advance y location
-
+0840:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0841:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0842:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0843:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+0844:             continue
-
      goto __pyx_L3_continue;
-
 0845: 
-
+0846:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+0847:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 0848: 
-
 0849:         # each index in the out_index had to come from either x, y, or both
-
+0850:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+0851:             out[out_i] = x[xi] * y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) * (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0852:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0853:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0854: 
-
 0855:             # advance both locations
-
+0856:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0857:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0858:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0859:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0860: 
-
+0861:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0862:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0863:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0864:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0865: 
-
+0866:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 0867:             # use y fill value
-
+0868:             out[out_i] = x[xi] * yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
-
+0869:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0870: 
-
 0871:             # advance x location
-
+0872:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0873:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0874:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0875:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0876:         else:
-
 0877:             # use x fill value
-
+0878:             out[out_i] = xfill * y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0879:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0880: 
-
 0881:             # advance y location
-
+0882:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0883:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+0884:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0885:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0886: 
-
+0887:     return out, out_index, xfill * yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_xfill * __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 887, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 887, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0888: 
-
 0889: 
-
 0890: @cython.wraparound(False)
-
 0891: @cython.boundscheck(False)
-
+0892: cdef inline tuple int_op_mul_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_mul_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_mul_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0893:                                               IntIndex xindex,
-
 0894:                                               float64_t xfill,
-
 0895:                                               float64_t[:] y_,
-
 0896:                                               IntIndex yindex,
-
 0897:                                               float64_t yfill):
-
 0898:     cdef:
-
 0899:         IntIndex out_index
-
+0900:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 0901:         int32_t xloc, yloc
-
 0902:         int32_t[:] xindices, yindices, out_indices
-
 0903:         float64_t[:] x, y
-
 0904:         ndarray[float64_t, ndim=1] out
-
 0905: 
-
 0906:     # suppress Cython compiler warnings due to inlining
-
+0907:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0908:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0909: 
-
 0910:     # need to do this first to know size of result array
-
+0911:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 911, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+0912:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 912, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 912, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 912, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 912, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 912, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 912, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 912, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 912, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 912, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 912, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 912, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0913: 
-
+0914:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 914, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0915:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 915, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0916:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 916, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 0917: 
-
 0918:     # walk the two SparseVectors, adding matched locations...
-
+0919:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+0920:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0921:             # use x fill value
-
+0922:             out[out_i] = xfill * y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+0923:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0924:             continue
-
      goto __pyx_L3_continue;
-
 0925: 
-
+0926:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0927:             # use y fill value
-
+0928:             out[out_i] = x[xi] * yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
-
+0929:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0930:             continue
-
      goto __pyx_L3_continue;
-
 0931: 
-
+0932:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+0933:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 0934: 
-
 0935:         # each index in the out_index had to come from either x, y, or both
-
+0936:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+0937:             out[out_i] = x[xi] * y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) * (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+0938:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0939:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0940:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 0941:             # use y fill value
-
+0942:             out[out_i] = x[xi] * yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
-
+0943:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0944:         else:
-
 0945:             # use x fill value
-
+0946:             out[out_i] = xfill * y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+0947:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 0948: 
-
+0949:     return out, out_index, xfill * yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble((__pyx_v_xfill * __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 949, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 949, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0950: 
-
 0951: 
-
+0952: cpdef sparse_mul_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_19sparse_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_mul_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_mul_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_19sparse_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_19sparse_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_mul_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mul_float64", 1, 6, 6, 1); __PYX_ERR(2, 952, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mul_float64", 1, 6, 6, 2); __PYX_ERR(2, 952, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mul_float64", 1, 6, 6, 3); __PYX_ERR(2, 952, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mul_float64", 1, 6, 6, 4); __PYX_ERR(2, 952, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mul_float64", 1, 6, 6, 5); __PYX_ERR(2, 952, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_mul_float64") < 0)) __PYX_ERR(2, 952, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 952, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 953, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 954, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 955, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_mul_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 952, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 953, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 955, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_18sparse_mul_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_18sparse_mul_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_mul_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 952, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 952, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_mul_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 952, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0953:                                   SparseIndex xindex, float64_t xfill,
-
 0954:                                   float64_t[:] y,
-
 0955:                                   SparseIndex yindex, float64_t yfill):
-
 0956: 
-
+0957:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+0958:         return block_op_mul_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 958, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 958, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 958, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_mul_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 958, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+0959:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 959, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 959, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 959, __pyx_L1_error)
-
+0960:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+0961:         return int_op_mul_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 961, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 961, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 961, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_mul_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 961, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+0962:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 962, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 962, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 962, __pyx_L1_error)
-
 0963:     else:
-
+0964:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 964, __pyx_L1_error)
-  }
-
 0965: 
-
 0966: 
-
+0967: cpdef sparse_fill_mul_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_21sparse_fill_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_mul_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_mul_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_21sparse_fill_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_21sparse_fill_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_mul_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_mul_float64", 1, 2, 2, 1); __PYX_ERR(2, 967, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_mul_float64") < 0)) __PYX_ERR(2, 967, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 967, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 968, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_mul_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 967, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_20sparse_fill_mul_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_20sparse_fill_mul_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_mul_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_mul_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 967, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mul_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0968:                                        float64_t yfill):
-
+0969:     return xfill * yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyFloat_FromDouble((__pyx_v_xfill * __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 969, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 0970: 
-
 0971: 
-
 0972: @cython.wraparound(False)
-
 0973: @cython.boundscheck(False)
-
+0974: cdef inline tuple block_op_mul_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_mul_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_mul_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 0975:                                                 BlockIndex xindex,
-
 0976:                                                 int64_t xfill,
-
 0977:                                                 int64_t[:] y_,
-
 0978:                                                 BlockIndex yindex,
-
 0979:                                                 int64_t yfill):
-
 0980:     '''
-
 0981:     Binary operator on BlockIndex objects with fill values
-
 0982:     '''
-
 0983: 
-
 0984:     cdef:
-
 0985:         BlockIndex out_index
-
+0986:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+0987:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 0988:         int32_t xloc, yloc
-
+0989:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 0990: 
-
 0991:         int64_t[:] x, y
-
 0992:         ndarray[int64_t, ndim=1] out
-
 0993: 
-
 0994:     # to suppress Cython warning
-
+0995:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0996:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0997: 
-
+0998:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 998, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+0999:     out = np.empty(out_index.npoints, dtype=np.int64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 999, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 999, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 999, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 999, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 999, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 999, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 999, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 999, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 999, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 999, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 999, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1000: 
-
 1001:     # Wow, what a hack job. Need to do something about this
-
 1002: 
-
 1003:     # walk the two SparseVectors, adding matched locations...
-
+1004:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+1005:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1006:             # use y fill value
-
+1007:             out[out_i] = x[xi] * yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
-
+1008:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1009: 
-
 1010:             # advance x location
-
+1011:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1012:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1013:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1014:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+1015:             continue
-
      goto __pyx_L3_continue;
-
 1016: 
-
+1017:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1018:             # use x fill value
-
+1019:             out[out_i] = xfill * y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+1020:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1021: 
-
 1022:             # advance y location
-
+1023:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1024:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1025:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1026:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+1027:             continue
-
      goto __pyx_L3_continue;
-
 1028: 
-
+1029:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+1030:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 1031: 
-
 1032:         # each index in the out_index had to come from either x, y, or both
-
+1033:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+1034:             out[out_i] = x[xi] * y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) * (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1035:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1036:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1037: 
-
 1038:             # advance both locations
-
+1039:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1040:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1041:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1042:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1043: 
-
+1044:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1045:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1046:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1047:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1048: 
-
+1049:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 1050:             # use y fill value
-
+1051:             out[out_i] = x[xi] * yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
-
+1052:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1053: 
-
 1054:             # advance x location
-
+1055:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1056:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1057:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1058:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1059:         else:
-
 1060:             # use x fill value
-
+1061:             out[out_i] = xfill * y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1062:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1063: 
-
 1064:             # advance y location
-
+1065:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1066:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+1067:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1068:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1069: 
-
+1070:     return out, out_index, xfill * yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill * __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1070, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1070, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1071: 
-
 1072: 
-
 1073: @cython.wraparound(False)
-
 1074: @cython.boundscheck(False)
-
+1075: cdef inline tuple int_op_mul_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_mul_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_mul_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1076:                                               IntIndex xindex,
-
 1077:                                               int64_t xfill,
-
 1078:                                               int64_t[:] y_,
-
 1079:                                               IntIndex yindex,
-
 1080:                                               int64_t yfill):
-
 1081:     cdef:
-
 1082:         IntIndex out_index
-
+1083:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 1084:         int32_t xloc, yloc
-
 1085:         int32_t[:] xindices, yindices, out_indices
-
 1086:         int64_t[:] x, y
-
 1087:         ndarray[int64_t, ndim=1] out
-
 1088: 
-
 1089:     # suppress Cython compiler warnings due to inlining
-
+1090:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1091:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1092: 
-
 1093:     # need to do this first to know size of result array
-
+1094:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1094, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+1095:     out = np.empty(out_index.npoints, dtype=np.int64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1095, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1095, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1095, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1095, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1095, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1095, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1095, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1095, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1095, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 1095, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1095, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1096: 
-
+1097:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1097, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1098:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1098, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1099:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1099, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 1100: 
-
 1101:     # walk the two SparseVectors, adding matched locations...
-
+1102:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+1103:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1104:             # use x fill value
-
+1105:             out[out_i] = xfill * y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1106:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1107:             continue
-
      goto __pyx_L3_continue;
-
 1108: 
-
+1109:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1110:             # use y fill value
-
+1111:             out[out_i] = x[xi] * yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
-
+1112:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1113:             continue
-
      goto __pyx_L3_continue;
-
 1114: 
-
+1115:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+1116:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 1117: 
-
 1118:         # each index in the out_index had to come from either x, y, or both
-
+1119:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+1120:             out[out_i] = x[xi] * y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) * (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+1121:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1122:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1123:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 1124:             # use y fill value
-
+1125:             out[out_i] = x[xi] * yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) * __pyx_v_yfill);
-
+1126:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1127:         else:
-
 1128:             # use x fill value
-
+1129:             out[out_i] = xfill * y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill * (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+1130:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 1131: 
-
+1132:     return out, out_index, xfill * yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill * __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1132, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1132, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1133: 
-
 1134: 
-
+1135: cpdef sparse_mul_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_23sparse_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_mul_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_mul_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_23sparse_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_23sparse_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_mul_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mul_int64", 1, 6, 6, 1); __PYX_ERR(2, 1135, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mul_int64", 1, 6, 6, 2); __PYX_ERR(2, 1135, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mul_int64", 1, 6, 6, 3); __PYX_ERR(2, 1135, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mul_int64", 1, 6, 6, 4); __PYX_ERR(2, 1135, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mul_int64", 1, 6, 6, 5); __PYX_ERR(2, 1135, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_mul_int64") < 0)) __PYX_ERR(2, 1135, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 1135, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1136, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 1137, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1138, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_mul_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1135, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 1136, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1138, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_22sparse_mul_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_22sparse_mul_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_mul_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 1135, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1135, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_mul_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1135, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1136:                                   SparseIndex xindex, int64_t xfill,
-
 1137:                                   int64_t[:] y,
-
 1138:                                   SparseIndex yindex, int64_t yfill):
-
 1139: 
-
+1140:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+1141:         return block_op_mul_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1141, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1141, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1141, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_mul_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1141, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+1142:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1142, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1142, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1142, __pyx_L1_error)
-
+1143:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+1144:         return int_op_mul_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1144, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1144, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1144, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_mul_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1144, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+1145:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1145, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1145, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1145, __pyx_L1_error)
-
 1146:     else:
-
+1147:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 1147, __pyx_L1_error)
-  }
-
 1148: 
-
 1149: 
-
+1150: cpdef sparse_fill_mul_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_25sparse_fill_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_mul_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_mul_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_25sparse_fill_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_25sparse_fill_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_mul_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_mul_int64", 1, 2, 2, 1); __PYX_ERR(2, 1150, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_mul_int64") < 0)) __PYX_ERR(2, 1150, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1150, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1151, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_mul_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1150, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_24sparse_fill_mul_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_24sparse_fill_mul_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_mul_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_mul_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1150, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mul_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1151:                                        int64_t yfill):
-
+1152:     return xfill * yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill * __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1152, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1153: 
-
 1154: 
-
 1155: @cython.wraparound(False)
-
 1156: @cython.boundscheck(False)
-
+1157: cdef inline tuple block_op_div_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_div_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_div_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1158:                                                 BlockIndex xindex,
-
 1159:                                                 float64_t xfill,
-
 1160:                                                 float64_t[:] y_,
-
 1161:                                                 BlockIndex yindex,
-
 1162:                                                 float64_t yfill):
-
 1163:     '''
-
 1164:     Binary operator on BlockIndex objects with fill values
-
 1165:     '''
-
 1166: 
-
 1167:     cdef:
-
 1168:         BlockIndex out_index
-
+1169:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+1170:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 1171:         int32_t xloc, yloc
-
+1172:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 1173: 
-
 1174:         float64_t[:] x, y
-
 1175:         ndarray[float64_t, ndim=1] out
-
 1176: 
-
 1177:     # to suppress Cython warning
-
+1178:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1179:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1180: 
-
+1181:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1181, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+1182:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1182, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1182, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1182, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1182, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1182, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1182, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1182, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1182, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1182, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 1182, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1182, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1183: 
-
 1184:     # Wow, what a hack job. Need to do something about this
-
 1185: 
-
 1186:     # walk the two SparseVectors, adding matched locations...
-
+1187:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+1188:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1189:             # use y fill value
-
+1190:             out[out_i] = __div__(x[xi], yfill)
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1191:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1192: 
-
 1193:             # advance x location
-
+1194:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1195:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1196:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1197:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+1198:             continue
-
      goto __pyx_L3_continue;
-
 1199: 
-
+1200:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1201:             # use x fill value
-
+1202:             out[out_i] = __div__(xfill, y[yi])
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+1203:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1204: 
-
 1205:             # advance y location
-
+1206:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1207:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1208:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1209:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+1210:             continue
-
      goto __pyx_L3_continue;
-
 1211: 
-
+1212:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+1213:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 1214: 
-
 1215:         # each index in the out_index had to come from either x, y, or both
-
+1216:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+1217:             out[out_i] = __div__(x[xi], y[yi])
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1218:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1219:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1220: 
-
 1221:             # advance both locations
-
+1222:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1223:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1224:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1225:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1226: 
-
+1227:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1228:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1229:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1230:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1231: 
-
+1232:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 1233:             # use y fill value
-
+1234:             out[out_i] = __div__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1235:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1236: 
-
 1237:             # advance x location
-
+1238:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1239:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1240:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1241:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1242:         else:
-
 1243:             # use x fill value
-
+1244:             out[out_i] = __div__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1245:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1246: 
-
 1247:             # advance y location
-
+1248:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1249:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+1250:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1251:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1252: 
-
+1253:     return out, out_index, __div__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1253, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1253, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1254: 
-
 1255: 
-
 1256: @cython.wraparound(False)
-
 1257: @cython.boundscheck(False)
-
+1258: cdef inline tuple int_op_div_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_div_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_div_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1259:                                               IntIndex xindex,
-
 1260:                                               float64_t xfill,
-
 1261:                                               float64_t[:] y_,
-
 1262:                                               IntIndex yindex,
-
 1263:                                               float64_t yfill):
-
 1264:     cdef:
-
 1265:         IntIndex out_index
-
+1266:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 1267:         int32_t xloc, yloc
-
 1268:         int32_t[:] xindices, yindices, out_indices
-
 1269:         float64_t[:] x, y
-
 1270:         ndarray[float64_t, ndim=1] out
-
 1271: 
-
 1272:     # suppress Cython compiler warnings due to inlining
-
+1273:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1274:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1275: 
-
 1276:     # need to do this first to know size of result array
-
+1277:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1277, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+1278:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1278, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1278, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1278, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1278, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1278, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1278, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1278, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1278, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1278, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 1278, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1278, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1279: 
-
+1280:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1280, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1281:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1281, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1282:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1282, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 1283: 
-
 1284:     # walk the two SparseVectors, adding matched locations...
-
+1285:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+1286:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1287:             # use x fill value
-
+1288:             out[out_i] = __div__(xfill, y[yi])
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1289:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1290:             continue
-
      goto __pyx_L3_continue;
-
 1291: 
-
+1292:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1293:             # use y fill value
-
+1294:             out[out_i] = __div__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1295:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1296:             continue
-
      goto __pyx_L3_continue;
-
 1297: 
-
+1298:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+1299:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 1300: 
-
 1301:         # each index in the out_index had to come from either x, y, or both
-
+1302:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+1303:             out[out_i] = __div__(x[xi], y[yi])
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+1304:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1305:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1306:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 1307:             # use y fill value
-
+1308:             out[out_i] = __div__(x[xi], yfill)
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1309:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1310:         else:
-
 1311:             # use x fill value
-
+1312:             out[out_i] = __div__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+1313:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 1314: 
-
+1315:     return out, out_index, __div__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1315, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1315, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1316: 
-
 1317: 
-
+1318: cpdef sparse_div_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_27sparse_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_div_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_div_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_27sparse_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_27sparse_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_div_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_div_float64", 1, 6, 6, 1); __PYX_ERR(2, 1318, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_div_float64", 1, 6, 6, 2); __PYX_ERR(2, 1318, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_div_float64", 1, 6, 6, 3); __PYX_ERR(2, 1318, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_div_float64", 1, 6, 6, 4); __PYX_ERR(2, 1318, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_div_float64", 1, 6, 6, 5); __PYX_ERR(2, 1318, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_div_float64") < 0)) __PYX_ERR(2, 1318, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 1318, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1319, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 1320, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1321, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_div_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1318, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 1319, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1321, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_26sparse_div_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_26sparse_div_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_div_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 1318, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1318, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_div_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1318, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1319:                                   SparseIndex xindex, float64_t xfill,
-
 1320:                                   float64_t[:] y,
-
 1321:                                   SparseIndex yindex, float64_t yfill):
-
 1322: 
-
+1323:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+1324:         return block_op_div_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1324, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1324, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1324, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_div_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1324, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+1325:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1325, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1325, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1325, __pyx_L1_error)
-
+1326:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+1327:         return int_op_div_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1327, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1327, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1327, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_div_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1327, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+1328:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1328, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1328, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1328, __pyx_L1_error)
-
 1329:     else:
-
+1330:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 1330, __pyx_L1_error)
-  }
-
 1331: 
-
 1332: 
-
+1333: cpdef sparse_fill_div_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_29sparse_fill_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_div_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_div_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_29sparse_fill_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_29sparse_fill_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_div_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_div_float64", 1, 2, 2, 1); __PYX_ERR(2, 1333, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_div_float64") < 0)) __PYX_ERR(2, 1333, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1333, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1334, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_div_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1333, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_28sparse_fill_div_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_28sparse_fill_div_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_div_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_div_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1333, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_div_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1334:                                        float64_t yfill):
-
+1335:     return __div__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1335, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1336: 
-
 1337: 
-
 1338: @cython.wraparound(False)
-
 1339: @cython.boundscheck(False)
-
+1340: cdef inline tuple block_op_div_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_div_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_div_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1341:                                                 BlockIndex xindex,
-
 1342:                                                 int64_t xfill,
-
 1343:                                                 int64_t[:] y_,
-
 1344:                                                 BlockIndex yindex,
-
 1345:                                                 int64_t yfill):
-
 1346:     '''
-
 1347:     Binary operator on BlockIndex objects with fill values
-
 1348:     '''
-
 1349: 
-
 1350:     cdef:
-
 1351:         BlockIndex out_index
-
+1352:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+1353:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 1354:         int32_t xloc, yloc
-
+1355:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 1356: 
-
 1357:         int64_t[:] x, y
-
 1358:         ndarray[float64_t, ndim=1] out
-
 1359: 
-
 1360:     # to suppress Cython warning
-
+1361:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1362:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1363: 
-
+1364:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1364, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+1365:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1365, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1365, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1365, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1365, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1365, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1365, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1365, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1365, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1365, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 1365, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1365, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1366: 
-
 1367:     # Wow, what a hack job. Need to do something about this
-
 1368: 
-
 1369:     # walk the two SparseVectors, adding matched locations...
-
+1370:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+1371:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1372:             # use y fill value
-
+1373:             out[out_i] = __div__(x[xi], yfill)
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1374:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1375: 
-
 1376:             # advance x location
-
+1377:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1378:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1379:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1380:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+1381:             continue
-
      goto __pyx_L3_continue;
-
 1382: 
-
+1383:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1384:             # use x fill value
-
+1385:             out[out_i] = __div__(xfill, y[yi])
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+1386:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1387: 
-
 1388:             # advance y location
-
+1389:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1390:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1391:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1392:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+1393:             continue
-
      goto __pyx_L3_continue;
-
 1394: 
-
+1395:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+1396:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 1397: 
-
 1398:         # each index in the out_index had to come from either x, y, or both
-
+1399:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+1400:             out[out_i] = __div__(x[xi], y[yi])
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1401:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1402:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1403: 
-
 1404:             # advance both locations
-
+1405:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1406:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1407:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1408:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1409: 
-
+1410:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1411:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1412:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1413:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1414: 
-
+1415:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 1416:             # use y fill value
-
+1417:             out[out_i] = __div__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1418:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1419: 
-
 1420:             # advance x location
-
+1421:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1422:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1423:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1424:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1425:         else:
-
 1426:             # use x fill value
-
+1427:             out[out_i] = __div__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1428:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1429: 
-
 1430:             # advance y location
-
+1431:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1432:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+1433:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1434:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1435: 
-
+1436:     return out, out_index, __div__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1436, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1436, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1437: 
-
 1438: 
-
 1439: @cython.wraparound(False)
-
 1440: @cython.boundscheck(False)
-
+1441: cdef inline tuple int_op_div_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_div_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_div_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1442:                                               IntIndex xindex,
-
 1443:                                               int64_t xfill,
-
 1444:                                               int64_t[:] y_,
-
 1445:                                               IntIndex yindex,
-
 1446:                                               int64_t yfill):
-
 1447:     cdef:
-
 1448:         IntIndex out_index
-
+1449:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 1450:         int32_t xloc, yloc
-
 1451:         int32_t[:] xindices, yindices, out_indices
-
 1452:         int64_t[:] x, y
-
 1453:         ndarray[float64_t, ndim=1] out
-
 1454: 
-
 1455:     # suppress Cython compiler warnings due to inlining
-
+1456:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1457:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1458: 
-
 1459:     # need to do this first to know size of result array
-
+1460:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1460, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+1461:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1461, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1461, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 1461, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1461, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1462: 
-
+1463:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1463, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1464:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1464, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1465:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1465, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 1466: 
-
 1467:     # walk the two SparseVectors, adding matched locations...
-
+1468:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+1469:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1470:             # use x fill value
-
+1471:             out[out_i] = __div__(xfill, y[yi])
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1472:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1473:             continue
-
      goto __pyx_L3_continue;
-
 1474: 
-
+1475:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1476:             # use y fill value
-
+1477:             out[out_i] = __div__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1478:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1479:             continue
-
      goto __pyx_L3_continue;
-
 1480: 
-
+1481:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+1482:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 1483: 
-
 1484:         # each index in the out_index had to come from either x, y, or both
-
+1485:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+1486:             out[out_i] = __div__(x[xi], y[yi])
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+1487:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1488:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1489:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 1490:             # use y fill value
-
+1491:             out[out_i] = __div__(x[xi], yfill)
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1492:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1493:         else:
-
 1494:             # use x fill value
-
+1495:             out[out_i] = __div__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+1496:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 1497: 
-
+1498:     return out, out_index, __div__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1498, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1498, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1499: 
-
 1500: 
-
+1501: cpdef sparse_div_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_31sparse_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_div_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_div_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_31sparse_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_31sparse_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_div_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_div_int64", 1, 6, 6, 1); __PYX_ERR(2, 1501, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_div_int64", 1, 6, 6, 2); __PYX_ERR(2, 1501, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_div_int64", 1, 6, 6, 3); __PYX_ERR(2, 1501, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_div_int64", 1, 6, 6, 4); __PYX_ERR(2, 1501, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_div_int64", 1, 6, 6, 5); __PYX_ERR(2, 1501, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_div_int64") < 0)) __PYX_ERR(2, 1501, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 1501, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1502, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 1503, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1504, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_div_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1501, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 1502, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1504, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_30sparse_div_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_30sparse_div_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_div_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 1501, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1501, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_div_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1501, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1502:                                   SparseIndex xindex, int64_t xfill,
-
 1503:                                   int64_t[:] y,
-
 1504:                                   SparseIndex yindex, int64_t yfill):
-
 1505: 
-
+1506:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+1507:         return block_op_div_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1507, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1507, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1507, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_div_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1507, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+1508:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1508, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1508, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1508, __pyx_L1_error)
-
+1509:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+1510:         return int_op_div_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1510, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1510, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1510, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_div_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1510, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+1511:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1511, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1511, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1511, __pyx_L1_error)
-
 1512:     else:
-
+1513:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 1513, __pyx_L1_error)
-  }
-
 1514: 
-
 1515: 
-
+1516: cpdef sparse_fill_div_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_33sparse_fill_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_div_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_div_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_33sparse_fill_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_33sparse_fill_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_div_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_div_int64", 1, 2, 2, 1); __PYX_ERR(2, 1516, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_div_int64") < 0)) __PYX_ERR(2, 1516, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1516, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1517, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_div_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1516, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_32sparse_fill_div_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_32sparse_fill_div_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_div_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_div_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1516, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_div_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1517:                                        int64_t yfill):
-
+1518:     return __div__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyFloat_FromDouble(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___div__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1518, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1519: 
-
 1520: 
-
 1521: @cython.wraparound(False)
-
 1522: @cython.boundscheck(False)
-
+1523: cdef inline tuple block_op_mod_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_mod_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_mod_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1524:                                                 BlockIndex xindex,
-
 1525:                                                 float64_t xfill,
-
 1526:                                                 float64_t[:] y_,
-
 1527:                                                 BlockIndex yindex,
-
 1528:                                                 float64_t yfill):
-
 1529:     '''
-
 1530:     Binary operator on BlockIndex objects with fill values
-
 1531:     '''
-
 1532: 
-
 1533:     cdef:
-
 1534:         BlockIndex out_index
-
+1535:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+1536:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 1537:         int32_t xloc, yloc
-
+1538:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 1539: 
-
 1540:         float64_t[:] x, y
-
 1541:         ndarray[float64_t, ndim=1] out
-
 1542: 
-
 1543:     # to suppress Cython warning
-
+1544:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1545:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1546: 
-
+1547:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1547, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+1548:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1548, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1548, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1548, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1548, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1548, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1548, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1548, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1548, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1548, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 1548, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1548, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1549: 
-
 1550:     # Wow, what a hack job. Need to do something about this
-
 1551: 
-
 1552:     # walk the two SparseVectors, adding matched locations...
-
+1553:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+1554:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1555:             # use y fill value
-
+1556:             out[out_i] = __mod__(x[xi], yfill)
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1557:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1558: 
-
 1559:             # advance x location
-
+1560:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1561:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1562:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1563:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+1564:             continue
-
      goto __pyx_L3_continue;
-
 1565: 
-
+1566:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1567:             # use x fill value
-
+1568:             out[out_i] = __mod__(xfill, y[yi])
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+1569:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1570: 
-
 1571:             # advance y location
-
+1572:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1573:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1574:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1575:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+1576:             continue
-
      goto __pyx_L3_continue;
-
 1577: 
-
+1578:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+1579:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 1580: 
-
 1581:         # each index in the out_index had to come from either x, y, or both
-
+1582:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+1583:             out[out_i] = __mod__(x[xi], y[yi])
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1584:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1585:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1586: 
-
 1587:             # advance both locations
-
+1588:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1589:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1590:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1591:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1592: 
-
+1593:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1594:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1595:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1596:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1597: 
-
+1598:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 1599:             # use y fill value
-
+1600:             out[out_i] = __mod__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1601:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1602: 
-
 1603:             # advance x location
-
+1604:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1605:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1606:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1607:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1608:         else:
-
 1609:             # use x fill value
-
+1610:             out[out_i] = __mod__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1611:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1612: 
-
 1613:             # advance y location
-
+1614:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1615:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+1616:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1617:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1618: 
-
+1619:     return out, out_index, __mod__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1619, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1619, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1620: 
-
 1621: 
-
 1622: @cython.wraparound(False)
-
 1623: @cython.boundscheck(False)
-
+1624: cdef inline tuple int_op_mod_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_mod_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_mod_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1625:                                               IntIndex xindex,
-
 1626:                                               float64_t xfill,
-
 1627:                                               float64_t[:] y_,
-
 1628:                                               IntIndex yindex,
-
 1629:                                               float64_t yfill):
-
 1630:     cdef:
-
 1631:         IntIndex out_index
-
+1632:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 1633:         int32_t xloc, yloc
-
 1634:         int32_t[:] xindices, yindices, out_indices
-
 1635:         float64_t[:] x, y
-
 1636:         ndarray[float64_t, ndim=1] out
-
 1637: 
-
 1638:     # suppress Cython compiler warnings due to inlining
-
+1639:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1640:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1641: 
-
 1642:     # need to do this first to know size of result array
-
+1643:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1643, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+1644:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1644, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1644, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1644, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1644, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1644, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1644, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1644, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1644, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1644, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 1644, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1644, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1645: 
-
+1646:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1646, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1647:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1647, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1648:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1648, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 1649: 
-
 1650:     # walk the two SparseVectors, adding matched locations...
-
+1651:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+1652:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1653:             # use x fill value
-
+1654:             out[out_i] = __mod__(xfill, y[yi])
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1655:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1656:             continue
-
      goto __pyx_L3_continue;
-
 1657: 
-
+1658:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1659:             # use y fill value
-
+1660:             out[out_i] = __mod__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1661:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1662:             continue
-
      goto __pyx_L3_continue;
-
 1663: 
-
+1664:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+1665:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 1666: 
-
 1667:         # each index in the out_index had to come from either x, y, or both
-
+1668:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+1669:             out[out_i] = __mod__(x[xi], y[yi])
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+1670:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1671:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1672:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 1673:             # use y fill value
-
+1674:             out[out_i] = __mod__(x[xi], yfill)
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1675:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1676:         else:
-
 1677:             # use x fill value
-
+1678:             out[out_i] = __mod__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+1679:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 1680: 
-
+1681:     return out, out_index, __mod__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1681, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1681, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1682: 
-
 1683: 
-
+1684: cpdef sparse_mod_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_35sparse_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_mod_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_mod_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_35sparse_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_35sparse_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_mod_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mod_float64", 1, 6, 6, 1); __PYX_ERR(2, 1684, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mod_float64", 1, 6, 6, 2); __PYX_ERR(2, 1684, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mod_float64", 1, 6, 6, 3); __PYX_ERR(2, 1684, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mod_float64", 1, 6, 6, 4); __PYX_ERR(2, 1684, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mod_float64", 1, 6, 6, 5); __PYX_ERR(2, 1684, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_mod_float64") < 0)) __PYX_ERR(2, 1684, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 1684, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1685, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 1686, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1687, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_mod_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1684, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 1685, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1687, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_34sparse_mod_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_34sparse_mod_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_mod_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 1684, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1684, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_mod_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1684, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1685:                                   SparseIndex xindex, float64_t xfill,
-
 1686:                                   float64_t[:] y,
-
 1687:                                   SparseIndex yindex, float64_t yfill):
-
 1688: 
-
+1689:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+1690:         return block_op_mod_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1690, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1690, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1690, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_mod_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1690, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+1691:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1691, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1691, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1691, __pyx_L1_error)
-
+1692:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+1693:         return int_op_mod_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1693, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1693, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1693, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_mod_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1693, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+1694:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1694, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1694, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1694, __pyx_L1_error)
-
 1695:     else:
-
+1696:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 1696, __pyx_L1_error)
-  }
-
 1697: 
-
 1698: 
-
+1699: cpdef sparse_fill_mod_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_37sparse_fill_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_mod_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_mod_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_37sparse_fill_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_37sparse_fill_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_mod_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_mod_float64", 1, 2, 2, 1); __PYX_ERR(2, 1699, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_mod_float64") < 0)) __PYX_ERR(2, 1699, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1699, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1700, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_mod_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1699, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_36sparse_fill_mod_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_36sparse_fill_mod_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_mod_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_mod_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1699, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mod_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1700:                                        float64_t yfill):
-
+1701:     return __mod__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1701, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1702: 
-
 1703: 
-
 1704: @cython.wraparound(False)
-
 1705: @cython.boundscheck(False)
-
+1706: cdef inline tuple block_op_mod_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_mod_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_mod_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1707:                                                 BlockIndex xindex,
-
 1708:                                                 int64_t xfill,
-
 1709:                                                 int64_t[:] y_,
-
 1710:                                                 BlockIndex yindex,
-
 1711:                                                 int64_t yfill):
-
 1712:     '''
-
 1713:     Binary operator on BlockIndex objects with fill values
-
 1714:     '''
-
 1715: 
-
 1716:     cdef:
-
 1717:         BlockIndex out_index
-
+1718:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+1719:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 1720:         int32_t xloc, yloc
-
+1721:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 1722: 
-
 1723:         int64_t[:] x, y
-
 1724:         ndarray[int64_t, ndim=1] out
-
 1725: 
-
 1726:     # to suppress Cython warning
-
+1727:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1728:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1729: 
-
+1730:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1730, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+1731:     out = np.empty(out_index.npoints, dtype=np.int64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1731, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1731, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 1731, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1731, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1732: 
-
 1733:     # Wow, what a hack job. Need to do something about this
-
 1734: 
-
 1735:     # walk the two SparseVectors, adding matched locations...
-
+1736:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+1737:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1738:             # use y fill value
-
+1739:             out[out_i] = __mod__(x[xi], yfill)
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1740:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1741: 
-
 1742:             # advance x location
-
+1743:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1744:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1745:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1746:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+1747:             continue
-
      goto __pyx_L3_continue;
-
 1748: 
-
+1749:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1750:             # use x fill value
-
+1751:             out[out_i] = __mod__(xfill, y[yi])
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+1752:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1753: 
-
 1754:             # advance y location
-
+1755:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1756:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1757:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1758:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+1759:             continue
-
      goto __pyx_L3_continue;
-
 1760: 
-
+1761:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+1762:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 1763: 
-
 1764:         # each index in the out_index had to come from either x, y, or both
-
+1765:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+1766:             out[out_i] = __mod__(x[xi], y[yi])
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1767:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1768:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1769: 
-
 1770:             # advance both locations
-
+1771:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1772:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1773:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1774:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1775: 
-
+1776:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1777:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1778:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1779:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1780: 
-
+1781:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 1782:             # use y fill value
-
+1783:             out[out_i] = __mod__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1784:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1785: 
-
 1786:             # advance x location
-
+1787:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1788:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1789:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1790:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1791:         else:
-
 1792:             # use x fill value
-
+1793:             out[out_i] = __mod__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1794:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1795: 
-
 1796:             # advance y location
-
+1797:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1798:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+1799:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1800:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1801: 
-
+1802:     return out, out_index, __mod__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1802, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1802, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1803: 
-
 1804: 
-
 1805: @cython.wraparound(False)
-
 1806: @cython.boundscheck(False)
-
+1807: cdef inline tuple int_op_mod_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_mod_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_mod_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1808:                                               IntIndex xindex,
-
 1809:                                               int64_t xfill,
-
 1810:                                               int64_t[:] y_,
-
 1811:                                               IntIndex yindex,
-
 1812:                                               int64_t yfill):
-
 1813:     cdef:
-
 1814:         IntIndex out_index
-
+1815:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 1816:         int32_t xloc, yloc
-
 1817:         int32_t[:] xindices, yindices, out_indices
-
 1818:         int64_t[:] x, y
-
 1819:         ndarray[int64_t, ndim=1] out
-
 1820: 
-
 1821:     # suppress Cython compiler warnings due to inlining
-
+1822:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1823:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1824: 
-
 1825:     # need to do this first to know size of result array
-
+1826:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1826, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+1827:     out = np.empty(out_index.npoints, dtype=np.int64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1827, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1827, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1827, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1827, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1827, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1827, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1827, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1827, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1827, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 1827, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1827, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1828: 
-
+1829:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1829, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1830:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1830, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1831:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 1831, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 1832: 
-
 1833:     # walk the two SparseVectors, adding matched locations...
-
+1834:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+1835:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1836:             # use x fill value
-
+1837:             out[out_i] = __mod__(xfill, y[yi])
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1838:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1839:             continue
-
      goto __pyx_L3_continue;
-
 1840: 
-
+1841:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1842:             # use y fill value
-
+1843:             out[out_i] = __mod__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1844:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1845:             continue
-
      goto __pyx_L3_continue;
-
 1846: 
-
+1847:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+1848:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 1849: 
-
 1850:         # each index in the out_index had to come from either x, y, or both
-
+1851:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+1852:             out[out_i] = __mod__(x[xi], y[yi])
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+1853:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1854:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1855:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 1856:             # use y fill value
-
+1857:             out[out_i] = __mod__(x[xi], yfill)
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1858:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1859:         else:
-
 1860:             # use x fill value
-
+1861:             out[out_i] = __mod__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+1862:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 1863: 
-
+1864:     return out, out_index, __mod__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1864, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1864, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1865: 
-
 1866: 
-
+1867: cpdef sparse_mod_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_39sparse_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_mod_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_mod_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_39sparse_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_39sparse_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_mod_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mod_int64", 1, 6, 6, 1); __PYX_ERR(2, 1867, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mod_int64", 1, 6, 6, 2); __PYX_ERR(2, 1867, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mod_int64", 1, 6, 6, 3); __PYX_ERR(2, 1867, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mod_int64", 1, 6, 6, 4); __PYX_ERR(2, 1867, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_mod_int64", 1, 6, 6, 5); __PYX_ERR(2, 1867, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_mod_int64") < 0)) __PYX_ERR(2, 1867, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 1867, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1868, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 1869, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1870, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_mod_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1867, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 1868, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1870, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_38sparse_mod_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_38sparse_mod_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_mod_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 1867, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1867, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_mod_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1867, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1868:                                   SparseIndex xindex, int64_t xfill,
-
 1869:                                   int64_t[:] y,
-
 1870:                                   SparseIndex yindex, int64_t yfill):
-
 1871: 
-
+1872:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+1873:         return block_op_mod_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1873, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1873, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1873, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_mod_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1873, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+1874:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1874, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1874, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 1874, __pyx_L1_error)
-
+1875:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+1876:         return int_op_mod_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1876, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1876, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1876, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_mod_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1876, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+1877:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1877, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1877, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 1877, __pyx_L1_error)
-
 1878:     else:
-
+1879:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 1879, __pyx_L1_error)
-  }
-
 1880: 
-
 1881: 
-
+1882: cpdef sparse_fill_mod_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_41sparse_fill_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_mod_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_mod_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_41sparse_fill_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_41sparse_fill_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_mod_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_mod_int64", 1, 2, 2, 1); __PYX_ERR(2, 1882, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_mod_int64") < 0)) __PYX_ERR(2, 1882, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1882, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 1883, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_mod_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 1882, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_40sparse_fill_mod_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_40sparse_fill_mod_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_mod_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_mod_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1882, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_mod_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1883:                                        int64_t yfill):
-
+1884:     return __mod__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int64(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___mod__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1884, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1885: 
-
 1886: 
-
 1887: @cython.wraparound(False)
-
 1888: @cython.boundscheck(False)
-
+1889: cdef inline tuple block_op_truediv_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_truediv_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_truediv_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1890:                                                 BlockIndex xindex,
-
 1891:                                                 float64_t xfill,
-
 1892:                                                 float64_t[:] y_,
-
 1893:                                                 BlockIndex yindex,
-
 1894:                                                 float64_t yfill):
-
 1895:     '''
-
 1896:     Binary operator on BlockIndex objects with fill values
-
 1897:     '''
-
 1898: 
-
 1899:     cdef:
-
 1900:         BlockIndex out_index
-
+1901:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+1902:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 1903:         int32_t xloc, yloc
-
+1904:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 1905: 
-
 1906:         float64_t[:] x, y
-
 1907:         ndarray[float64_t, ndim=1] out
-
 1908: 
-
 1909:     # to suppress Cython warning
-
+1910:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1911:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1912: 
-
+1913:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1913, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+1914:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1914, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 1914, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1914, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1914, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1914, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 1914, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1914, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 1914, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1914, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 1914, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 1914, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1915: 
-
 1916:     # Wow, what a hack job. Need to do something about this
-
 1917: 
-
 1918:     # walk the two SparseVectors, adding matched locations...
-
+1919:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+1920:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1921:             # use y fill value
-
+1922:             out[out_i] = __truediv__(x[xi], yfill)
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1923:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1924: 
-
 1925:             # advance x location
-
+1926:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1927:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1928:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1929:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+1930:             continue
-
      goto __pyx_L3_continue;
-
 1931: 
-
+1932:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1933:             # use x fill value
-
+1934:             out[out_i] = __truediv__(xfill, y[yi])
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+1935:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1936: 
-
 1937:             # advance y location
-
+1938:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1939:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1940:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1941:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+1942:             continue
-
      goto __pyx_L3_continue;
-
 1943: 
-
+1944:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+1945:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 1946: 
-
 1947:         # each index in the out_index had to come from either x, y, or both
-
+1948:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+1949:             out[out_i] = __truediv__(x[xi], y[yi])
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1950:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1951:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1952: 
-
 1953:             # advance both locations
-
+1954:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1955:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1956:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1957:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1958: 
-
+1959:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1960:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1961:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1962:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1963: 
-
+1964:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 1965:             # use y fill value
-
+1966:             out[out_i] = __truediv__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+1967:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1968: 
-
 1969:             # advance x location
-
+1970:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1971:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1972:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1973:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1974:         else:
-
 1975:             # use x fill value
-
+1976:             out[out_i] = __truediv__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+1977:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1978: 
-
 1979:             # advance y location
-
+1980:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1981:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+1982:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1983:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1984: 
-
+1985:     return out, out_index, __truediv__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 1985, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1985, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 1986: 
-
 1987: 
-
 1988: @cython.wraparound(False)
-
 1989: @cython.boundscheck(False)
-
+1990: cdef inline tuple int_op_truediv_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_truediv_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_truediv_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 1991:                                               IntIndex xindex,
-
 1992:                                               float64_t xfill,
-
 1993:                                               float64_t[:] y_,
-
 1994:                                               IntIndex yindex,
-
 1995:                                               float64_t yfill):
-
 1996:     cdef:
-
 1997:         IntIndex out_index
-
+1998:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 1999:         int32_t xloc, yloc
-
 2000:         int32_t[:] xindices, yindices, out_indices
-
 2001:         float64_t[:] x, y
-
 2002:         ndarray[float64_t, ndim=1] out
-
 2003: 
-
 2004:     # suppress Cython compiler warnings due to inlining
-
+2005:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2006:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2007: 
-
 2008:     # need to do this first to know size of result array
-
+2009:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2009, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+2010:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2010, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2010, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2010, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2010, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2010, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2010, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2010, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2010, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2010, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 2010, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2010, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2011: 
-
+2012:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2012, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2013:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2013, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2014:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2014, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 2015: 
-
 2016:     # walk the two SparseVectors, adding matched locations...
-
+2017:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+2018:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2019:             # use x fill value
-
+2020:             out[out_i] = __truediv__(xfill, y[yi])
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2021:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2022:             continue
-
      goto __pyx_L3_continue;
-
 2023: 
-
+2024:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2025:             # use y fill value
-
+2026:             out[out_i] = __truediv__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2027:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2028:             continue
-
      goto __pyx_L3_continue;
-
 2029: 
-
+2030:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+2031:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 2032: 
-
 2033:         # each index in the out_index had to come from either x, y, or both
-
+2034:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+2035:             out[out_i] = __truediv__(x[xi], y[yi])
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+2036:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2037:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2038:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 2039:             # use y fill value
-
+2040:             out[out_i] = __truediv__(x[xi], yfill)
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2041:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2042:         else:
-
 2043:             # use x fill value
-
+2044:             out[out_i] = __truediv__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+2045:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 2046: 
-
+2047:     return out, out_index, __truediv__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2047, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2047, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2048: 
-
 2049: 
-
+2050: cpdef sparse_truediv_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_43sparse_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_truediv_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_truediv_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_43sparse_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_43sparse_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_truediv_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_truediv_float64", 1, 6, 6, 1); __PYX_ERR(2, 2050, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_truediv_float64", 1, 6, 6, 2); __PYX_ERR(2, 2050, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_truediv_float64", 1, 6, 6, 3); __PYX_ERR(2, 2050, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_truediv_float64", 1, 6, 6, 4); __PYX_ERR(2, 2050, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_truediv_float64", 1, 6, 6, 5); __PYX_ERR(2, 2050, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_truediv_float64") < 0)) __PYX_ERR(2, 2050, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 2050, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2051, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 2052, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2053, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_truediv_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2050, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 2051, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2053, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_42sparse_truediv_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_42sparse_truediv_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_truediv_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 2050, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2050, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_truediv_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2050, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2051:                                   SparseIndex xindex, float64_t xfill,
-
 2052:                                   float64_t[:] y,
-
 2053:                                   SparseIndex yindex, float64_t yfill):
-
 2054: 
-
+2055:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+2056:         return block_op_truediv_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2056, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2056, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2056, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_truediv_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2056, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+2057:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2057, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2057, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2057, __pyx_L1_error)
-
+2058:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+2059:         return int_op_truediv_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2059, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2059, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2059, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_truediv_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2059, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+2060:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2060, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2060, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2060, __pyx_L1_error)
-
 2061:     else:
-
+2062:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 2062, __pyx_L1_error)
-  }
-
 2063: 
-
 2064: 
-
+2065: cpdef sparse_fill_truediv_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_45sparse_fill_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_truediv_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_truediv_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_45sparse_fill_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_45sparse_fill_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_truediv_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_truediv_float64", 1, 2, 2, 1); __PYX_ERR(2, 2065, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_truediv_float64") < 0)) __PYX_ERR(2, 2065, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2065, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2066, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_truediv_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2065, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_44sparse_fill_truediv_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_44sparse_fill_truediv_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_truediv_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_truediv_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2065, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_truediv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2066:                                        float64_t yfill):
-
+2067:     return __truediv__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2067, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2068: 
-
 2069: 
-
 2070: @cython.wraparound(False)
-
 2071: @cython.boundscheck(False)
-
+2072: cdef inline tuple block_op_truediv_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_truediv_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_truediv_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2073:                                                 BlockIndex xindex,
-
 2074:                                                 int64_t xfill,
-
 2075:                                                 int64_t[:] y_,
-
 2076:                                                 BlockIndex yindex,
-
 2077:                                                 int64_t yfill):
-
 2078:     '''
-
 2079:     Binary operator on BlockIndex objects with fill values
-
 2080:     '''
-
 2081: 
-
 2082:     cdef:
-
 2083:         BlockIndex out_index
-
+2084:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+2085:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 2086:         int32_t xloc, yloc
-
+2087:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 2088: 
-
 2089:         int64_t[:] x, y
-
 2090:         ndarray[float64_t, ndim=1] out
-
 2091: 
-
 2092:     # to suppress Cython warning
-
+2093:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2094:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2095: 
-
+2096:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2096, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+2097:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2097, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2097, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2097, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2097, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2097, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2097, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2097, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2097, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2097, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 2097, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2097, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2098: 
-
 2099:     # Wow, what a hack job. Need to do something about this
-
 2100: 
-
 2101:     # walk the two SparseVectors, adding matched locations...
-
+2102:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+2103:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2104:             # use y fill value
-
+2105:             out[out_i] = __truediv__(x[xi], yfill)
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2106:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2107: 
-
 2108:             # advance x location
-
+2109:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2110:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2111:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2112:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+2113:             continue
-
      goto __pyx_L3_continue;
-
 2114: 
-
+2115:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2116:             # use x fill value
-
+2117:             out[out_i] = __truediv__(xfill, y[yi])
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+2118:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2119: 
-
 2120:             # advance y location
-
+2121:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2122:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2123:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2124:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+2125:             continue
-
      goto __pyx_L3_continue;
-
 2126: 
-
+2127:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+2128:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 2129: 
-
 2130:         # each index in the out_index had to come from either x, y, or both
-
+2131:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+2132:             out[out_i] = __truediv__(x[xi], y[yi])
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2133:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2134:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2135: 
-
 2136:             # advance both locations
-
+2137:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2138:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2139:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2140:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2141: 
-
+2142:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2143:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2144:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2145:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2146: 
-
+2147:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 2148:             # use y fill value
-
+2149:             out[out_i] = __truediv__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2150:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2151: 
-
 2152:             # advance x location
-
+2153:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2154:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2155:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2156:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2157:         else:
-
 2158:             # use x fill value
-
+2159:             out[out_i] = __truediv__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2160:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2161: 
-
 2162:             # advance y location
-
+2163:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2164:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+2165:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2166:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2167: 
-
+2168:     return out, out_index, __truediv__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2168, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2168, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2169: 
-
 2170: 
-
 2171: @cython.wraparound(False)
-
 2172: @cython.boundscheck(False)
-
+2173: cdef inline tuple int_op_truediv_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_truediv_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_truediv_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2174:                                               IntIndex xindex,
-
 2175:                                               int64_t xfill,
-
 2176:                                               int64_t[:] y_,
-
 2177:                                               IntIndex yindex,
-
 2178:                                               int64_t yfill):
-
 2179:     cdef:
-
 2180:         IntIndex out_index
-
+2181:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 2182:         int32_t xloc, yloc
-
 2183:         int32_t[:] xindices, yindices, out_indices
-
 2184:         int64_t[:] x, y
-
 2185:         ndarray[float64_t, ndim=1] out
-
 2186: 
-
 2187:     # suppress Cython compiler warnings due to inlining
-
+2188:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2189:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2190: 
-
 2191:     # need to do this first to know size of result array
-
+2192:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2192, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+2193:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2193, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2193, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2193, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2193, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2193, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2193, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2193, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2193, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2193, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 2193, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2193, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2194: 
-
+2195:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2195, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2196:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2196, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2197:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2197, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 2198: 
-
 2199:     # walk the two SparseVectors, adding matched locations...
-
+2200:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+2201:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2202:             # use x fill value
-
+2203:             out[out_i] = __truediv__(xfill, y[yi])
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2204:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2205:             continue
-
      goto __pyx_L3_continue;
-
 2206: 
-
+2207:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2208:             # use y fill value
-
+2209:             out[out_i] = __truediv__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2210:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2211:             continue
-
      goto __pyx_L3_continue;
-
 2212: 
-
+2213:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+2214:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 2215: 
-
 2216:         # each index in the out_index had to come from either x, y, or both
-
+2217:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+2218:             out[out_i] = __truediv__(x[xi], y[yi])
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+2219:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2220:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2221:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 2222:             # use y fill value
-
+2223:             out[out_i] = __truediv__(x[xi], yfill)
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2224:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2225:         else:
-
 2226:             # use x fill value
-
+2227:             out[out_i] = __truediv__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+2228:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 2229: 
-
+2230:     return out, out_index, __truediv__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2230, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2230, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2231: 
-
 2232: 
-
+2233: cpdef sparse_truediv_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_47sparse_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_truediv_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_truediv_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_47sparse_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_47sparse_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_truediv_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_truediv_int64", 1, 6, 6, 1); __PYX_ERR(2, 2233, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_truediv_int64", 1, 6, 6, 2); __PYX_ERR(2, 2233, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_truediv_int64", 1, 6, 6, 3); __PYX_ERR(2, 2233, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_truediv_int64", 1, 6, 6, 4); __PYX_ERR(2, 2233, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_truediv_int64", 1, 6, 6, 5); __PYX_ERR(2, 2233, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_truediv_int64") < 0)) __PYX_ERR(2, 2233, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 2233, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2234, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 2235, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2236, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_truediv_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2233, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 2234, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2236, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_46sparse_truediv_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_46sparse_truediv_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_truediv_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 2233, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2233, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_truediv_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2233, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2234:                                   SparseIndex xindex, int64_t xfill,
-
 2235:                                   int64_t[:] y,
-
 2236:                                   SparseIndex yindex, int64_t yfill):
-
 2237: 
-
+2238:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+2239:         return block_op_truediv_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2239, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2239, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2239, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_truediv_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2239, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+2240:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2240, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2240, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2240, __pyx_L1_error)
-
+2241:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+2242:         return int_op_truediv_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2242, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2242, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2242, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_truediv_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2242, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+2243:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2243, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2243, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2243, __pyx_L1_error)
-
 2244:     else:
-
+2245:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 2245, __pyx_L1_error)
-  }
-
 2246: 
-
 2247: 
-
+2248: cpdef sparse_fill_truediv_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_49sparse_fill_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_truediv_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_truediv_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_49sparse_fill_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_49sparse_fill_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_truediv_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_truediv_int64", 1, 2, 2, 1); __PYX_ERR(2, 2248, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_truediv_int64") < 0)) __PYX_ERR(2, 2248, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2248, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2249, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_truediv_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2248, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_48sparse_fill_truediv_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_48sparse_fill_truediv_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_truediv_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_truediv_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2248, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_truediv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2249:                                        int64_t yfill):
-
+2250:     return __truediv__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyFloat_FromDouble(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___truediv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2250, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2251: 
-
 2252: 
-
 2253: @cython.wraparound(False)
-
 2254: @cython.boundscheck(False)
-
+2255: cdef inline tuple block_op_floordiv_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_floordiv_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_floordiv_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2256:                                                 BlockIndex xindex,
-
 2257:                                                 float64_t xfill,
-
 2258:                                                 float64_t[:] y_,
-
 2259:                                                 BlockIndex yindex,
-
 2260:                                                 float64_t yfill):
-
 2261:     '''
-
 2262:     Binary operator on BlockIndex objects with fill values
-
 2263:     '''
-
 2264: 
-
 2265:     cdef:
-
 2266:         BlockIndex out_index
-
+2267:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+2268:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 2269:         int32_t xloc, yloc
-
+2270:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 2271: 
-
 2272:         float64_t[:] x, y
-
 2273:         ndarray[float64_t, ndim=1] out
-
 2274: 
-
 2275:     # to suppress Cython warning
-
+2276:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2277:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2278: 
-
+2279:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2279, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+2280:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2280, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2280, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2280, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2280, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2280, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2280, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2280, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2280, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2280, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 2280, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2280, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2281: 
-
 2282:     # Wow, what a hack job. Need to do something about this
-
 2283: 
-
 2284:     # walk the two SparseVectors, adding matched locations...
-
+2285:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+2286:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2287:             # use y fill value
-
+2288:             out[out_i] = __floordiv__(x[xi], yfill)
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2289:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2290: 
-
 2291:             # advance x location
-
+2292:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2293:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2294:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2295:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+2296:             continue
-
      goto __pyx_L3_continue;
-
 2297: 
-
+2298:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2299:             # use x fill value
-
+2300:             out[out_i] = __floordiv__(xfill, y[yi])
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+2301:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2302: 
-
 2303:             # advance y location
-
+2304:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2305:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2306:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2307:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+2308:             continue
-
      goto __pyx_L3_continue;
-
 2309: 
-
+2310:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+2311:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 2312: 
-
 2313:         # each index in the out_index had to come from either x, y, or both
-
+2314:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+2315:             out[out_i] = __floordiv__(x[xi], y[yi])
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2316:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2317:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2318: 
-
 2319:             # advance both locations
-
+2320:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2321:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2322:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2323:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2324: 
-
+2325:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2326:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2327:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2328:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2329: 
-
+2330:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 2331:             # use y fill value
-
+2332:             out[out_i] = __floordiv__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2333:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2334: 
-
 2335:             # advance x location
-
+2336:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2337:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2338:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2339:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2340:         else:
-
 2341:             # use x fill value
-
+2342:             out[out_i] = __floordiv__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2343:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2344: 
-
 2345:             # advance y location
-
+2346:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2347:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+2348:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2349:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2350: 
-
+2351:     return out, out_index, __floordiv__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2351, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2351, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2352: 
-
 2353: 
-
 2354: @cython.wraparound(False)
-
 2355: @cython.boundscheck(False)
-
+2356: cdef inline tuple int_op_floordiv_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_floordiv_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_floordiv_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2357:                                               IntIndex xindex,
-
 2358:                                               float64_t xfill,
-
 2359:                                               float64_t[:] y_,
-
 2360:                                               IntIndex yindex,
-
 2361:                                               float64_t yfill):
-
 2362:     cdef:
-
 2363:         IntIndex out_index
-
+2364:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 2365:         int32_t xloc, yloc
-
 2366:         int32_t[:] xindices, yindices, out_indices
-
 2367:         float64_t[:] x, y
-
 2368:         ndarray[float64_t, ndim=1] out
-
 2369: 
-
 2370:     # suppress Cython compiler warnings due to inlining
-
+2371:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2372:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2373: 
-
 2374:     # need to do this first to know size of result array
-
+2375:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2375, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+2376:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2376, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2376, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2376, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2376, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2376, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2376, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2376, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2376, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2376, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 2376, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2376, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2377: 
-
+2378:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2378, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2379:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2379, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2380:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2380, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 2381: 
-
 2382:     # walk the two SparseVectors, adding matched locations...
-
+2383:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+2384:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2385:             # use x fill value
-
+2386:             out[out_i] = __floordiv__(xfill, y[yi])
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2387:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2388:             continue
-
      goto __pyx_L3_continue;
-
 2389: 
-
+2390:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2391:             # use y fill value
-
+2392:             out[out_i] = __floordiv__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2393:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2394:             continue
-
      goto __pyx_L3_continue;
-
 2395: 
-
+2396:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+2397:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 2398: 
-
 2399:         # each index in the out_index had to come from either x, y, or both
-
+2400:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+2401:             out[out_i] = __floordiv__(x[xi], y[yi])
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+2402:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2403:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2404:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 2405:             # use y fill value
-
+2406:             out[out_i] = __floordiv__(x[xi], yfill)
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2407:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2408:         else:
-
 2409:             # use x fill value
-
+2410:             out[out_i] = __floordiv__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+2411:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 2412: 
-
+2413:     return out, out_index, __floordiv__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2413, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2413, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2414: 
-
 2415: 
-
+2416: cpdef sparse_floordiv_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_51sparse_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_floordiv_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_floordiv_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_51sparse_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_51sparse_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_floordiv_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_float64", 1, 6, 6, 1); __PYX_ERR(2, 2416, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_float64", 1, 6, 6, 2); __PYX_ERR(2, 2416, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_float64", 1, 6, 6, 3); __PYX_ERR(2, 2416, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_float64", 1, 6, 6, 4); __PYX_ERR(2, 2416, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_float64", 1, 6, 6, 5); __PYX_ERR(2, 2416, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_floordiv_float64") < 0)) __PYX_ERR(2, 2416, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 2416, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2417, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 2418, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2419, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_floordiv_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2416, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 2417, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2419, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_50sparse_floordiv_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_50sparse_floordiv_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_floordiv_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 2416, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2416, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_floordiv_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2416, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2417:                                   SparseIndex xindex, float64_t xfill,
-
 2418:                                   float64_t[:] y,
-
 2419:                                   SparseIndex yindex, float64_t yfill):
-
 2420: 
-
+2421:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+2422:         return block_op_floordiv_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2422, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2422, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2422, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_floordiv_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2422, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+2423:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2423, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2423, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2423, __pyx_L1_error)
-
+2424:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+2425:         return int_op_floordiv_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2425, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2425, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2425, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_floordiv_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2425, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+2426:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2426, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2426, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2426, __pyx_L1_error)
-
 2427:     else:
-
+2428:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 2428, __pyx_L1_error)
-  }
-
 2429: 
-
 2430: 
-
+2431: cpdef sparse_fill_floordiv_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_53sparse_fill_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_floordiv_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_floordiv_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_53sparse_fill_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_53sparse_fill_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_floordiv_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_floordiv_float64", 1, 2, 2, 1); __PYX_ERR(2, 2431, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_floordiv_float64") < 0)) __PYX_ERR(2, 2431, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2431, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2432, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_floordiv_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2431, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_52sparse_fill_floordiv_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_52sparse_fill_floordiv_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_floordiv_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_floordiv_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2431, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_floordiv_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2432:                                        float64_t yfill):
-
+2433:     return __floordiv__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyFloat_FromDouble(__pyx_fuse_0__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2433, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2434: 
-
 2435: 
-
 2436: @cython.wraparound(False)
-
 2437: @cython.boundscheck(False)
-
+2438: cdef inline tuple block_op_floordiv_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_floordiv_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_floordiv_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2439:                                                 BlockIndex xindex,
-
 2440:                                                 int64_t xfill,
-
 2441:                                                 int64_t[:] y_,
-
 2442:                                                 BlockIndex yindex,
-
 2443:                                                 int64_t yfill):
-
 2444:     '''
-
 2445:     Binary operator on BlockIndex objects with fill values
-
 2446:     '''
-
 2447: 
-
 2448:     cdef:
-
 2449:         BlockIndex out_index
-
+2450:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+2451:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 2452:         int32_t xloc, yloc
-
+2453:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 2454: 
-
 2455:         int64_t[:] x, y
-
 2456:         ndarray[int64_t, ndim=1] out
-
 2457: 
-
 2458:     # to suppress Cython warning
-
+2459:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2460:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2461: 
-
+2462:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2462, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+2463:     out = np.empty(out_index.npoints, dtype=np.int64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2463, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2463, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2463, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2463, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2463, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2463, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2463, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2463, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2463, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 2463, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2463, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2464: 
-
 2465:     # Wow, what a hack job. Need to do something about this
-
 2466: 
-
 2467:     # walk the two SparseVectors, adding matched locations...
-
+2468:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+2469:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2470:             # use y fill value
-
+2471:             out[out_i] = __floordiv__(x[xi], yfill)
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2472:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2473: 
-
 2474:             # advance x location
-
+2475:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2476:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2477:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2478:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+2479:             continue
-
      goto __pyx_L3_continue;
-
 2480: 
-
+2481:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2482:             # use x fill value
-
+2483:             out[out_i] = __floordiv__(xfill, y[yi])
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+2484:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2485: 
-
 2486:             # advance y location
-
+2487:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2488:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2489:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2490:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+2491:             continue
-
      goto __pyx_L3_continue;
-
 2492: 
-
+2493:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+2494:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 2495: 
-
 2496:         # each index in the out_index had to come from either x, y, or both
-
+2497:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+2498:             out[out_i] = __floordiv__(x[xi], y[yi])
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2499:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2500:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2501: 
-
 2502:             # advance both locations
-
+2503:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2504:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2505:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2506:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2507: 
-
+2508:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2509:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2510:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2511:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2512: 
-
+2513:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 2514:             # use y fill value
-
+2515:             out[out_i] = __floordiv__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2516:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2517: 
-
 2518:             # advance x location
-
+2519:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2520:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2521:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2522:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2523:         else:
-
 2524:             # use x fill value
-
+2525:             out[out_i] = __floordiv__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2526:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2527: 
-
 2528:             # advance y location
-
+2529:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2530:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+2531:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2532:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2533: 
-
+2534:     return out, out_index, __floordiv__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2534, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2534, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2535: 
-
 2536: 
-
 2537: @cython.wraparound(False)
-
 2538: @cython.boundscheck(False)
-
+2539: cdef inline tuple int_op_floordiv_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_floordiv_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_floordiv_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2540:                                               IntIndex xindex,
-
 2541:                                               int64_t xfill,
-
 2542:                                               int64_t[:] y_,
-
 2543:                                               IntIndex yindex,
-
 2544:                                               int64_t yfill):
-
 2545:     cdef:
-
 2546:         IntIndex out_index
-
+2547:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 2548:         int32_t xloc, yloc
-
 2549:         int32_t[:] xindices, yindices, out_indices
-
 2550:         int64_t[:] x, y
-
 2551:         ndarray[int64_t, ndim=1] out
-
 2552: 
-
 2553:     # suppress Cython compiler warnings due to inlining
-
+2554:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2555:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2556: 
-
 2557:     # need to do this first to know size of result array
-
+2558:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2558, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+2559:     out = np.empty(out_index.npoints, dtype=np.int64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2559, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2559, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2559, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2559, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2559, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2559, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2559, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2559, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2559, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 2559, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2559, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2560: 
-
+2561:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2561, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2562:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2562, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2563:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2563, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 2564: 
-
 2565:     # walk the two SparseVectors, adding matched locations...
-
+2566:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+2567:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2568:             # use x fill value
-
+2569:             out[out_i] = __floordiv__(xfill, y[yi])
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2570:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2571:             continue
-
      goto __pyx_L3_continue;
-
 2572: 
-
+2573:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2574:             # use y fill value
-
+2575:             out[out_i] = __floordiv__(x[xi], yfill)
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2576:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2577:             continue
-
      goto __pyx_L3_continue;
-
 2578: 
-
+2579:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+2580:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 2581: 
-
 2582:         # each index in the out_index had to come from either x, y, or both
-
+2583:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+2584:             out[out_i] = __floordiv__(x[xi], y[yi])
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+2585:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2586:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2587:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 2588:             # use y fill value
-
+2589:             out[out_i] = __floordiv__(x[xi], yfill)
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2590:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2591:         else:
-
 2592:             # use x fill value
-
+2593:             out[out_i] = __floordiv__(xfill, y[yi])
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+2594:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 2595: 
-
+2596:     return out, out_index, __floordiv__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2596, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2596, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2597: 
-
 2598: 
-
+2599: cpdef sparse_floordiv_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_55sparse_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_floordiv_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_floordiv_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_55sparse_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_55sparse_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_floordiv_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_int64", 1, 6, 6, 1); __PYX_ERR(2, 2599, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_int64", 1, 6, 6, 2); __PYX_ERR(2, 2599, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_int64", 1, 6, 6, 3); __PYX_ERR(2, 2599, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_int64", 1, 6, 6, 4); __PYX_ERR(2, 2599, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_floordiv_int64", 1, 6, 6, 5); __PYX_ERR(2, 2599, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_floordiv_int64") < 0)) __PYX_ERR(2, 2599, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 2599, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2600, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 2601, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2602, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_floordiv_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2599, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 2600, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2602, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_54sparse_floordiv_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_54sparse_floordiv_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_floordiv_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 2599, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2599, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_floordiv_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2599, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2600:                                   SparseIndex xindex, int64_t xfill,
-
 2601:                                   int64_t[:] y,
-
 2602:                                   SparseIndex yindex, int64_t yfill):
-
 2603: 
-
+2604:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+2605:         return block_op_floordiv_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2605, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2605, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2605, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_floordiv_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2605, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+2606:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2606, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2606, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2606, __pyx_L1_error)
-
+2607:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+2608:         return int_op_floordiv_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2608, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2608, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2608, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_floordiv_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2608, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+2609:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2609, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2609, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2609, __pyx_L1_error)
-
 2610:     else:
-
+2611:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 2611, __pyx_L1_error)
-  }
-
 2612: 
-
 2613: 
-
+2614: cpdef sparse_fill_floordiv_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_57sparse_fill_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_floordiv_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_floordiv_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_57sparse_fill_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_57sparse_fill_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_floordiv_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_floordiv_int64", 1, 2, 2, 1); __PYX_ERR(2, 2614, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_floordiv_int64") < 0)) __PYX_ERR(2, 2614, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2614, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2615, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_floordiv_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2614, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_56sparse_fill_floordiv_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_56sparse_fill_floordiv_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_floordiv_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_floordiv_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2614, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_floordiv_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2615:                                        int64_t yfill):
-
+2616:     return __floordiv__(xfill, yfill)
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int64(__pyx_fuse_1__pyx_f_6pandas_5_libs_6sparse___floordiv__(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2616, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2617: 
-
 2618: 
-
 2619: @cython.wraparound(False)
-
 2620: @cython.boundscheck(False)
-
+2621: cdef inline tuple block_op_pow_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_pow_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_pow_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2622:                                                 BlockIndex xindex,
-
 2623:                                                 float64_t xfill,
-
 2624:                                                 float64_t[:] y_,
-
 2625:                                                 BlockIndex yindex,
-
 2626:                                                 float64_t yfill):
-
 2627:     '''
-
 2628:     Binary operator on BlockIndex objects with fill values
-
 2629:     '''
-
 2630: 
-
 2631:     cdef:
-
 2632:         BlockIndex out_index
-
+2633:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+2634:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 2635:         int32_t xloc, yloc
-
+2636:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 2637: 
-
 2638:         float64_t[:] x, y
-
 2639:         ndarray[float64_t, ndim=1] out
-
 2640: 
-
 2641:     # to suppress Cython warning
-
+2642:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2643:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2644: 
-
+2645:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2645, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+2646:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2646, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2646, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2646, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2646, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2646, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2646, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2646, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2646, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2646, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 2646, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2646, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2647: 
-
 2648:     # Wow, what a hack job. Need to do something about this
-
 2649: 
-
 2650:     # walk the two SparseVectors, adding matched locations...
-
+2651:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+2652:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2653:             # use y fill value
-
+2654:             out[out_i] = x[xi] ** yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = pow((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2655:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2656: 
-
 2657:             # advance x location
-
+2658:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2659:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2660:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2661:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+2662:             continue
-
      goto __pyx_L3_continue;
-
 2663: 
-
+2664:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2665:             # use x fill value
-
+2666:             out[out_i] = xfill ** y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = pow(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+2667:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2668: 
-
 2669:             # advance y location
-
+2670:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2671:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2672:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2673:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+2674:             continue
-
      goto __pyx_L3_continue;
-
 2675: 
-
+2676:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+2677:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 2678: 
-
 2679:         # each index in the out_index had to come from either x, y, or both
-
+2680:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+2681:             out[out_i] = x[xi] ** y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = pow((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2682:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2683:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2684: 
-
 2685:             # advance both locations
-
+2686:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2687:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2688:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2689:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2690: 
-
+2691:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2692:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2693:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2694:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2695: 
-
+2696:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 2697:             # use y fill value
-
+2698:             out[out_i] = x[xi] ** yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = pow((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2699:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2700: 
-
 2701:             # advance x location
-
+2702:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2703:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2704:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2705:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2706:         else:
-
 2707:             # use x fill value
-
+2708:             out[out_i] = xfill ** y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = pow(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2709:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2710: 
-
 2711:             # advance y location
-
+2712:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2713:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+2714:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2715:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2716: 
-
+2717:     return out, out_index, xfill ** yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(pow(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2717, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2717, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2718: 
-
 2719: 
-
 2720: @cython.wraparound(False)
-
 2721: @cython.boundscheck(False)
-
+2722: cdef inline tuple int_op_pow_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_pow_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_pow_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2723:                                               IntIndex xindex,
-
 2724:                                               float64_t xfill,
-
 2725:                                               float64_t[:] y_,
-
 2726:                                               IntIndex yindex,
-
 2727:                                               float64_t yfill):
-
 2728:     cdef:
-
 2729:         IntIndex out_index
-
+2730:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 2731:         int32_t xloc, yloc
-
 2732:         int32_t[:] xindices, yindices, out_indices
-
 2733:         float64_t[:] x, y
-
 2734:         ndarray[float64_t, ndim=1] out
-
 2735: 
-
 2736:     # suppress Cython compiler warnings due to inlining
-
+2737:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2738:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2739: 
-
 2740:     # need to do this first to know size of result array
-
+2741:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2741, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+2742:     out = np.empty(out_index.npoints, dtype=np.float64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2742, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2742, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2742, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2742, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2742, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2742, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_float64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2742, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2742, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2742, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 2742, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_float64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2742, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2743: 
-
+2744:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2744, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2745:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2745, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2746:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2746, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 2747: 
-
 2748:     # walk the two SparseVectors, adding matched locations...
-
+2749:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+2750:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2751:             # use x fill value
-
+2752:             out[out_i] = xfill ** y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = pow(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2753:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2754:             continue
-
      goto __pyx_L3_continue;
-
 2755: 
-
+2756:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2757:             # use y fill value
-
+2758:             out[out_i] = x[xi] ** yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = pow((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2759:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2760:             continue
-
      goto __pyx_L3_continue;
-
 2761: 
-
+2762:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+2763:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 2764: 
-
 2765:         # each index in the out_index had to come from either x, y, or both
-
+2766:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+2767:             out[out_i] = x[xi] ** y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = pow((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+2768:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2769:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2770:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 2771:             # use y fill value
-
+2772:             out[out_i] = x[xi] ** yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = pow((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2773:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2774:         else:
-
 2775:             # use x fill value
-
+2776:             out[out_i] = xfill ** y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_float64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = pow(__pyx_v_xfill, (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+2777:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 2778: 
-
+2779:     return out, out_index, xfill ** yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = PyFloat_FromDouble(pow(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2779, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2779, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2780: 
-
 2781: 
-
+2782: cpdef sparse_pow_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_59sparse_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_pow_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_pow_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_59sparse_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_59sparse_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_pow_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_pow_float64", 1, 6, 6, 1); __PYX_ERR(2, 2782, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_pow_float64", 1, 6, 6, 2); __PYX_ERR(2, 2782, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_pow_float64", 1, 6, 6, 3); __PYX_ERR(2, 2782, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_pow_float64", 1, 6, 6, 4); __PYX_ERR(2, 2782, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_pow_float64", 1, 6, 6, 5); __PYX_ERR(2, 2782, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_pow_float64") < 0)) __PYX_ERR(2, 2782, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 2782, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2783, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 2784, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2785, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_pow_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2782, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 2783, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2785, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_58sparse_pow_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_58sparse_pow_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_pow_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 2782, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2782, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_pow_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2782, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2783:                                   SparseIndex xindex, float64_t xfill,
-
 2784:                                   float64_t[:] y,
-
 2785:                                   SparseIndex yindex, float64_t yfill):
-
 2786: 
-
+2787:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+2788:         return block_op_pow_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2788, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2788, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2788, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_pow_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2788, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+2789:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2789, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2789, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2789, __pyx_L1_error)
-
+2790:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+2791:         return int_op_pow_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2791, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2791, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2791, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_pow_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2791, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+2792:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2792, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2792, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2792, __pyx_L1_error)
-
 2793:     else:
-
+2794:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 2794, __pyx_L1_error)
-  }
-
 2795: 
-
 2796: 
-
+2797: cpdef sparse_fill_pow_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_61sparse_fill_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_pow_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_pow_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_61sparse_fill_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_61sparse_fill_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_pow_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_pow_float64", 1, 2, 2, 1); __PYX_ERR(2, 2797, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_pow_float64") < 0)) __PYX_ERR(2, 2797, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2797, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2798, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_pow_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2797, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_60sparse_fill_pow_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_60sparse_fill_pow_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_pow_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_pow_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2797, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_pow_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2798:                                        float64_t yfill):
-
+2799:     return xfill ** yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyFloat_FromDouble(pow(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2799, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2800: 
-
 2801: 
-
 2802: @cython.wraparound(False)
-
 2803: @cython.boundscheck(False)
-
+2804: cdef inline tuple block_op_pow_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_pow_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_pow_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2805:                                                 BlockIndex xindex,
-
 2806:                                                 int64_t xfill,
-
 2807:                                                 int64_t[:] y_,
-
 2808:                                                 BlockIndex yindex,
-
 2809:                                                 int64_t yfill):
-
 2810:     '''
-
 2811:     Binary operator on BlockIndex objects with fill values
-
 2812:     '''
-
 2813: 
-
 2814:     cdef:
-
 2815:         BlockIndex out_index
-
+2816:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+2817:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 2818:         int32_t xloc, yloc
-
+2819:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 2820: 
-
 2821:         int64_t[:] x, y
-
 2822:         ndarray[int64_t, ndim=1] out
-
 2823: 
-
 2824:     # to suppress Cython warning
-
+2825:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2826:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2827: 
-
+2828:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2828, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+2829:     out = np.empty(out_index.npoints, dtype=np.int64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2829, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2829, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2829, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2829, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2829, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2829, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2829, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2829, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2829, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 2829, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2829, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2830: 
-
 2831:     # Wow, what a hack job. Need to do something about this
-
 2832: 
-
 2833:     # walk the two SparseVectors, adding matched locations...
-
+2834:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+2835:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2836:             # use y fill value
-
+2837:             out[out_i] = x[xi] ** yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2838:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2839: 
-
 2840:             # advance x location
-
+2841:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2842:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2843:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2844:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+2845:             continue
-
      goto __pyx_L3_continue;
-
 2846: 
-
+2847:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2848:             # use x fill value
-
+2849:             out[out_i] = xfill ** y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+2850:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2851: 
-
 2852:             # advance y location
-
+2853:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2854:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2855:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2856:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+2857:             continue
-
      goto __pyx_L3_continue;
-
 2858: 
-
+2859:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+2860:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 2861: 
-
 2862:         # each index in the out_index had to come from either x, y, or both
-
+2863:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+2864:             out[out_i] = x[xi] ** y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2865:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2866:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2867: 
-
 2868:             # advance both locations
-
+2869:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2870:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2871:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2872:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2873: 
-
+2874:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2875:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2876:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2877:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2878: 
-
+2879:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 2880:             # use y fill value
-
+2881:             out[out_i] = x[xi] ** yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2882:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2883: 
-
 2884:             # advance x location
-
+2885:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2886:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2887:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2888:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2889:         else:
-
 2890:             # use x fill value
-
+2891:             out[out_i] = xfill ** y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2892:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2893: 
-
 2894:             # advance y location
-
+2895:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2896:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+2897:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2898:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2899: 
-
+2900:     return out, out_index, xfill ** yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2900, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2900, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2901: 
-
 2902: 
-
 2903: @cython.wraparound(False)
-
 2904: @cython.boundscheck(False)
-
+2905: cdef inline tuple int_op_pow_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_pow_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_pow_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2906:                                               IntIndex xindex,
-
 2907:                                               int64_t xfill,
-
 2908:                                               int64_t[:] y_,
-
 2909:                                               IntIndex yindex,
-
 2910:                                               int64_t yfill):
-
 2911:     cdef:
-
 2912:         IntIndex out_index
-
+2913:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 2914:         int32_t xloc, yloc
-
 2915:         int32_t[:] xindices, yindices, out_indices
-
 2916:         int64_t[:] x, y
-
 2917:         ndarray[int64_t, ndim=1] out
-
 2918: 
-
 2919:     # suppress Cython compiler warnings due to inlining
-
+2920:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2921:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2922: 
-
 2923:     # need to do this first to know size of result array
-
+2924:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2924, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+2925:     out = np.empty(out_index.npoints, dtype=np.int64)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2925, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 2925, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2925, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2925, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2925, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2925, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_int64); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2925, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 2925, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2925, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 2925, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_int64_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 2925, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2926: 
-
+2927:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2927, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2928:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2928, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2929:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 2929, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 2930: 
-
 2931:     # walk the two SparseVectors, adding matched locations...
-
+2932:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+2933:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2934:             # use x fill value
-
+2935:             out[out_i] = xfill ** y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+2936:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2937:             continue
-
      goto __pyx_L3_continue;
-
 2938: 
-
+2939:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2940:             # use y fill value
-
+2941:             out[out_i] = x[xi] ** yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2942:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2943:             continue
-
      goto __pyx_L3_continue;
-
 2944: 
-
+2945:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+2946:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 2947: 
-
 2948:         # each index in the out_index had to come from either x, y, or both
-
+2949:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+2950:             out[out_i] = x[xi] ** y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))), (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+2951:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2952:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2953:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 2954:             # use y fill value
-
+2955:             out[out_i] = x[xi] ** yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))), __pyx_v_yfill);
-
+2956:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2957:         else:
-
 2958:             # use x fill value
-
+2959:             out[out_i] = xfill ** y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_int64_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = __Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+2960:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 2961: 
-
+2962:     return out, out_index, xfill ** yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64(__Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2962, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2962, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2963: 
-
 2964: 
-
+2965: cpdef sparse_pow_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_63sparse_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_pow_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_pow_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_63sparse_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_63sparse_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_pow_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_pow_int64", 1, 6, 6, 1); __PYX_ERR(2, 2965, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_pow_int64", 1, 6, 6, 2); __PYX_ERR(2, 2965, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_pow_int64", 1, 6, 6, 3); __PYX_ERR(2, 2965, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_pow_int64", 1, 6, 6, 4); __PYX_ERR(2, 2965, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_pow_int64", 1, 6, 6, 5); __PYX_ERR(2, 2965, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_pow_int64") < 0)) __PYX_ERR(2, 2965, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 2965, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2966, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 2967, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2968, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_pow_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2965, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 2966, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2968, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_62sparse_pow_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_62sparse_pow_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_pow_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 2965, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2965, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_pow_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2965, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2966:                                   SparseIndex xindex, int64_t xfill,
-
 2967:                                   int64_t[:] y,
-
 2968:                                   SparseIndex yindex, int64_t yfill):
-
 2969: 
-
+2970:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+2971:         return block_op_pow_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2971, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2971, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2971, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_pow_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2971, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+2972:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2972, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2972, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 2972, __pyx_L1_error)
-
+2973:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+2974:         return int_op_pow_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2974, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 2974, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2974, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_pow_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2974, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+2975:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2975, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 2975, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 2975, __pyx_L1_error)
-
 2976:     else:
-
+2977:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 2977, __pyx_L1_error)
-  }
-
 2978: 
-
 2979: 
-
+2980: cpdef sparse_fill_pow_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_65sparse_fill_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_pow_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_pow_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_65sparse_fill_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_65sparse_fill_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_pow_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_pow_int64", 1, 2, 2, 1); __PYX_ERR(2, 2980, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_pow_int64") < 0)) __PYX_ERR(2, 2980, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2980, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 2981, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_pow_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 2980, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_64sparse_fill_pow_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_64sparse_fill_pow_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_pow_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_pow_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2980, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_pow_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2981:                                        int64_t yfill):
-
+2982:     return xfill ** yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int64(__Pyx_pow___pyx_t_5numpy_int64_t(__pyx_v_xfill, __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2982, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 2983: 
-
 2984: 
-
 2985: @cython.wraparound(False)
-
 2986: @cython.boundscheck(False)
-
+2987: cdef inline tuple block_op_eq_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_eq_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_eq_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 2988:                                                 BlockIndex xindex,
-
 2989:                                                 float64_t xfill,
-
 2990:                                                 float64_t[:] y_,
-
 2991:                                                 BlockIndex yindex,
-
 2992:                                                 float64_t yfill):
-
 2993:     '''
-
 2994:     Binary operator on BlockIndex objects with fill values
-
 2995:     '''
-
 2996: 
-
 2997:     cdef:
-
 2998:         BlockIndex out_index
-
+2999:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+3000:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 3001:         int32_t xloc, yloc
-
+3002:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 3003: 
-
 3004:         float64_t[:] x, y
-
 3005:         ndarray[uint8_t, ndim=1] out
-
 3006: 
-
 3007:     # to suppress Cython warning
-
+3008:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3009:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3010: 
-
+3011:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3011, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+3012:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3012, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3012, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3012, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3012, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3012, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3012, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3012, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3012, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3012, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 3012, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3012, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3013: 
-
 3014:     # Wow, what a hack job. Need to do something about this
-
 3015: 
-
 3016:     # walk the two SparseVectors, adding matched locations...
-
+3017:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+3018:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3019:             # use y fill value
-
+3020:             out[out_i] = x[xi] == yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
-
+3021:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3022: 
-
 3023:             # advance x location
-
+3024:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3025:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3026:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3027:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+3028:             continue
-
      goto __pyx_L3_continue;
-
 3029: 
-
+3030:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3031:             # use x fill value
-
+3032:             out[out_i] = xfill == y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+3033:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3034: 
-
 3035:             # advance y location
-
+3036:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3037:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3038:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3039:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+3040:             continue
-
      goto __pyx_L3_continue;
-
 3041: 
-
+3042:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+3043:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 3044: 
-
 3045:         # each index in the out_index had to come from either x, y, or both
-
+3046:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+3047:             out[out_i] = x[xi] == y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) == (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3048:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3049:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3050: 
-
 3051:             # advance both locations
-
+3052:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3053:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3054:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3055:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3056: 
-
+3057:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3058:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3059:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3060:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3061: 
-
+3062:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 3063:             # use y fill value
-
+3064:             out[out_i] = x[xi] == yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
-
+3065:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3066: 
-
 3067:             # advance x location
-
+3068:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3069:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3070:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3071:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3072:         else:
-
 3073:             # use x fill value
-
+3074:             out[out_i] = xfill == y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3075:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3076: 
-
 3077:             # advance y location
-
+3078:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3079:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+3080:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3081:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3082: 
-
+3083:     return out, out_index, xfill == yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill == __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3083, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3083, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3084: 
-
 3085: 
-
 3086: @cython.wraparound(False)
-
 3087: @cython.boundscheck(False)
-
+3088: cdef inline tuple int_op_eq_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_eq_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_eq_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3089:                                               IntIndex xindex,
-
 3090:                                               float64_t xfill,
-
 3091:                                               float64_t[:] y_,
-
 3092:                                               IntIndex yindex,
-
 3093:                                               float64_t yfill):
-
 3094:     cdef:
-
 3095:         IntIndex out_index
-
+3096:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 3097:         int32_t xloc, yloc
-
 3098:         int32_t[:] xindices, yindices, out_indices
-
 3099:         float64_t[:] x, y
-
 3100:         ndarray[uint8_t, ndim=1] out
-
 3101: 
-
 3102:     # suppress Cython compiler warnings due to inlining
-
+3103:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3104:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3105: 
-
 3106:     # need to do this first to know size of result array
-
+3107:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3107, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+3108:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3108, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3108, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3108, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3108, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3108, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3108, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3108, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3108, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3108, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 3108, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3108, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3109: 
-
+3110:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3110, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3111:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3111, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3112:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3112, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 3113: 
-
 3114:     # walk the two SparseVectors, adding matched locations...
-
+3115:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+3116:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3117:             # use x fill value
-
+3118:             out[out_i] = xfill == y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3119:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3120:             continue
-
      goto __pyx_L3_continue;
-
 3121: 
-
+3122:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3123:             # use y fill value
-
+3124:             out[out_i] = x[xi] == yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
-
+3125:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3126:             continue
-
      goto __pyx_L3_continue;
-
 3127: 
-
+3128:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+3129:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 3130: 
-
 3131:         # each index in the out_index had to come from either x, y, or both
-
+3132:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+3133:             out[out_i] = x[xi] == y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) == (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+3134:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3135:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3136:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 3137:             # use y fill value
-
+3138:             out[out_i] = x[xi] == yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
-
+3139:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3140:         else:
-
 3141:             # use x fill value
-
+3142:             out[out_i] = xfill == y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+3143:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 3144: 
-
+3145:     return out, out_index, xfill == yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill == __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3145, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3145, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3146: 
-
 3147: 
-
+3148: cpdef sparse_eq_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_67sparse_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_eq_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_eq_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_67sparse_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_67sparse_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_eq_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_eq_float64", 1, 6, 6, 1); __PYX_ERR(2, 3148, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_eq_float64", 1, 6, 6, 2); __PYX_ERR(2, 3148, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_eq_float64", 1, 6, 6, 3); __PYX_ERR(2, 3148, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_eq_float64", 1, 6, 6, 4); __PYX_ERR(2, 3148, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_eq_float64", 1, 6, 6, 5); __PYX_ERR(2, 3148, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_eq_float64") < 0)) __PYX_ERR(2, 3148, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 3148, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3149, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 3150, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3151, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_eq_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3148, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 3149, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3151, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_66sparse_eq_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_66sparse_eq_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_eq_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 3148, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3148, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_eq_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3148, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3149:                                   SparseIndex xindex, float64_t xfill,
-
 3150:                                   float64_t[:] y,
-
 3151:                                   SparseIndex yindex, float64_t yfill):
-
 3152: 
-
+3153:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+3154:         return block_op_eq_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3154, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3154, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3154, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_eq_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3154, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+3155:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3155, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3155, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3155, __pyx_L1_error)
-
+3156:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+3157:         return int_op_eq_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3157, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3157, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3157, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_eq_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3157, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+3158:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3158, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3158, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3158, __pyx_L1_error)
-
 3159:     else:
-
+3160:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 3160, __pyx_L1_error)
-  }
-
 3161: 
-
 3162: 
-
+3163: cpdef sparse_fill_eq_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_69sparse_fill_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_eq_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_eq_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_69sparse_fill_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_69sparse_fill_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_eq_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_eq_float64", 1, 2, 2, 1); __PYX_ERR(2, 3163, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_eq_float64") < 0)) __PYX_ERR(2, 3163, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3163, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3164, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_eq_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3163, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_68sparse_fill_eq_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_68sparse_fill_eq_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_eq_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_eq_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3163, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_eq_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3164:                                        float64_t yfill):
-
+3165:     return xfill == yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill == __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3165, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3166: 
-
 3167: 
-
 3168: @cython.wraparound(False)
-
 3169: @cython.boundscheck(False)
-
+3170: cdef inline tuple block_op_eq_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_eq_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_eq_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3171:                                                 BlockIndex xindex,
-
 3172:                                                 int64_t xfill,
-
 3173:                                                 int64_t[:] y_,
-
 3174:                                                 BlockIndex yindex,
-
 3175:                                                 int64_t yfill):
-
 3176:     '''
-
 3177:     Binary operator on BlockIndex objects with fill values
-
 3178:     '''
-
 3179: 
-
 3180:     cdef:
-
 3181:         BlockIndex out_index
-
+3182:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+3183:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 3184:         int32_t xloc, yloc
-
+3185:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 3186: 
-
 3187:         int64_t[:] x, y
-
 3188:         ndarray[uint8_t, ndim=1] out
-
 3189: 
-
 3190:     # to suppress Cython warning
-
+3191:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3192:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3193: 
-
+3194:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3194, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+3195:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3195, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3195, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3195, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3195, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3195, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3195, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3195, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3195, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3195, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 3195, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3195, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3196: 
-
 3197:     # Wow, what a hack job. Need to do something about this
-
 3198: 
-
 3199:     # walk the two SparseVectors, adding matched locations...
-
+3200:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+3201:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3202:             # use y fill value
-
+3203:             out[out_i] = x[xi] == yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
-
+3204:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3205: 
-
 3206:             # advance x location
-
+3207:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3208:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3209:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3210:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+3211:             continue
-
      goto __pyx_L3_continue;
-
 3212: 
-
+3213:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3214:             # use x fill value
-
+3215:             out[out_i] = xfill == y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+3216:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3217: 
-
 3218:             # advance y location
-
+3219:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3220:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3221:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3222:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+3223:             continue
-
      goto __pyx_L3_continue;
-
 3224: 
-
+3225:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+3226:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 3227: 
-
 3228:         # each index in the out_index had to come from either x, y, or both
-
+3229:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+3230:             out[out_i] = x[xi] == y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) == (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3231:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3232:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3233: 
-
 3234:             # advance both locations
-
+3235:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3236:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3237:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3238:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3239: 
-
+3240:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3241:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3242:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3243:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3244: 
-
+3245:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 3246:             # use y fill value
-
+3247:             out[out_i] = x[xi] == yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
-
+3248:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3249: 
-
 3250:             # advance x location
-
+3251:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3252:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3253:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3254:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3255:         else:
-
 3256:             # use x fill value
-
+3257:             out[out_i] = xfill == y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3258:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3259: 
-
 3260:             # advance y location
-
+3261:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3262:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+3263:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3264:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3265: 
-
+3266:     return out, out_index, xfill == yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill == __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3266, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3266, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3267: 
-
 3268: 
-
 3269: @cython.wraparound(False)
-
 3270: @cython.boundscheck(False)
-
+3271: cdef inline tuple int_op_eq_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_eq_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_eq_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3272:                                               IntIndex xindex,
-
 3273:                                               int64_t xfill,
-
 3274:                                               int64_t[:] y_,
-
 3275:                                               IntIndex yindex,
-
 3276:                                               int64_t yfill):
-
 3277:     cdef:
-
 3278:         IntIndex out_index
-
+3279:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 3280:         int32_t xloc, yloc
-
 3281:         int32_t[:] xindices, yindices, out_indices
-
 3282:         int64_t[:] x, y
-
 3283:         ndarray[uint8_t, ndim=1] out
-
 3284: 
-
 3285:     # suppress Cython compiler warnings due to inlining
-
+3286:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3287:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3288: 
-
 3289:     # need to do this first to know size of result array
-
+3290:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3290, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+3291:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3291, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3291, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3291, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3291, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3291, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3291, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3291, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3291, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3291, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 3291, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3291, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3292: 
-
+3293:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3293, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3294:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3294, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3295:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3295, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 3296: 
-
 3297:     # walk the two SparseVectors, adding matched locations...
-
+3298:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+3299:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3300:             # use x fill value
-
+3301:             out[out_i] = xfill == y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3302:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3303:             continue
-
      goto __pyx_L3_continue;
-
 3304: 
-
+3305:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3306:             # use y fill value
-
+3307:             out[out_i] = x[xi] == yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
-
+3308:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3309:             continue
-
      goto __pyx_L3_continue;
-
 3310: 
-
+3311:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+3312:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 3313: 
-
 3314:         # each index in the out_index had to come from either x, y, or both
-
+3315:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+3316:             out[out_i] = x[xi] == y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) == (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+3317:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3318:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3319:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 3320:             # use y fill value
-
+3321:             out[out_i] = x[xi] == yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) == __pyx_v_yfill);
-
+3322:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3323:         else:
-
 3324:             # use x fill value
-
+3325:             out[out_i] = xfill == y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill == (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+3326:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 3327: 
-
+3328:     return out, out_index, xfill == yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill == __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3328, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3328, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3329: 
-
 3330: 
-
+3331: cpdef sparse_eq_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_71sparse_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_eq_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_eq_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_71sparse_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_71sparse_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_eq_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_eq_int64", 1, 6, 6, 1); __PYX_ERR(2, 3331, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_eq_int64", 1, 6, 6, 2); __PYX_ERR(2, 3331, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_eq_int64", 1, 6, 6, 3); __PYX_ERR(2, 3331, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_eq_int64", 1, 6, 6, 4); __PYX_ERR(2, 3331, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_eq_int64", 1, 6, 6, 5); __PYX_ERR(2, 3331, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_eq_int64") < 0)) __PYX_ERR(2, 3331, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 3331, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3332, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 3333, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3334, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_eq_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3331, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 3332, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3334, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_70sparse_eq_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_70sparse_eq_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_eq_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 3331, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3331, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_eq_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3331, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3332:                                   SparseIndex xindex, int64_t xfill,
-
 3333:                                   int64_t[:] y,
-
 3334:                                   SparseIndex yindex, int64_t yfill):
-
 3335: 
-
+3336:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+3337:         return block_op_eq_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3337, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3337, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3337, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_eq_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3337, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+3338:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3338, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3338, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3338, __pyx_L1_error)
-
+3339:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+3340:         return int_op_eq_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3340, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3340, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3340, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_eq_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3340, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+3341:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3341, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3341, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3341, __pyx_L1_error)
-
 3342:     else:
-
+3343:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 3343, __pyx_L1_error)
-  }
-
 3344: 
-
 3345: 
-
+3346: cpdef sparse_fill_eq_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_73sparse_fill_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_eq_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_eq_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_73sparse_fill_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_73sparse_fill_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_eq_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_eq_int64", 1, 2, 2, 1); __PYX_ERR(2, 3346, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_eq_int64") < 0)) __PYX_ERR(2, 3346, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3346, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3347, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_eq_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3346, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_72sparse_fill_eq_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_72sparse_fill_eq_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_eq_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_eq_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3346, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_eq_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3347:                                        int64_t yfill):
-
+3348:     return xfill == yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill == __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3348, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3349: 
-
 3350: 
-
 3351: @cython.wraparound(False)
-
 3352: @cython.boundscheck(False)
-
+3353: cdef inline tuple block_op_ne_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_ne_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_ne_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3354:                                                 BlockIndex xindex,
-
 3355:                                                 float64_t xfill,
-
 3356:                                                 float64_t[:] y_,
-
 3357:                                                 BlockIndex yindex,
-
 3358:                                                 float64_t yfill):
-
 3359:     '''
-
 3360:     Binary operator on BlockIndex objects with fill values
-
 3361:     '''
-
 3362: 
-
 3363:     cdef:
-
 3364:         BlockIndex out_index
-
+3365:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+3366:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 3367:         int32_t xloc, yloc
-
+3368:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 3369: 
-
 3370:         float64_t[:] x, y
-
 3371:         ndarray[uint8_t, ndim=1] out
-
 3372: 
-
 3373:     # to suppress Cython warning
-
+3374:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3375:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3376: 
-
+3377:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3377, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+3378:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3378, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3378, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3378, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3378, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3378, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3378, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3378, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3378, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3378, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 3378, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3378, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3379: 
-
 3380:     # Wow, what a hack job. Need to do something about this
-
 3381: 
-
 3382:     # walk the two SparseVectors, adding matched locations...
-
+3383:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+3384:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3385:             # use y fill value
-
+3386:             out[out_i] = x[xi] != yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
-
+3387:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3388: 
-
 3389:             # advance x location
-
+3390:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3391:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3392:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3393:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+3394:             continue
-
      goto __pyx_L3_continue;
-
 3395: 
-
+3396:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3397:             # use x fill value
-
+3398:             out[out_i] = xfill != y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+3399:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3400: 
-
 3401:             # advance y location
-
+3402:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3403:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3404:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3405:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+3406:             continue
-
      goto __pyx_L3_continue;
-
 3407: 
-
+3408:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+3409:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 3410: 
-
 3411:         # each index in the out_index had to come from either x, y, or both
-
+3412:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+3413:             out[out_i] = x[xi] != y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) != (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3414:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3415:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3416: 
-
 3417:             # advance both locations
-
+3418:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3419:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3420:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3421:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3422: 
-
+3423:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3424:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3425:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3426:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3427: 
-
+3428:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 3429:             # use y fill value
-
+3430:             out[out_i] = x[xi] != yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
-
+3431:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3432: 
-
 3433:             # advance x location
-
+3434:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3435:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3436:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3437:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3438:         else:
-
 3439:             # use x fill value
-
+3440:             out[out_i] = xfill != y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3441:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3442: 
-
 3443:             # advance y location
-
+3444:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3445:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+3446:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3447:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3448: 
-
+3449:     return out, out_index, xfill != yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill != __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3449, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3449, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3450: 
-
 3451: 
-
 3452: @cython.wraparound(False)
-
 3453: @cython.boundscheck(False)
-
+3454: cdef inline tuple int_op_ne_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_ne_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_ne_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3455:                                               IntIndex xindex,
-
 3456:                                               float64_t xfill,
-
 3457:                                               float64_t[:] y_,
-
 3458:                                               IntIndex yindex,
-
 3459:                                               float64_t yfill):
-
 3460:     cdef:
-
 3461:         IntIndex out_index
-
+3462:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 3463:         int32_t xloc, yloc
-
 3464:         int32_t[:] xindices, yindices, out_indices
-
 3465:         float64_t[:] x, y
-
 3466:         ndarray[uint8_t, ndim=1] out
-
 3467: 
-
 3468:     # suppress Cython compiler warnings due to inlining
-
+3469:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3470:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3471: 
-
 3472:     # need to do this first to know size of result array
-
+3473:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3473, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+3474:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3474, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3474, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3474, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3474, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3474, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3474, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3474, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3474, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3474, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 3474, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3474, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3475: 
-
+3476:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3476, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3477:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3477, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3478:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3478, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 3479: 
-
 3480:     # walk the two SparseVectors, adding matched locations...
-
+3481:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+3482:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3483:             # use x fill value
-
+3484:             out[out_i] = xfill != y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3485:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3486:             continue
-
      goto __pyx_L3_continue;
-
 3487: 
-
+3488:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3489:             # use y fill value
-
+3490:             out[out_i] = x[xi] != yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
-
+3491:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3492:             continue
-
      goto __pyx_L3_continue;
-
 3493: 
-
+3494:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+3495:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 3496: 
-
 3497:         # each index in the out_index had to come from either x, y, or both
-
+3498:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+3499:             out[out_i] = x[xi] != y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) != (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+3500:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3501:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3502:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 3503:             # use y fill value
-
+3504:             out[out_i] = x[xi] != yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
-
+3505:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3506:         else:
-
 3507:             # use x fill value
-
+3508:             out[out_i] = xfill != y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+3509:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 3510: 
-
+3511:     return out, out_index, xfill != yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill != __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3511, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3511, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3512: 
-
 3513: 
-
+3514: cpdef sparse_ne_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_75sparse_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_ne_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_ne_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_75sparse_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_75sparse_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_ne_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ne_float64", 1, 6, 6, 1); __PYX_ERR(2, 3514, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ne_float64", 1, 6, 6, 2); __PYX_ERR(2, 3514, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ne_float64", 1, 6, 6, 3); __PYX_ERR(2, 3514, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ne_float64", 1, 6, 6, 4); __PYX_ERR(2, 3514, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ne_float64", 1, 6, 6, 5); __PYX_ERR(2, 3514, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_ne_float64") < 0)) __PYX_ERR(2, 3514, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 3514, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3515, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 3516, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3517, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_ne_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3514, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 3515, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3517, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_74sparse_ne_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_74sparse_ne_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_ne_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 3514, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3514, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_ne_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3514, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3515:                                   SparseIndex xindex, float64_t xfill,
-
 3516:                                   float64_t[:] y,
-
 3517:                                   SparseIndex yindex, float64_t yfill):
-
 3518: 
-
+3519:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+3520:         return block_op_ne_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3520, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3520, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3520, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_ne_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3520, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+3521:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3521, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3521, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3521, __pyx_L1_error)
-
+3522:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+3523:         return int_op_ne_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3523, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3523, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3523, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_ne_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3523, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+3524:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3524, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3524, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3524, __pyx_L1_error)
-
 3525:     else:
-
+3526:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 3526, __pyx_L1_error)
-  }
-
 3527: 
-
 3528: 
-
+3529: cpdef sparse_fill_ne_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_77sparse_fill_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_ne_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_ne_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_77sparse_fill_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_77sparse_fill_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_ne_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_ne_float64", 1, 2, 2, 1); __PYX_ERR(2, 3529, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_ne_float64") < 0)) __PYX_ERR(2, 3529, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3529, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3530, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_ne_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3529, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_76sparse_fill_ne_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_76sparse_fill_ne_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_ne_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_ne_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3529, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ne_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3530:                                        float64_t yfill):
-
+3531:     return xfill != yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill != __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3531, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3532: 
-
 3533: 
-
 3534: @cython.wraparound(False)
-
 3535: @cython.boundscheck(False)
-
+3536: cdef inline tuple block_op_ne_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_ne_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_ne_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3537:                                                 BlockIndex xindex,
-
 3538:                                                 int64_t xfill,
-
 3539:                                                 int64_t[:] y_,
-
 3540:                                                 BlockIndex yindex,
-
 3541:                                                 int64_t yfill):
-
 3542:     '''
-
 3543:     Binary operator on BlockIndex objects with fill values
-
 3544:     '''
-
 3545: 
-
 3546:     cdef:
-
 3547:         BlockIndex out_index
-
+3548:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+3549:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 3550:         int32_t xloc, yloc
-
+3551:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 3552: 
-
 3553:         int64_t[:] x, y
-
 3554:         ndarray[uint8_t, ndim=1] out
-
 3555: 
-
 3556:     # to suppress Cython warning
-
+3557:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3558:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3559: 
-
+3560:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3560, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+3561:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3561, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3561, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3561, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3561, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3561, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3561, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3561, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3561, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3561, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 3561, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3561, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3562: 
-
 3563:     # Wow, what a hack job. Need to do something about this
-
 3564: 
-
 3565:     # walk the two SparseVectors, adding matched locations...
-
+3566:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+3567:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3568:             # use y fill value
-
+3569:             out[out_i] = x[xi] != yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
-
+3570:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3571: 
-
 3572:             # advance x location
-
+3573:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3574:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3575:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3576:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+3577:             continue
-
      goto __pyx_L3_continue;
-
 3578: 
-
+3579:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3580:             # use x fill value
-
+3581:             out[out_i] = xfill != y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+3582:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3583: 
-
 3584:             # advance y location
-
+3585:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3586:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3587:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3588:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+3589:             continue
-
      goto __pyx_L3_continue;
-
 3590: 
-
+3591:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+3592:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 3593: 
-
 3594:         # each index in the out_index had to come from either x, y, or both
-
+3595:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+3596:             out[out_i] = x[xi] != y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) != (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3597:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3598:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3599: 
-
 3600:             # advance both locations
-
+3601:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3602:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3603:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3604:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3605: 
-
+3606:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3607:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3608:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3609:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3610: 
-
+3611:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 3612:             # use y fill value
-
+3613:             out[out_i] = x[xi] != yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
-
+3614:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3615: 
-
 3616:             # advance x location
-
+3617:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3618:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3619:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3620:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3621:         else:
-
 3622:             # use x fill value
-
+3623:             out[out_i] = xfill != y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3624:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3625: 
-
 3626:             # advance y location
-
+3627:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3628:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+3629:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3630:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3631: 
-
+3632:     return out, out_index, xfill != yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill != __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3632, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3632, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3633: 
-
 3634: 
-
 3635: @cython.wraparound(False)
-
 3636: @cython.boundscheck(False)
-
+3637: cdef inline tuple int_op_ne_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_ne_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_ne_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3638:                                               IntIndex xindex,
-
 3639:                                               int64_t xfill,
-
 3640:                                               int64_t[:] y_,
-
 3641:                                               IntIndex yindex,
-
 3642:                                               int64_t yfill):
-
 3643:     cdef:
-
 3644:         IntIndex out_index
-
+3645:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 3646:         int32_t xloc, yloc
-
 3647:         int32_t[:] xindices, yindices, out_indices
-
 3648:         int64_t[:] x, y
-
 3649:         ndarray[uint8_t, ndim=1] out
-
 3650: 
-
 3651:     # suppress Cython compiler warnings due to inlining
-
+3652:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3653:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3654: 
-
 3655:     # need to do this first to know size of result array
-
+3656:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3656, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+3657:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3657, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3657, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3657, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3657, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3657, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3657, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3657, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3657, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3657, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 3657, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3657, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3658: 
-
+3659:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3659, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3660:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3660, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3661:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3661, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 3662: 
-
 3663:     # walk the two SparseVectors, adding matched locations...
-
+3664:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+3665:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3666:             # use x fill value
-
+3667:             out[out_i] = xfill != y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3668:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3669:             continue
-
      goto __pyx_L3_continue;
-
 3670: 
-
+3671:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3672:             # use y fill value
-
+3673:             out[out_i] = x[xi] != yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
-
+3674:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3675:             continue
-
      goto __pyx_L3_continue;
-
 3676: 
-
+3677:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+3678:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 3679: 
-
 3680:         # each index in the out_index had to come from either x, y, or both
-
+3681:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+3682:             out[out_i] = x[xi] != y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) != (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+3683:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3684:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3685:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 3686:             # use y fill value
-
+3687:             out[out_i] = x[xi] != yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) != __pyx_v_yfill);
-
+3688:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3689:         else:
-
 3690:             # use x fill value
-
+3691:             out[out_i] = xfill != y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill != (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+3692:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 3693: 
-
+3694:     return out, out_index, xfill != yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill != __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3694, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3694, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3695: 
-
 3696: 
-
+3697: cpdef sparse_ne_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_79sparse_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_ne_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_ne_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_79sparse_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_79sparse_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_ne_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ne_int64", 1, 6, 6, 1); __PYX_ERR(2, 3697, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ne_int64", 1, 6, 6, 2); __PYX_ERR(2, 3697, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ne_int64", 1, 6, 6, 3); __PYX_ERR(2, 3697, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ne_int64", 1, 6, 6, 4); __PYX_ERR(2, 3697, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ne_int64", 1, 6, 6, 5); __PYX_ERR(2, 3697, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_ne_int64") < 0)) __PYX_ERR(2, 3697, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 3697, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3698, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 3699, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3700, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_ne_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3697, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 3698, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3700, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_78sparse_ne_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_78sparse_ne_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_ne_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 3697, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3697, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_ne_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3697, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3698:                                   SparseIndex xindex, int64_t xfill,
-
 3699:                                   int64_t[:] y,
-
 3700:                                   SparseIndex yindex, int64_t yfill):
-
 3701: 
-
+3702:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+3703:         return block_op_ne_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3703, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3703, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3703, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_ne_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3703, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+3704:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3704, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3704, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3704, __pyx_L1_error)
-
+3705:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+3706:         return int_op_ne_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3706, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3706, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3706, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_ne_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3706, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+3707:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3707, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3707, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3707, __pyx_L1_error)
-
 3708:     else:
-
+3709:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 3709, __pyx_L1_error)
-  }
-
 3710: 
-
 3711: 
-
+3712: cpdef sparse_fill_ne_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_81sparse_fill_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_ne_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_ne_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_81sparse_fill_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_81sparse_fill_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_ne_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_ne_int64", 1, 2, 2, 1); __PYX_ERR(2, 3712, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_ne_int64") < 0)) __PYX_ERR(2, 3712, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3712, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3713, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_ne_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3712, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_80sparse_fill_ne_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_80sparse_fill_ne_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_ne_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_ne_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3712, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ne_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3713:                                        int64_t yfill):
-
+3714:     return xfill != yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill != __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3714, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3715: 
-
 3716: 
-
 3717: @cython.wraparound(False)
-
 3718: @cython.boundscheck(False)
-
+3719: cdef inline tuple block_op_lt_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_lt_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_lt_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3720:                                                 BlockIndex xindex,
-
 3721:                                                 float64_t xfill,
-
 3722:                                                 float64_t[:] y_,
-
 3723:                                                 BlockIndex yindex,
-
 3724:                                                 float64_t yfill):
-
 3725:     '''
-
 3726:     Binary operator on BlockIndex objects with fill values
-
 3727:     '''
-
 3728: 
-
 3729:     cdef:
-
 3730:         BlockIndex out_index
-
+3731:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+3732:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 3733:         int32_t xloc, yloc
-
+3734:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 3735: 
-
 3736:         float64_t[:] x, y
-
 3737:         ndarray[uint8_t, ndim=1] out
-
 3738: 
-
 3739:     # to suppress Cython warning
-
+3740:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3741:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3742: 
-
+3743:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3743, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+3744:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3744, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3744, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3744, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3744, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3744, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3744, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3744, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3744, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3744, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 3744, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3744, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3745: 
-
 3746:     # Wow, what a hack job. Need to do something about this
-
 3747: 
-
 3748:     # walk the two SparseVectors, adding matched locations...
-
+3749:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+3750:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3751:             # use y fill value
-
+3752:             out[out_i] = x[xi] < yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
-
+3753:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3754: 
-
 3755:             # advance x location
-
+3756:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3757:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3758:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3759:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+3760:             continue
-
      goto __pyx_L3_continue;
-
 3761: 
-
+3762:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3763:             # use x fill value
-
+3764:             out[out_i] = xfill < y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+3765:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3766: 
-
 3767:             # advance y location
-
+3768:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3769:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3770:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3771:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+3772:             continue
-
      goto __pyx_L3_continue;
-
 3773: 
-
+3774:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+3775:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 3776: 
-
 3777:         # each index in the out_index had to come from either x, y, or both
-
+3778:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+3779:             out[out_i] = x[xi] < y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) < (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3780:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3781:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3782: 
-
 3783:             # advance both locations
-
+3784:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3785:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3786:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3787:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3788: 
-
+3789:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3790:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3791:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3792:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3793: 
-
+3794:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 3795:             # use y fill value
-
+3796:             out[out_i] = x[xi] < yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
-
+3797:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3798: 
-
 3799:             # advance x location
-
+3800:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3801:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3802:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3803:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3804:         else:
-
 3805:             # use x fill value
-
+3806:             out[out_i] = xfill < y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3807:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3808: 
-
 3809:             # advance y location
-
+3810:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3811:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+3812:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3813:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3814: 
-
+3815:     return out, out_index, xfill < yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill < __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3815, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3815, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3816: 
-
 3817: 
-
 3818: @cython.wraparound(False)
-
 3819: @cython.boundscheck(False)
-
+3820: cdef inline tuple int_op_lt_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_lt_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_lt_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3821:                                               IntIndex xindex,
-
 3822:                                               float64_t xfill,
-
 3823:                                               float64_t[:] y_,
-
 3824:                                               IntIndex yindex,
-
 3825:                                               float64_t yfill):
-
 3826:     cdef:
-
 3827:         IntIndex out_index
-
+3828:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 3829:         int32_t xloc, yloc
-
 3830:         int32_t[:] xindices, yindices, out_indices
-
 3831:         float64_t[:] x, y
-
 3832:         ndarray[uint8_t, ndim=1] out
-
 3833: 
-
 3834:     # suppress Cython compiler warnings due to inlining
-
+3835:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3836:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3837: 
-
 3838:     # need to do this first to know size of result array
-
+3839:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3839, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+3840:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3840, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3840, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3840, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3840, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3840, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3840, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3840, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3840, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3840, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 3840, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3840, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3841: 
-
+3842:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3842, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3843:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3843, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3844:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 3844, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 3845: 
-
 3846:     # walk the two SparseVectors, adding matched locations...
-
+3847:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+3848:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3849:             # use x fill value
-
+3850:             out[out_i] = xfill < y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3851:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3852:             continue
-
      goto __pyx_L3_continue;
-
 3853: 
-
+3854:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3855:             # use y fill value
-
+3856:             out[out_i] = x[xi] < yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
-
+3857:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3858:             continue
-
      goto __pyx_L3_continue;
-
 3859: 
-
+3860:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+3861:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 3862: 
-
 3863:         # each index in the out_index had to come from either x, y, or both
-
+3864:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+3865:             out[out_i] = x[xi] < y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) < (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+3866:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3867:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3868:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 3869:             # use y fill value
-
+3870:             out[out_i] = x[xi] < yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
-
+3871:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3872:         else:
-
 3873:             # use x fill value
-
+3874:             out[out_i] = xfill < y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+3875:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 3876: 
-
+3877:     return out, out_index, xfill < yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill < __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3877, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3877, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3878: 
-
 3879: 
-
+3880: cpdef sparse_lt_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_83sparse_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_lt_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_lt_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_83sparse_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_83sparse_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_lt_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_lt_float64", 1, 6, 6, 1); __PYX_ERR(2, 3880, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_lt_float64", 1, 6, 6, 2); __PYX_ERR(2, 3880, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_lt_float64", 1, 6, 6, 3); __PYX_ERR(2, 3880, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_lt_float64", 1, 6, 6, 4); __PYX_ERR(2, 3880, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_lt_float64", 1, 6, 6, 5); __PYX_ERR(2, 3880, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_lt_float64") < 0)) __PYX_ERR(2, 3880, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 3880, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3881, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 3882, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3883, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_lt_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3880, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 3881, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3883, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_82sparse_lt_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_82sparse_lt_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_lt_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 3880, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3880, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_lt_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3880, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3881:                                   SparseIndex xindex, float64_t xfill,
-
 3882:                                   float64_t[:] y,
-
 3883:                                   SparseIndex yindex, float64_t yfill):
-
 3884: 
-
+3885:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+3886:         return block_op_lt_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3886, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3886, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3886, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_lt_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3886, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+3887:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3887, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3887, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 3887, __pyx_L1_error)
-
+3888:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+3889:         return int_op_lt_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3889, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3889, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3889, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_lt_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3889, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+3890:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3890, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3890, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 3890, __pyx_L1_error)
-
 3891:     else:
-
+3892:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 3892, __pyx_L1_error)
-  }
-
 3893: 
-
 3894: 
-
+3895: cpdef sparse_fill_lt_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_85sparse_fill_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_lt_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_lt_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_85sparse_fill_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_85sparse_fill_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_lt_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_lt_float64", 1, 2, 2, 1); __PYX_ERR(2, 3895, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_lt_float64") < 0)) __PYX_ERR(2, 3895, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3895, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 3896, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_lt_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 3895, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_84sparse_fill_lt_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_84sparse_fill_lt_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_lt_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_lt_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3895, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_lt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3896:                                        float64_t yfill):
-
+3897:     return xfill < yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill < __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3897, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3898: 
-
 3899: 
-
 3900: @cython.wraparound(False)
-
 3901: @cython.boundscheck(False)
-
+3902: cdef inline tuple block_op_lt_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_lt_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_lt_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 3903:                                                 BlockIndex xindex,
-
 3904:                                                 int64_t xfill,
-
 3905:                                                 int64_t[:] y_,
-
 3906:                                                 BlockIndex yindex,
-
 3907:                                                 int64_t yfill):
-
 3908:     '''
-
 3909:     Binary operator on BlockIndex objects with fill values
-
 3910:     '''
-
 3911: 
-
 3912:     cdef:
-
 3913:         BlockIndex out_index
-
+3914:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+3915:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 3916:         int32_t xloc, yloc
-
+3917:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 3918: 
-
 3919:         int64_t[:] x, y
-
 3920:         ndarray[uint8_t, ndim=1] out
-
 3921: 
-
 3922:     # to suppress Cython warning
-
+3923:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3924:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3925: 
-
+3926:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3926, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+3927:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3927, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 3927, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3927, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3927, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3927, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 3927, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3927, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 3927, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3927, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 3927, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 3927, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3928: 
-
 3929:     # Wow, what a hack job. Need to do something about this
-
 3930: 
-
 3931:     # walk the two SparseVectors, adding matched locations...
-
+3932:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+3933:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3934:             # use y fill value
-
+3935:             out[out_i] = x[xi] < yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
-
+3936:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3937: 
-
 3938:             # advance x location
-
+3939:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3940:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3941:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3942:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+3943:             continue
-
      goto __pyx_L3_continue;
-
 3944: 
-
+3945:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3946:             # use x fill value
-
+3947:             out[out_i] = xfill < y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+3948:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3949: 
-
 3950:             # advance y location
-
+3951:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3952:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3953:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3954:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+3955:             continue
-
      goto __pyx_L3_continue;
-
 3956: 
-
+3957:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+3958:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 3959: 
-
 3960:         # each index in the out_index had to come from either x, y, or both
-
+3961:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+3962:             out[out_i] = x[xi] < y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) < (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3963:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3964:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3965: 
-
 3966:             # advance both locations
-
+3967:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3968:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3969:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3970:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3971: 
-
+3972:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3973:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3974:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3975:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3976: 
-
+3977:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 3978:             # use y fill value
-
+3979:             out[out_i] = x[xi] < yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
-
+3980:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3981: 
-
 3982:             # advance x location
-
+3983:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3984:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3985:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3986:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3987:         else:
-
 3988:             # use x fill value
-
+3989:             out[out_i] = xfill < y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+3990:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3991: 
-
 3992:             # advance y location
-
+3993:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3994:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+3995:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3996:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3997: 
-
+3998:     return out, out_index, xfill < yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill < __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 3998, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3998, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 3999: 
-
 4000: 
-
 4001: @cython.wraparound(False)
-
 4002: @cython.boundscheck(False)
-
+4003: cdef inline tuple int_op_lt_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_lt_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_lt_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4004:                                               IntIndex xindex,
-
 4005:                                               int64_t xfill,
-
 4006:                                               int64_t[:] y_,
-
 4007:                                               IntIndex yindex,
-
 4008:                                               int64_t yfill):
-
 4009:     cdef:
-
 4010:         IntIndex out_index
-
+4011:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 4012:         int32_t xloc, yloc
-
 4013:         int32_t[:] xindices, yindices, out_indices
-
 4014:         int64_t[:] x, y
-
 4015:         ndarray[uint8_t, ndim=1] out
-
 4016: 
-
 4017:     # suppress Cython compiler warnings due to inlining
-
+4018:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4019:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4020: 
-
 4021:     # need to do this first to know size of result array
-
+4022:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4022, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+4023:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4023, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4023, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4023, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4023, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4023, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4023, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4023, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4023, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4023, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 4023, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4023, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4024: 
-
+4025:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4025, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4026:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4026, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4027:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4027, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 4028: 
-
 4029:     # walk the two SparseVectors, adding matched locations...
-
+4030:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+4031:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4032:             # use x fill value
-
+4033:             out[out_i] = xfill < y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4034:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4035:             continue
-
      goto __pyx_L3_continue;
-
 4036: 
-
+4037:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4038:             # use y fill value
-
+4039:             out[out_i] = x[xi] < yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
-
+4040:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4041:             continue
-
      goto __pyx_L3_continue;
-
 4042: 
-
+4043:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+4044:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 4045: 
-
 4046:         # each index in the out_index had to come from either x, y, or both
-
+4047:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+4048:             out[out_i] = x[xi] < y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) < (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+4049:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4050:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4051:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 4052:             # use y fill value
-
+4053:             out[out_i] = x[xi] < yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) < __pyx_v_yfill);
-
+4054:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4055:         else:
-
 4056:             # use x fill value
-
+4057:             out[out_i] = xfill < y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill < (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+4058:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 4059: 
-
+4060:     return out, out_index, xfill < yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill < __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4060, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4060, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4061: 
-
 4062: 
-
+4063: cpdef sparse_lt_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_87sparse_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_lt_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_lt_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_87sparse_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_87sparse_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_lt_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_lt_int64", 1, 6, 6, 1); __PYX_ERR(2, 4063, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_lt_int64", 1, 6, 6, 2); __PYX_ERR(2, 4063, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_lt_int64", 1, 6, 6, 3); __PYX_ERR(2, 4063, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_lt_int64", 1, 6, 6, 4); __PYX_ERR(2, 4063, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_lt_int64", 1, 6, 6, 5); __PYX_ERR(2, 4063, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_lt_int64") < 0)) __PYX_ERR(2, 4063, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 4063, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4064, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 4065, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4066, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_lt_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4063, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 4064, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4066, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_86sparse_lt_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_86sparse_lt_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_lt_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 4063, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4063, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_lt_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4063, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4064:                                   SparseIndex xindex, int64_t xfill,
-
 4065:                                   int64_t[:] y,
-
 4066:                                   SparseIndex yindex, int64_t yfill):
-
 4067: 
-
+4068:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+4069:         return block_op_lt_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4069, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4069, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4069, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_lt_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4069, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+4070:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4070, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4070, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4070, __pyx_L1_error)
-
+4071:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+4072:         return int_op_lt_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4072, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4072, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4072, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_lt_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4072, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+4073:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4073, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4073, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4073, __pyx_L1_error)
-
 4074:     else:
-
+4075:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 4075, __pyx_L1_error)
-  }
-
 4076: 
-
 4077: 
-
+4078: cpdef sparse_fill_lt_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_89sparse_fill_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_lt_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_lt_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_89sparse_fill_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_89sparse_fill_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_lt_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_lt_int64", 1, 2, 2, 1); __PYX_ERR(2, 4078, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_lt_int64") < 0)) __PYX_ERR(2, 4078, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4078, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4079, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_lt_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4078, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_88sparse_fill_lt_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_88sparse_fill_lt_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_lt_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_lt_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4078, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_lt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4079:                                        int64_t yfill):
-
+4080:     return xfill < yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill < __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4080, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4081: 
-
 4082: 
-
 4083: @cython.wraparound(False)
-
 4084: @cython.boundscheck(False)
-
+4085: cdef inline tuple block_op_gt_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_gt_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_gt_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4086:                                                 BlockIndex xindex,
-
 4087:                                                 float64_t xfill,
-
 4088:                                                 float64_t[:] y_,
-
 4089:                                                 BlockIndex yindex,
-
 4090:                                                 float64_t yfill):
-
 4091:     '''
-
 4092:     Binary operator on BlockIndex objects with fill values
-
 4093:     '''
-
 4094: 
-
 4095:     cdef:
-
 4096:         BlockIndex out_index
-
+4097:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+4098:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 4099:         int32_t xloc, yloc
-
+4100:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 4101: 
-
 4102:         float64_t[:] x, y
-
 4103:         ndarray[uint8_t, ndim=1] out
-
 4104: 
-
 4105:     # to suppress Cython warning
-
+4106:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4107:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4108: 
-
+4109:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4109, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+4110:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4110, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4110, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4110, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4110, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4110, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4110, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4110, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4110, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4110, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 4110, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4110, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4111: 
-
 4112:     # Wow, what a hack job. Need to do something about this
-
 4113: 
-
 4114:     # walk the two SparseVectors, adding matched locations...
-
+4115:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+4116:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4117:             # use y fill value
-
+4118:             out[out_i] = x[xi] > yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
-
+4119:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4120: 
-
 4121:             # advance x location
-
+4122:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4123:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4124:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4125:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+4126:             continue
-
      goto __pyx_L3_continue;
-
 4127: 
-
+4128:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4129:             # use x fill value
-
+4130:             out[out_i] = xfill > y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+4131:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4132: 
-
 4133:             # advance y location
-
+4134:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4135:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4136:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4137:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+4138:             continue
-
      goto __pyx_L3_continue;
-
 4139: 
-
+4140:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+4141:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 4142: 
-
 4143:         # each index in the out_index had to come from either x, y, or both
-
+4144:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+4145:             out[out_i] = x[xi] > y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) > (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4146:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4147:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4148: 
-
 4149:             # advance both locations
-
+4150:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4151:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4152:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4153:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4154: 
-
+4155:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4156:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4157:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4158:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4159: 
-
+4160:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 4161:             # use y fill value
-
+4162:             out[out_i] = x[xi] > yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
-
+4163:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4164: 
-
 4165:             # advance x location
-
+4166:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4167:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4168:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4169:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4170:         else:
-
 4171:             # use x fill value
-
+4172:             out[out_i] = xfill > y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4173:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4174: 
-
 4175:             # advance y location
-
+4176:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4177:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+4178:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4179:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4180: 
-
+4181:     return out, out_index, xfill > yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill > __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4181, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4181, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4182: 
-
 4183: 
-
 4184: @cython.wraparound(False)
-
 4185: @cython.boundscheck(False)
-
+4186: cdef inline tuple int_op_gt_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_gt_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_gt_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4187:                                               IntIndex xindex,
-
 4188:                                               float64_t xfill,
-
 4189:                                               float64_t[:] y_,
-
 4190:                                               IntIndex yindex,
-
 4191:                                               float64_t yfill):
-
 4192:     cdef:
-
 4193:         IntIndex out_index
-
+4194:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 4195:         int32_t xloc, yloc
-
 4196:         int32_t[:] xindices, yindices, out_indices
-
 4197:         float64_t[:] x, y
-
 4198:         ndarray[uint8_t, ndim=1] out
-
 4199: 
-
 4200:     # suppress Cython compiler warnings due to inlining
-
+4201:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4202:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4203: 
-
 4204:     # need to do this first to know size of result array
-
+4205:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4205, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+4206:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4206, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4206, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4206, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4206, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4206, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4206, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4206, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4206, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4206, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 4206, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4206, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4207: 
-
+4208:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4208, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4209:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4209, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4210:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4210, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 4211: 
-
 4212:     # walk the two SparseVectors, adding matched locations...
-
+4213:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+4214:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4215:             # use x fill value
-
+4216:             out[out_i] = xfill > y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4217:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4218:             continue
-
      goto __pyx_L3_continue;
-
 4219: 
-
+4220:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4221:             # use y fill value
-
+4222:             out[out_i] = x[xi] > yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
-
+4223:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4224:             continue
-
      goto __pyx_L3_continue;
-
 4225: 
-
+4226:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+4227:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 4228: 
-
 4229:         # each index in the out_index had to come from either x, y, or both
-
+4230:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+4231:             out[out_i] = x[xi] > y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) > (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+4232:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4233:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4234:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 4235:             # use y fill value
-
+4236:             out[out_i] = x[xi] > yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
-
+4237:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4238:         else:
-
 4239:             # use x fill value
-
+4240:             out[out_i] = xfill > y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+4241:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 4242: 
-
+4243:     return out, out_index, xfill > yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill > __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4243, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4243, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4244: 
-
 4245: 
-
+4246: cpdef sparse_gt_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_91sparse_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_gt_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_gt_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_91sparse_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_91sparse_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_gt_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_gt_float64", 1, 6, 6, 1); __PYX_ERR(2, 4246, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_gt_float64", 1, 6, 6, 2); __PYX_ERR(2, 4246, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_gt_float64", 1, 6, 6, 3); __PYX_ERR(2, 4246, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_gt_float64", 1, 6, 6, 4); __PYX_ERR(2, 4246, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_gt_float64", 1, 6, 6, 5); __PYX_ERR(2, 4246, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_gt_float64") < 0)) __PYX_ERR(2, 4246, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 4246, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4247, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 4248, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4249, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_gt_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4246, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 4247, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4249, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_90sparse_gt_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_90sparse_gt_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_gt_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 4246, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4246, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_gt_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4246, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4247:                                   SparseIndex xindex, float64_t xfill,
-
 4248:                                   float64_t[:] y,
-
 4249:                                   SparseIndex yindex, float64_t yfill):
-
 4250: 
-
+4251:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+4252:         return block_op_gt_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4252, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4252, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4252, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_gt_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4252, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+4253:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4253, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4253, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4253, __pyx_L1_error)
-
+4254:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+4255:         return int_op_gt_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4255, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4255, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4255, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_gt_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4255, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+4256:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4256, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4256, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4256, __pyx_L1_error)
-
 4257:     else:
-
+4258:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 4258, __pyx_L1_error)
-  }
-
 4259: 
-
 4260: 
-
+4261: cpdef sparse_fill_gt_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_93sparse_fill_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_gt_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_gt_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_93sparse_fill_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_93sparse_fill_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_gt_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_gt_float64", 1, 2, 2, 1); __PYX_ERR(2, 4261, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_gt_float64") < 0)) __PYX_ERR(2, 4261, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4261, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4262, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_gt_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4261, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_92sparse_fill_gt_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_92sparse_fill_gt_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_gt_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_gt_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4261, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_gt_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4262:                                        float64_t yfill):
-
+4263:     return xfill > yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill > __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4263, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4264: 
-
 4265: 
-
 4266: @cython.wraparound(False)
-
 4267: @cython.boundscheck(False)
-
+4268: cdef inline tuple block_op_gt_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_gt_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_gt_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4269:                                                 BlockIndex xindex,
-
 4270:                                                 int64_t xfill,
-
 4271:                                                 int64_t[:] y_,
-
 4272:                                                 BlockIndex yindex,
-
 4273:                                                 int64_t yfill):
-
 4274:     '''
-
 4275:     Binary operator on BlockIndex objects with fill values
-
 4276:     '''
-
 4277: 
-
 4278:     cdef:
-
 4279:         BlockIndex out_index
-
+4280:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+4281:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 4282:         int32_t xloc, yloc
-
+4283:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 4284: 
-
 4285:         int64_t[:] x, y
-
 4286:         ndarray[uint8_t, ndim=1] out
-
 4287: 
-
 4288:     # to suppress Cython warning
-
+4289:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4290:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4291: 
-
+4292:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4292, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+4293:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4293, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4293, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4293, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4293, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4293, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4293, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4293, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4293, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4293, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 4293, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4293, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4294: 
-
 4295:     # Wow, what a hack job. Need to do something about this
-
 4296: 
-
 4297:     # walk the two SparseVectors, adding matched locations...
-
+4298:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+4299:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4300:             # use y fill value
-
+4301:             out[out_i] = x[xi] > yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
-
+4302:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4303: 
-
 4304:             # advance x location
-
+4305:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4306:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4307:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4308:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+4309:             continue
-
      goto __pyx_L3_continue;
-
 4310: 
-
+4311:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4312:             # use x fill value
-
+4313:             out[out_i] = xfill > y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+4314:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4315: 
-
 4316:             # advance y location
-
+4317:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4318:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4319:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4320:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+4321:             continue
-
      goto __pyx_L3_continue;
-
 4322: 
-
+4323:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+4324:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 4325: 
-
 4326:         # each index in the out_index had to come from either x, y, or both
-
+4327:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+4328:             out[out_i] = x[xi] > y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) > (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4329:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4330:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4331: 
-
 4332:             # advance both locations
-
+4333:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4334:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4335:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4336:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4337: 
-
+4338:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4339:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4340:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4341:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4342: 
-
+4343:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 4344:             # use y fill value
-
+4345:             out[out_i] = x[xi] > yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
-
+4346:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4347: 
-
 4348:             # advance x location
-
+4349:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4350:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4351:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4352:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4353:         else:
-
 4354:             # use x fill value
-
+4355:             out[out_i] = xfill > y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4356:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4357: 
-
 4358:             # advance y location
-
+4359:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4360:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+4361:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4362:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4363: 
-
+4364:     return out, out_index, xfill > yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill > __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4364, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4364, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4365: 
-
 4366: 
-
 4367: @cython.wraparound(False)
-
 4368: @cython.boundscheck(False)
-
+4369: cdef inline tuple int_op_gt_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_gt_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_gt_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4370:                                               IntIndex xindex,
-
 4371:                                               int64_t xfill,
-
 4372:                                               int64_t[:] y_,
-
 4373:                                               IntIndex yindex,
-
 4374:                                               int64_t yfill):
-
 4375:     cdef:
-
 4376:         IntIndex out_index
-
+4377:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 4378:         int32_t xloc, yloc
-
 4379:         int32_t[:] xindices, yindices, out_indices
-
 4380:         int64_t[:] x, y
-
 4381:         ndarray[uint8_t, ndim=1] out
-
 4382: 
-
 4383:     # suppress Cython compiler warnings due to inlining
-
+4384:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4385:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4386: 
-
 4387:     # need to do this first to know size of result array
-
+4388:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4388, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+4389:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4389, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4389, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4389, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4389, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4389, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4389, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4389, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4389, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4389, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 4389, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4389, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4390: 
-
+4391:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4391, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4392:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4392, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4393:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4393, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 4394: 
-
 4395:     # walk the two SparseVectors, adding matched locations...
-
+4396:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+4397:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4398:             # use x fill value
-
+4399:             out[out_i] = xfill > y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4400:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4401:             continue
-
      goto __pyx_L3_continue;
-
 4402: 
-
+4403:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4404:             # use y fill value
-
+4405:             out[out_i] = x[xi] > yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
-
+4406:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4407:             continue
-
      goto __pyx_L3_continue;
-
 4408: 
-
+4409:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+4410:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 4411: 
-
 4412:         # each index in the out_index had to come from either x, y, or both
-
+4413:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+4414:             out[out_i] = x[xi] > y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) > (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+4415:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4416:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4417:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 4418:             # use y fill value
-
+4419:             out[out_i] = x[xi] > yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) > __pyx_v_yfill);
-
+4420:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4421:         else:
-
 4422:             # use x fill value
-
+4423:             out[out_i] = xfill > y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill > (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+4424:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 4425: 
-
+4426:     return out, out_index, xfill > yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill > __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4426, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4426, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4427: 
-
 4428: 
-
+4429: cpdef sparse_gt_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_95sparse_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_gt_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_gt_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_95sparse_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_95sparse_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_gt_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_gt_int64", 1, 6, 6, 1); __PYX_ERR(2, 4429, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_gt_int64", 1, 6, 6, 2); __PYX_ERR(2, 4429, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_gt_int64", 1, 6, 6, 3); __PYX_ERR(2, 4429, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_gt_int64", 1, 6, 6, 4); __PYX_ERR(2, 4429, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_gt_int64", 1, 6, 6, 5); __PYX_ERR(2, 4429, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_gt_int64") < 0)) __PYX_ERR(2, 4429, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 4429, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4430, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 4431, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4432, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_gt_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4429, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 4430, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4432, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_94sparse_gt_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_94sparse_gt_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_gt_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 4429, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4429, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_gt_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4429, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4430:                                   SparseIndex xindex, int64_t xfill,
-
 4431:                                   int64_t[:] y,
-
 4432:                                   SparseIndex yindex, int64_t yfill):
-
 4433: 
-
+4434:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+4435:         return block_op_gt_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4435, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4435, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4435, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_gt_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4435, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+4436:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4436, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4436, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4436, __pyx_L1_error)
-
+4437:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+4438:         return int_op_gt_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4438, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4438, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4438, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_gt_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4438, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+4439:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4439, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4439, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4439, __pyx_L1_error)
-
 4440:     else:
-
+4441:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 4441, __pyx_L1_error)
-  }
-
 4442: 
-
 4443: 
-
+4444: cpdef sparse_fill_gt_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_97sparse_fill_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_gt_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_gt_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_97sparse_fill_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_97sparse_fill_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_gt_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_gt_int64", 1, 2, 2, 1); __PYX_ERR(2, 4444, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_gt_int64") < 0)) __PYX_ERR(2, 4444, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4444, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4445, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_gt_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4444, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_96sparse_fill_gt_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_96sparse_fill_gt_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_gt_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_gt_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4444, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_gt_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4445:                                        int64_t yfill):
-
+4446:     return xfill > yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill > __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4446, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4447: 
-
 4448: 
-
 4449: @cython.wraparound(False)
-
 4450: @cython.boundscheck(False)
-
+4451: cdef inline tuple block_op_le_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_le_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_le_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4452:                                                 BlockIndex xindex,
-
 4453:                                                 float64_t xfill,
-
 4454:                                                 float64_t[:] y_,
-
 4455:                                                 BlockIndex yindex,
-
 4456:                                                 float64_t yfill):
-
 4457:     '''
-
 4458:     Binary operator on BlockIndex objects with fill values
-
 4459:     '''
-
 4460: 
-
 4461:     cdef:
-
 4462:         BlockIndex out_index
-
+4463:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+4464:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 4465:         int32_t xloc, yloc
-
+4466:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 4467: 
-
 4468:         float64_t[:] x, y
-
 4469:         ndarray[uint8_t, ndim=1] out
-
 4470: 
-
 4471:     # to suppress Cython warning
-
+4472:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4473:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4474: 
-
+4475:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4475, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+4476:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4476, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4476, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4476, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4476, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4476, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4476, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4476, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4476, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4476, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 4476, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4476, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4477: 
-
 4478:     # Wow, what a hack job. Need to do something about this
-
 4479: 
-
 4480:     # walk the two SparseVectors, adding matched locations...
-
+4481:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+4482:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4483:             # use y fill value
-
+4484:             out[out_i] = x[xi] <= yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
-
+4485:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4486: 
-
 4487:             # advance x location
-
+4488:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4489:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4490:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4491:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+4492:             continue
-
      goto __pyx_L3_continue;
-
 4493: 
-
+4494:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4495:             # use x fill value
-
+4496:             out[out_i] = xfill <= y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+4497:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4498: 
-
 4499:             # advance y location
-
+4500:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4501:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4502:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4503:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+4504:             continue
-
      goto __pyx_L3_continue;
-
 4505: 
-
+4506:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+4507:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 4508: 
-
 4509:         # each index in the out_index had to come from either x, y, or both
-
+4510:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+4511:             out[out_i] = x[xi] <= y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) <= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4512:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4513:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4514: 
-
 4515:             # advance both locations
-
+4516:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4517:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4518:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4519:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4520: 
-
+4521:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4522:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4523:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4524:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4525: 
-
+4526:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 4527:             # use y fill value
-
+4528:             out[out_i] = x[xi] <= yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
-
+4529:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4530: 
-
 4531:             # advance x location
-
+4532:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4533:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4534:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4535:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4536:         else:
-
 4537:             # use x fill value
-
+4538:             out[out_i] = xfill <= y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4539:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4540: 
-
 4541:             # advance y location
-
+4542:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4543:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+4544:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4545:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4546: 
-
+4547:     return out, out_index, xfill <= yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill <= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4547, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4547, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4548: 
-
 4549: 
-
 4550: @cython.wraparound(False)
-
 4551: @cython.boundscheck(False)
-
+4552: cdef inline tuple int_op_le_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_le_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_le_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4553:                                               IntIndex xindex,
-
 4554:                                               float64_t xfill,
-
 4555:                                               float64_t[:] y_,
-
 4556:                                               IntIndex yindex,
-
 4557:                                               float64_t yfill):
-
 4558:     cdef:
-
 4559:         IntIndex out_index
-
+4560:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 4561:         int32_t xloc, yloc
-
 4562:         int32_t[:] xindices, yindices, out_indices
-
 4563:         float64_t[:] x, y
-
 4564:         ndarray[uint8_t, ndim=1] out
-
 4565: 
-
 4566:     # suppress Cython compiler warnings due to inlining
-
+4567:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4568:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4569: 
-
 4570:     # need to do this first to know size of result array
-
+4571:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4571, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+4572:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4572, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4572, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 4572, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4572, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4573: 
-
+4574:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4574, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4575:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4575, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4576:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4576, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 4577: 
-
 4578:     # walk the two SparseVectors, adding matched locations...
-
+4579:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+4580:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4581:             # use x fill value
-
+4582:             out[out_i] = xfill <= y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4583:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4584:             continue
-
      goto __pyx_L3_continue;
-
 4585: 
-
+4586:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4587:             # use y fill value
-
+4588:             out[out_i] = x[xi] <= yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
-
+4589:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4590:             continue
-
      goto __pyx_L3_continue;
-
 4591: 
-
+4592:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+4593:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 4594: 
-
 4595:         # each index in the out_index had to come from either x, y, or both
-
+4596:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+4597:             out[out_i] = x[xi] <= y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) <= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+4598:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4599:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4600:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 4601:             # use y fill value
-
+4602:             out[out_i] = x[xi] <= yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
-
+4603:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4604:         else:
-
 4605:             # use x fill value
-
+4606:             out[out_i] = xfill <= y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+4607:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 4608: 
-
+4609:     return out, out_index, xfill <= yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill <= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4609, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4609, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4610: 
-
 4611: 
-
+4612: cpdef sparse_le_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_99sparse_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_le_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_le_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_99sparse_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_99sparse_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_le_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_le_float64", 1, 6, 6, 1); __PYX_ERR(2, 4612, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_le_float64", 1, 6, 6, 2); __PYX_ERR(2, 4612, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_le_float64", 1, 6, 6, 3); __PYX_ERR(2, 4612, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_le_float64", 1, 6, 6, 4); __PYX_ERR(2, 4612, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_le_float64", 1, 6, 6, 5); __PYX_ERR(2, 4612, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_le_float64") < 0)) __PYX_ERR(2, 4612, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 4612, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4613, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 4614, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4615, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_le_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4612, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 4613, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4615, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_98sparse_le_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_98sparse_le_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_le_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 4612, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4612, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_le_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4612, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4613:                                   SparseIndex xindex, float64_t xfill,
-
 4614:                                   float64_t[:] y,
-
 4615:                                   SparseIndex yindex, float64_t yfill):
-
 4616: 
-
+4617:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+4618:         return block_op_le_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4618, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4618, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4618, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_le_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4618, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+4619:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4619, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4619, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4619, __pyx_L1_error)
-
+4620:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+4621:         return int_op_le_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4621, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4621, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4621, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_le_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4621, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+4622:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4622, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4622, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4622, __pyx_L1_error)
-
 4623:     else:
-
+4624:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 4624, __pyx_L1_error)
-  }
-
 4625: 
-
 4626: 
-
+4627: cpdef sparse_fill_le_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_101sparse_fill_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_le_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_le_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_101sparse_fill_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_101sparse_fill_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_le_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_le_float64", 1, 2, 2, 1); __PYX_ERR(2, 4627, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_le_float64") < 0)) __PYX_ERR(2, 4627, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4627, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4628, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_le_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4627, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_100sparse_fill_le_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_100sparse_fill_le_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_le_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_le_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4627, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_le_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4628:                                        float64_t yfill):
-
+4629:     return xfill <= yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill <= __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4629, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4630: 
-
 4631: 
-
 4632: @cython.wraparound(False)
-
 4633: @cython.boundscheck(False)
-
+4634: cdef inline tuple block_op_le_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_le_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_le_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4635:                                                 BlockIndex xindex,
-
 4636:                                                 int64_t xfill,
-
 4637:                                                 int64_t[:] y_,
-
 4638:                                                 BlockIndex yindex,
-
 4639:                                                 int64_t yfill):
-
 4640:     '''
-
 4641:     Binary operator on BlockIndex objects with fill values
-
 4642:     '''
-
 4643: 
-
 4644:     cdef:
-
 4645:         BlockIndex out_index
-
+4646:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+4647:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 4648:         int32_t xloc, yloc
-
+4649:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 4650: 
-
 4651:         int64_t[:] x, y
-
 4652:         ndarray[uint8_t, ndim=1] out
-
 4653: 
-
 4654:     # to suppress Cython warning
-
+4655:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4656:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4657: 
-
+4658:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4658, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+4659:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4659, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4659, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4659, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4659, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4659, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4659, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4659, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4659, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4659, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 4659, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4659, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4660: 
-
 4661:     # Wow, what a hack job. Need to do something about this
-
 4662: 
-
 4663:     # walk the two SparseVectors, adding matched locations...
-
+4664:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+4665:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4666:             # use y fill value
-
+4667:             out[out_i] = x[xi] <= yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
-
+4668:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4669: 
-
 4670:             # advance x location
-
+4671:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4672:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4673:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4674:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+4675:             continue
-
      goto __pyx_L3_continue;
-
 4676: 
-
+4677:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4678:             # use x fill value
-
+4679:             out[out_i] = xfill <= y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+4680:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4681: 
-
 4682:             # advance y location
-
+4683:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4684:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4685:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4686:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+4687:             continue
-
      goto __pyx_L3_continue;
-
 4688: 
-
+4689:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+4690:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 4691: 
-
 4692:         # each index in the out_index had to come from either x, y, or both
-
+4693:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+4694:             out[out_i] = x[xi] <= y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) <= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4695:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4696:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4697: 
-
 4698:             # advance both locations
-
+4699:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4700:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4701:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4702:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4703: 
-
+4704:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4705:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4706:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4707:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4708: 
-
+4709:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 4710:             # use y fill value
-
+4711:             out[out_i] = x[xi] <= yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
-
+4712:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4713: 
-
 4714:             # advance x location
-
+4715:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4716:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4717:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4718:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4719:         else:
-
 4720:             # use x fill value
-
+4721:             out[out_i] = xfill <= y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4722:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4723: 
-
 4724:             # advance y location
-
+4725:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4726:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+4727:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4728:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4729: 
-
+4730:     return out, out_index, xfill <= yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill <= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4730, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4730, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4731: 
-
 4732: 
-
 4733: @cython.wraparound(False)
-
 4734: @cython.boundscheck(False)
-
+4735: cdef inline tuple int_op_le_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_le_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_le_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4736:                                               IntIndex xindex,
-
 4737:                                               int64_t xfill,
-
 4738:                                               int64_t[:] y_,
-
 4739:                                               IntIndex yindex,
-
 4740:                                               int64_t yfill):
-
 4741:     cdef:
-
 4742:         IntIndex out_index
-
+4743:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 4744:         int32_t xloc, yloc
-
 4745:         int32_t[:] xindices, yindices, out_indices
-
 4746:         int64_t[:] x, y
-
 4747:         ndarray[uint8_t, ndim=1] out
-
 4748: 
-
 4749:     # suppress Cython compiler warnings due to inlining
-
+4750:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4751:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4752: 
-
 4753:     # need to do this first to know size of result array
-
+4754:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4754, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+4755:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4755, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4755, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4755, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4755, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4755, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4755, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4755, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4755, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4755, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 4755, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4755, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4756: 
-
+4757:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4757, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4758:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4758, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4759:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4759, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 4760: 
-
 4761:     # walk the two SparseVectors, adding matched locations...
-
+4762:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+4763:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4764:             # use x fill value
-
+4765:             out[out_i] = xfill <= y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4766:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4767:             continue
-
      goto __pyx_L3_continue;
-
 4768: 
-
+4769:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4770:             # use y fill value
-
+4771:             out[out_i] = x[xi] <= yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
-
+4772:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4773:             continue
-
      goto __pyx_L3_continue;
-
 4774: 
-
+4775:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+4776:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 4777: 
-
 4778:         # each index in the out_index had to come from either x, y, or both
-
+4779:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+4780:             out[out_i] = x[xi] <= y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) <= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+4781:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4782:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4783:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 4784:             # use y fill value
-
+4785:             out[out_i] = x[xi] <= yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) <= __pyx_v_yfill);
-
+4786:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4787:         else:
-
 4788:             # use x fill value
-
+4789:             out[out_i] = xfill <= y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill <= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+4790:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 4791: 
-
+4792:     return out, out_index, xfill <= yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill <= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4792, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4792, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4793: 
-
 4794: 
-
+4795: cpdef sparse_le_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_103sparse_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_le_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_le_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_103sparse_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_103sparse_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_le_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_le_int64", 1, 6, 6, 1); __PYX_ERR(2, 4795, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_le_int64", 1, 6, 6, 2); __PYX_ERR(2, 4795, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_le_int64", 1, 6, 6, 3); __PYX_ERR(2, 4795, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_le_int64", 1, 6, 6, 4); __PYX_ERR(2, 4795, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_le_int64", 1, 6, 6, 5); __PYX_ERR(2, 4795, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_le_int64") < 0)) __PYX_ERR(2, 4795, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 4795, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4796, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 4797, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4798, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_le_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4795, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 4796, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4798, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_102sparse_le_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_102sparse_le_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_le_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 4795, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4795, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_le_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4795, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4796:                                   SparseIndex xindex, int64_t xfill,
-
 4797:                                   int64_t[:] y,
-
 4798:                                   SparseIndex yindex, int64_t yfill):
-
 4799: 
-
+4800:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+4801:         return block_op_le_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4801, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4801, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4801, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_le_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4801, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+4802:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4802, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4802, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4802, __pyx_L1_error)
-
+4803:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+4804:         return int_op_le_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4804, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4804, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4804, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_le_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4804, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+4805:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4805, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4805, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4805, __pyx_L1_error)
-
 4806:     else:
-
+4807:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 4807, __pyx_L1_error)
-  }
-
 4808: 
-
 4809: 
-
+4810: cpdef sparse_fill_le_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_105sparse_fill_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_le_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_le_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_105sparse_fill_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_105sparse_fill_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_le_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_le_int64", 1, 2, 2, 1); __PYX_ERR(2, 4810, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_le_int64") < 0)) __PYX_ERR(2, 4810, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4810, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4811, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_le_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4810, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_104sparse_fill_le_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_104sparse_fill_le_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_le_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_le_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4810, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_le_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4811:                                        int64_t yfill):
-
+4812:     return xfill <= yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill <= __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4812, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4813: 
-
 4814: 
-
 4815: @cython.wraparound(False)
-
 4816: @cython.boundscheck(False)
-
+4817: cdef inline tuple block_op_ge_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_ge_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_ge_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4818:                                                 BlockIndex xindex,
-
 4819:                                                 float64_t xfill,
-
 4820:                                                 float64_t[:] y_,
-
 4821:                                                 BlockIndex yindex,
-
 4822:                                                 float64_t yfill):
-
 4823:     '''
-
 4824:     Binary operator on BlockIndex objects with fill values
-
 4825:     '''
-
 4826: 
-
 4827:     cdef:
-
 4828:         BlockIndex out_index
-
+4829:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+4830:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 4831:         int32_t xloc, yloc
-
+4832:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 4833: 
-
 4834:         float64_t[:] x, y
-
 4835:         ndarray[uint8_t, ndim=1] out
-
 4836: 
-
 4837:     # to suppress Cython warning
-
+4838:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4839:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4840: 
-
+4841:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4841, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+4842:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4842, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4842, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4842, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4842, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4842, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4842, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4842, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4842, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4842, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 4842, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4842, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4843: 
-
 4844:     # Wow, what a hack job. Need to do something about this
-
 4845: 
-
 4846:     # walk the two SparseVectors, adding matched locations...
-
+4847:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+4848:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4849:             # use y fill value
-
+4850:             out[out_i] = x[xi] >= yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
-
+4851:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4852: 
-
 4853:             # advance x location
-
+4854:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4855:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4856:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4857:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+4858:             continue
-
      goto __pyx_L3_continue;
-
 4859: 
-
+4860:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4861:             # use x fill value
-
+4862:             out[out_i] = xfill >= y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+4863:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4864: 
-
 4865:             # advance y location
-
+4866:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4867:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4868:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4869:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+4870:             continue
-
      goto __pyx_L3_continue;
-
 4871: 
-
+4872:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+4873:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 4874: 
-
 4875:         # each index in the out_index had to come from either x, y, or both
-
+4876:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+4877:             out[out_i] = x[xi] >= y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) >= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4878:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4879:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4880: 
-
 4881:             # advance both locations
-
+4882:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4883:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4884:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4885:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4886: 
-
+4887:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4888:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4889:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4890:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4891: 
-
+4892:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 4893:             # use y fill value
-
+4894:             out[out_i] = x[xi] >= yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
-
+4895:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4896: 
-
 4897:             # advance x location
-
+4898:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4899:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4900:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4901:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4902:         else:
-
 4903:             # use x fill value
-
+4904:             out[out_i] = xfill >= y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4905:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4906: 
-
 4907:             # advance y location
-
+4908:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4909:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+4910:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4911:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4912: 
-
+4913:     return out, out_index, xfill >= yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill >= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4913, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4913, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4914: 
-
 4915: 
-
 4916: @cython.wraparound(False)
-
 4917: @cython.boundscheck(False)
-
+4918: cdef inline tuple int_op_ge_float64(float64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_ge_float64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_ge_float64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4919:                                               IntIndex xindex,
-
 4920:                                               float64_t xfill,
-
 4921:                                               float64_t[:] y_,
-
 4922:                                               IntIndex yindex,
-
 4923:                                               float64_t yfill):
-
 4924:     cdef:
-
 4925:         IntIndex out_index
-
+4926:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 4927:         int32_t xloc, yloc
-
 4928:         int32_t[:] xindices, yindices, out_indices
-
 4929:         float64_t[:] x, y
-
 4930:         ndarray[uint8_t, ndim=1] out
-
 4931: 
-
 4932:     # suppress Cython compiler warnings due to inlining
-
+4933:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4934:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4935: 
-
 4936:     # need to do this first to know size of result array
-
+4937:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4937, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+4938:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4938, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 4938, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4938, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4938, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4938, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4938, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4938, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 4938, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4938, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 4938, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 4938, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4939: 
-
+4940:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4940, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4941:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4941, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4942:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 4942, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 4943: 
-
 4944:     # walk the two SparseVectors, adding matched locations...
-
+4945:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+4946:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4947:             # use x fill value
-
+4948:             out[out_i] = xfill >= y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+4949:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4950:             continue
-
      goto __pyx_L3_continue;
-
 4951: 
-
+4952:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4953:             # use y fill value
-
+4954:             out[out_i] = x[xi] >= yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
-
+4955:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4956:             continue
-
      goto __pyx_L3_continue;
-
 4957: 
-
+4958:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+4959:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 4960: 
-
 4961:         # each index in the out_index had to come from either x, y, or both
-
+4962:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+4963:             out[out_i] = x[xi] >= y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) >= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+4964:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4965:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4966:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 4967:             # use y fill value
-
+4968:             out[out_i] = x[xi] >= yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
-
+4969:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4970:         else:
-
 4971:             # use x fill value
-
+4972:             out[out_i] = xfill >= y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_float64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+4973:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 4974: 
-
+4975:     return out, out_index, xfill >= yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill >= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4975, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4975, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4976: 
-
 4977: 
-
+4978: cpdef sparse_ge_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_107sparse_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_ge_float64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_ge_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_107sparse_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_107sparse_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_ge_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ge_float64", 1, 6, 6, 1); __PYX_ERR(2, 4978, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ge_float64", 1, 6, 6, 2); __PYX_ERR(2, 4978, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ge_float64", 1, 6, 6, 3); __PYX_ERR(2, 4978, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ge_float64", 1, 6, 6, 4); __PYX_ERR(2, 4978, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ge_float64", 1, 6, 6, 5); __PYX_ERR(2, 4978, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_ge_float64") < 0)) __PYX_ERR(2, 4978, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 4978, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4979, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_float64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 4980, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[5]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4981, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_ge_float64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4978, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 4979, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4981, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_106sparse_ge_float64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_106sparse_ge_float64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_float64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_ge_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 4978, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4978, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_ge_float64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4978, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4979:                                   SparseIndex xindex, float64_t xfill,
-
 4980:                                   float64_t[:] y,
-
 4981:                                   SparseIndex yindex, float64_t yfill):
-
 4982: 
-
+4983:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+4984:         return block_op_ge_float64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4984, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4984, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4984, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_ge_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4984, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+4985:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4985, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4985, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 4985, __pyx_L1_error)
-
+4986:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+4987:         return int_op_ge_float64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4987, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 4987, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4987, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_ge_float64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4987, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+4988:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4988, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 4988, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 4988, __pyx_L1_error)
-
 4989:     else:
-
+4990:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 4990, __pyx_L1_error)
-  }
-
 4991: 
-
 4992: 
-
+4993: cpdef sparse_fill_ge_float64(float64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_109sparse_fill_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_ge_float64(__pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_ge_float64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_109sparse_fill_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_109sparse_fill_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_float64_t __pyx_v_xfill;
-  __pyx_t_5numpy_float64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_ge_float64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_ge_float64", 1, 2, 2, 1); __PYX_ERR(2, 4993, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_ge_float64") < 0)) __PYX_ERR(2, 4993, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __pyx_PyFloat_AsDouble(values[0]); if (unlikely((__pyx_v_xfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4993, __pyx_L3_error)
-    __pyx_v_yfill = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_yfill == ((npy_float64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 4994, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_ge_float64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 4993, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_108sparse_fill_ge_float64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_108sparse_fill_ge_float64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_float64_t __pyx_v_xfill, __pyx_t_5numpy_float64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_ge_float64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_ge_float64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4993, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ge_float64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 4994:                                        float64_t yfill):
-
+4995:     return xfill >= yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill >= __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4995, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 4996: 
-
 4997: 
-
 4998: @cython.wraparound(False)
-
 4999: @cython.boundscheck(False)
-
+5000: cdef inline tuple block_op_ge_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_ge_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_ge_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5001:                                                 BlockIndex xindex,
-
 5002:                                                 int64_t xfill,
-
 5003:                                                 int64_t[:] y_,
-
 5004:                                                 BlockIndex yindex,
-
 5005:                                                 int64_t yfill):
-
 5006:     '''
-
 5007:     Binary operator on BlockIndex objects with fill values
-
 5008:     '''
-
 5009: 
-
 5010:     cdef:
-
 5011:         BlockIndex out_index
-
+5012:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+5013:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 5014:         int32_t xloc, yloc
-
+5015:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 5016: 
-
 5017:         int64_t[:] x, y
-
 5018:         ndarray[uint8_t, ndim=1] out
-
 5019: 
-
 5020:     # to suppress Cython warning
-
+5021:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5022:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5023: 
-
+5024:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5024, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+5025:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5025, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5025, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5025, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5025, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5025, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5025, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5025, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5025, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5025, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 5025, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5025, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5026: 
-
 5027:     # Wow, what a hack job. Need to do something about this
-
 5028: 
-
 5029:     # walk the two SparseVectors, adding matched locations...
-
+5030:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+5031:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5032:             # use y fill value
-
+5033:             out[out_i] = x[xi] >= yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
-
+5034:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5035: 
-
 5036:             # advance x location
-
+5037:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5038:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5039:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5040:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+5041:             continue
-
      goto __pyx_L3_continue;
-
 5042: 
-
+5043:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5044:             # use x fill value
-
+5045:             out[out_i] = xfill >= y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+5046:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5047: 
-
 5048:             # advance y location
-
+5049:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5050:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5051:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5052:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+5053:             continue
-
      goto __pyx_L3_continue;
-
 5054: 
-
+5055:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+5056:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 5057: 
-
 5058:         # each index in the out_index had to come from either x, y, or both
-
+5059:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+5060:             out[out_i] = x[xi] >= y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) >= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5061:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5062:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5063: 
-
 5064:             # advance both locations
-
+5065:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5066:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5067:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5068:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5069: 
-
+5070:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5071:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5072:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5073:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5074: 
-
+5075:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 5076:             # use y fill value
-
+5077:             out[out_i] = x[xi] >= yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
-
+5078:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5079: 
-
 5080:             # advance x location
-
+5081:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5082:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5083:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5084:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5085:         else:
-
 5086:             # use x fill value
-
+5087:             out[out_i] = xfill >= y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5088:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5089: 
-
 5090:             # advance y location
-
+5091:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5092:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+5093:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5094:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5095: 
-
+5096:     return out, out_index, xfill >= yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill >= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5096, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5096, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5097: 
-
 5098: 
-
 5099: @cython.wraparound(False)
-
 5100: @cython.boundscheck(False)
-
+5101: cdef inline tuple int_op_ge_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_ge_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_ge_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5102:                                               IntIndex xindex,
-
 5103:                                               int64_t xfill,
-
 5104:                                               int64_t[:] y_,
-
 5105:                                               IntIndex yindex,
-
 5106:                                               int64_t yfill):
-
 5107:     cdef:
-
 5108:         IntIndex out_index
-
+5109:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 5110:         int32_t xloc, yloc
-
 5111:         int32_t[:] xindices, yindices, out_indices
-
 5112:         int64_t[:] x, y
-
 5113:         ndarray[uint8_t, ndim=1] out
-
 5114: 
-
 5115:     # suppress Cython compiler warnings due to inlining
-
+5116:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5117:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5118: 
-
 5119:     # need to do this first to know size of result array
-
+5120:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5120, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+5121:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5121, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5121, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5121, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5121, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5121, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5121, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5121, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5121, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5121, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 5121, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5121, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5122: 
-
+5123:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5123, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5124:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5124, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5125:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5125, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 5126: 
-
 5127:     # walk the two SparseVectors, adding matched locations...
-
+5128:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+5129:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5130:             # use x fill value
-
+5131:             out[out_i] = xfill >= y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5132:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5133:             continue
-
      goto __pyx_L3_continue;
-
 5134: 
-
+5135:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5136:             # use y fill value
-
+5137:             out[out_i] = x[xi] >= yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
-
+5138:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5139:             continue
-
      goto __pyx_L3_continue;
-
 5140: 
-
+5141:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+5142:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 5143: 
-
 5144:         # each index in the out_index had to come from either x, y, or both
-
+5145:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+5146:             out[out_i] = x[xi] >= y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) >= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+5147:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5148:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5149:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 5150:             # use y fill value
-
+5151:             out[out_i] = x[xi] >= yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) >= __pyx_v_yfill);
-
+5152:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5153:         else:
-
 5154:             # use x fill value
-
+5155:             out[out_i] = xfill >= y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill >= (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+5156:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 5157: 
-
+5158:     return out, out_index, xfill >= yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyBool_FromLong((__pyx_v_xfill >= __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5158, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5158, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5159: 
-
 5160: 
-
+5161: cpdef sparse_ge_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_111sparse_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_ge_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_ge_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_111sparse_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_111sparse_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_ge_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ge_int64", 1, 6, 6, 1); __PYX_ERR(2, 5161, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ge_int64", 1, 6, 6, 2); __PYX_ERR(2, 5161, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ge_int64", 1, 6, 6, 3); __PYX_ERR(2, 5161, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ge_int64", 1, 6, 6, 4); __PYX_ERR(2, 5161, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_ge_int64", 1, 6, 6, 5); __PYX_ERR(2, 5161, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_ge_int64") < 0)) __PYX_ERR(2, 5161, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 5161, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5162, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 5163, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5164, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_ge_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5161, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 5162, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5164, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_110sparse_ge_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_110sparse_ge_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_ge_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 5161, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5161, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_ge_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5161, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5162:                                   SparseIndex xindex, int64_t xfill,
-
 5163:                                   int64_t[:] y,
-
 5164:                                   SparseIndex yindex, int64_t yfill):
-
 5165: 
-
+5166:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+5167:         return block_op_ge_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5167, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5167, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5167, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_ge_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5167, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+5168:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5168, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5168, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5168, __pyx_L1_error)
-
+5169:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+5170:         return int_op_ge_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5170, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5170, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5170, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_ge_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5170, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+5171:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5171, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5171, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5171, __pyx_L1_error)
-
 5172:     else:
-
+5173:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 5173, __pyx_L1_error)
-  }
-
 5174: 
-
 5175: 
-
+5176: cpdef sparse_fill_ge_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_113sparse_fill_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_ge_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_ge_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_113sparse_fill_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_113sparse_fill_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_ge_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_ge_int64", 1, 2, 2, 1); __PYX_ERR(2, 5176, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_ge_int64") < 0)) __PYX_ERR(2, 5176, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5176, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5177, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_ge_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5176, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_112sparse_fill_ge_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_112sparse_fill_ge_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_ge_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_ge_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5176, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_ge_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5177:                                        int64_t yfill):
-
+5178:     return xfill >= yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyBool_FromLong((__pyx_v_xfill >= __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5178, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5179: 
-
 5180: 
-
 5181: @cython.wraparound(False)
-
 5182: @cython.boundscheck(False)
-
+5183: cdef inline tuple block_op_and_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_and_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_and_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5184:                                                 BlockIndex xindex,
-
 5185:                                                 int64_t xfill,
-
 5186:                                                 int64_t[:] y_,
-
 5187:                                                 BlockIndex yindex,
-
 5188:                                                 int64_t yfill):
-
 5189:     '''
-
 5190:     Binary operator on BlockIndex objects with fill values
-
 5191:     '''
-
 5192: 
-
 5193:     cdef:
-
 5194:         BlockIndex out_index
-
+5195:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+5196:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 5197:         int32_t xloc, yloc
-
+5198:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 5199: 
-
 5200:         int64_t[:] x, y
-
 5201:         ndarray[uint8_t, ndim=1] out
-
 5202: 
-
 5203:     # to suppress Cython warning
-
+5204:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5205:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5206: 
-
+5207:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5207, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+5208:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5208, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5208, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5208, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5208, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5208, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5208, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5208, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5208, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5208, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 5208, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5208, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5209: 
-
 5210:     # Wow, what a hack job. Need to do something about this
-
 5211: 
-
 5212:     # walk the two SparseVectors, adding matched locations...
-
+5213:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+5214:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5215:             # use y fill value
-
+5216:             out[out_i] = x[xi] & yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
-
+5217:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5218: 
-
 5219:             # advance x location
-
+5220:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5221:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5222:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5223:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+5224:             continue
-
      goto __pyx_L3_continue;
-
 5225: 
-
+5226:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5227:             # use x fill value
-
+5228:             out[out_i] = xfill & y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+5229:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5230: 
-
 5231:             # advance y location
-
+5232:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5233:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5234:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5235:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+5236:             continue
-
      goto __pyx_L3_continue;
-
 5237: 
-
+5238:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+5239:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 5240: 
-
 5241:         # each index in the out_index had to come from either x, y, or both
-
+5242:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+5243:             out[out_i] = x[xi] & y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) & (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5244:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5245:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5246: 
-
 5247:             # advance both locations
-
+5248:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5249:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5250:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5251:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5252: 
-
+5253:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5254:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5255:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5256:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5257: 
-
+5258:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 5259:             # use y fill value
-
+5260:             out[out_i] = x[xi] & yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
-
+5261:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5262: 
-
 5263:             # advance x location
-
+5264:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5265:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5266:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5267:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5268:         else:
-
 5269:             # use x fill value
-
+5270:             out[out_i] = xfill & y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5271:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5272: 
-
 5273:             # advance y location
-
+5274:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5275:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+5276:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5277:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5278: 
-
+5279:     return out, out_index, xfill & yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill & __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5279, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5279, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5280: 
-
 5281: 
-
 5282: @cython.wraparound(False)
-
 5283: @cython.boundscheck(False)
-
+5284: cdef inline tuple int_op_and_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_and_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_and_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5285:                                               IntIndex xindex,
-
 5286:                                               int64_t xfill,
-
 5287:                                               int64_t[:] y_,
-
 5288:                                               IntIndex yindex,
-
 5289:                                               int64_t yfill):
-
 5290:     cdef:
-
 5291:         IntIndex out_index
-
+5292:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 5293:         int32_t xloc, yloc
-
 5294:         int32_t[:] xindices, yindices, out_indices
-
 5295:         int64_t[:] x, y
-
 5296:         ndarray[uint8_t, ndim=1] out
-
 5297: 
-
 5298:     # suppress Cython compiler warnings due to inlining
-
+5299:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5300:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5301: 
-
 5302:     # need to do this first to know size of result array
-
+5303:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5303, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+5304:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5304, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5304, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5304, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5304, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5304, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5304, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5304, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5304, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5304, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 5304, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5304, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5305: 
-
+5306:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5306, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5307:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5307, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5308:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5308, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 5309: 
-
 5310:     # walk the two SparseVectors, adding matched locations...
-
+5311:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+5312:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5313:             # use x fill value
-
+5314:             out[out_i] = xfill & y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5315:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5316:             continue
-
      goto __pyx_L3_continue;
-
 5317: 
-
+5318:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5319:             # use y fill value
-
+5320:             out[out_i] = x[xi] & yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
-
+5321:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5322:             continue
-
      goto __pyx_L3_continue;
-
 5323: 
-
+5324:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+5325:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 5326: 
-
 5327:         # each index in the out_index had to come from either x, y, or both
-
+5328:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+5329:             out[out_i] = x[xi] & y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) & (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+5330:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5331:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5332:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 5333:             # use y fill value
-
+5334:             out[out_i] = x[xi] & yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
-
+5335:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5336:         else:
-
 5337:             # use x fill value
-
+5338:             out[out_i] = xfill & y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+5339:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 5340: 
-
+5341:     return out, out_index, xfill & yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill & __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5341, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5341, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5342: 
-
 5343: 
-
+5344: cpdef sparse_and_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_115sparse_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_and_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_and_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_115sparse_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_115sparse_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_and_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_and_int64", 1, 6, 6, 1); __PYX_ERR(2, 5344, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_and_int64", 1, 6, 6, 2); __PYX_ERR(2, 5344, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_and_int64", 1, 6, 6, 3); __PYX_ERR(2, 5344, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_and_int64", 1, 6, 6, 4); __PYX_ERR(2, 5344, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_and_int64", 1, 6, 6, 5); __PYX_ERR(2, 5344, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_and_int64") < 0)) __PYX_ERR(2, 5344, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 5344, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5345, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 5346, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5347, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_and_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5344, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 5345, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5347, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_114sparse_and_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_114sparse_and_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_and_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 5344, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5344, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_and_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5344, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5345:                                   SparseIndex xindex, int64_t xfill,
-
 5346:                                   int64_t[:] y,
-
 5347:                                   SparseIndex yindex, int64_t yfill):
-
 5348: 
-
+5349:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+5350:         return block_op_and_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5350, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5350, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5350, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_and_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5350, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+5351:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5351, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5351, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5351, __pyx_L1_error)
-
+5352:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+5353:         return int_op_and_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5353, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5353, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5353, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_and_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5353, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+5354:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5354, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5354, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5354, __pyx_L1_error)
-
 5355:     else:
-
+5356:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 5356, __pyx_L1_error)
-  }
-
 5357: 
-
 5358: 
-
+5359: cpdef sparse_fill_and_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_117sparse_fill_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_and_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_and_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_117sparse_fill_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_117sparse_fill_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_and_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_and_int64", 1, 2, 2, 1); __PYX_ERR(2, 5359, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_and_int64") < 0)) __PYX_ERR(2, 5359, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5359, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5360, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_and_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5359, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_116sparse_fill_and_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_116sparse_fill_and_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_and_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_and_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5359, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_and_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5360:                                        int64_t yfill):
-
+5361:     return xfill & yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill & __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5361, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5362: 
-
 5363: 
-
 5364: @cython.wraparound(False)
-
 5365: @cython.boundscheck(False)
-
+5366: cdef inline tuple block_op_and_uint8(uint8_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_and_uint8(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_and_uint8", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5367:                                                 BlockIndex xindex,
-
 5368:                                                 uint8_t xfill,
-
 5369:                                                 uint8_t[:] y_,
-
 5370:                                                 BlockIndex yindex,
-
 5371:                                                 uint8_t yfill):
-
 5372:     '''
-
 5373:     Binary operator on BlockIndex objects with fill values
-
 5374:     '''
-
 5375: 
-
 5376:     cdef:
-
 5377:         BlockIndex out_index
-
+5378:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+5379:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 5380:         int32_t xloc, yloc
-
+5381:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 5382: 
-
 5383:         uint8_t[:] x, y
-
 5384:         ndarray[uint8_t, ndim=1] out
-
 5385: 
-
 5386:     # to suppress Cython warning
-
+5387:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5388:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5389: 
-
+5390:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5390, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+5391:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5391, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5391, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5391, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5391, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5391, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5391, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5391, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5391, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5391, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 5391, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5391, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5392: 
-
 5393:     # Wow, what a hack job. Need to do something about this
-
 5394: 
-
 5395:     # walk the two SparseVectors, adding matched locations...
-
+5396:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+5397:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5398:             # use y fill value
-
+5399:             out[out_i] = x[xi] & yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
-
+5400:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5401: 
-
 5402:             # advance x location
-
+5403:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5404:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5405:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5406:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+5407:             continue
-
      goto __pyx_L3_continue;
-
 5408: 
-
+5409:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5410:             # use x fill value
-
+5411:             out[out_i] = xfill & y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+5412:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5413: 
-
 5414:             # advance y location
-
+5415:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5416:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5417:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5418:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+5419:             continue
-
      goto __pyx_L3_continue;
-
 5420: 
-
+5421:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+5422:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 5423: 
-
 5424:         # each index in the out_index had to come from either x, y, or both
-
+5425:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+5426:             out[out_i] = x[xi] & y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) & (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5427:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5428:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5429: 
-
 5430:             # advance both locations
-
+5431:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5432:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5433:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5434:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5435: 
-
+5436:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5437:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5438:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5439:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5440: 
-
+5441:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 5442:             # use y fill value
-
+5443:             out[out_i] = x[xi] & yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
-
+5444:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5445: 
-
 5446:             # advance x location
-
+5447:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5448:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5449:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5450:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5451:         else:
-
 5452:             # use x fill value
-
+5453:             out[out_i] = xfill & y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5454:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5455: 
-
 5456:             # advance y location
-
+5457:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5458:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+5459:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5460:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5461: 
-
+5462:     return out, out_index, xfill & yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_xfill & __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5462, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5462, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5463: 
-
 5464: 
-
 5465: @cython.wraparound(False)
-
 5466: @cython.boundscheck(False)
-
+5467: cdef inline tuple int_op_and_uint8(uint8_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_and_uint8(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_and_uint8", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5468:                                               IntIndex xindex,
-
 5469:                                               uint8_t xfill,
-
 5470:                                               uint8_t[:] y_,
-
 5471:                                               IntIndex yindex,
-
 5472:                                               uint8_t yfill):
-
 5473:     cdef:
-
 5474:         IntIndex out_index
-
+5475:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 5476:         int32_t xloc, yloc
-
 5477:         int32_t[:] xindices, yindices, out_indices
-
 5478:         uint8_t[:] x, y
-
 5479:         ndarray[uint8_t, ndim=1] out
-
 5480: 
-
 5481:     # suppress Cython compiler warnings due to inlining
-
+5482:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5483:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5484: 
-
 5485:     # need to do this first to know size of result array
-
+5486:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5486, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+5487:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5487, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5487, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5487, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5487, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5487, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5487, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5487, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5487, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5487, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 5487, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5487, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5488: 
-
+5489:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5489, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5490:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5490, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5491:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5491, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 5492: 
-
 5493:     # walk the two SparseVectors, adding matched locations...
-
+5494:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+5495:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5496:             # use x fill value
-
+5497:             out[out_i] = xfill & y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5498:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5499:             continue
-
      goto __pyx_L3_continue;
-
 5500: 
-
+5501:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5502:             # use y fill value
-
+5503:             out[out_i] = x[xi] & yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
-
+5504:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5505:             continue
-
      goto __pyx_L3_continue;
-
 5506: 
-
+5507:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+5508:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 5509: 
-
 5510:         # each index in the out_index had to come from either x, y, or both
-
+5511:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+5512:             out[out_i] = x[xi] & y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) & (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+5513:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5514:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5515:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 5516:             # use y fill value
-
+5517:             out[out_i] = x[xi] & yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) & __pyx_v_yfill);
-
+5518:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5519:         else:
-
 5520:             # use x fill value
-
+5521:             out[out_i] = xfill & y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill & (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+5522:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 5523: 
-
+5524:     return out, out_index, xfill & yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_xfill & __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5524, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5524, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5525: 
-
 5526: 
-
+5527: cpdef sparse_and_uint8(uint8_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_119sparse_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_and_uint8(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_and_uint8", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_119sparse_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_119sparse_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_uint8_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_uint8_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_and_uint8 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_and_uint8", 1, 6, 6, 1); __PYX_ERR(2, 5527, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_and_uint8", 1, 6, 6, 2); __PYX_ERR(2, 5527, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_and_uint8", 1, 6, 6, 3); __PYX_ERR(2, 5527, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_and_uint8", 1, 6, 6, 4); __PYX_ERR(2, 5527, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_and_uint8", 1, 6, 6, 5); __PYX_ERR(2, 5527, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_and_uint8") < 0)) __PYX_ERR(2, 5527, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 5527, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_uint8(values[2]); if (unlikely((__pyx_v_xfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5528, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 5529, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_uint8(values[5]); if (unlikely((__pyx_v_yfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5530, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_and_uint8", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5527, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 5528, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5530, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_118sparse_and_uint8(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_118sparse_and_uint8(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_and_uint8", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 5527, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5527, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_and_uint8(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5527, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5528:                                   SparseIndex xindex, uint8_t xfill,
-
 5529:                                   uint8_t[:] y,
-
 5530:                                   SparseIndex yindex, uint8_t yfill):
-
 5531: 
-
+5532:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+5533:         return block_op_and_uint8(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5533, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5533, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5533, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_and_uint8(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5533, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+5534:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5534, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5534, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5534, __pyx_L1_error)
-
+5535:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+5536:         return int_op_and_uint8(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5536, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5536, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5536, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_and_uint8(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5536, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+5537:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5537, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5537, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5537, __pyx_L1_error)
-
 5538:     else:
-
+5539:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 5539, __pyx_L1_error)
-  }
-
 5540: 
-
 5541: 
-
+5542: cpdef sparse_fill_and_uint8(uint8_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_121sparse_fill_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_and_uint8(__pyx_t_5numpy_uint8_t __pyx_v_xfill, __pyx_t_5numpy_uint8_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_and_uint8", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_121sparse_fill_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_121sparse_fill_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_uint8_t __pyx_v_xfill;
-  __pyx_t_5numpy_uint8_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_and_uint8 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_and_uint8", 1, 2, 2, 1); __PYX_ERR(2, 5542, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_and_uint8") < 0)) __PYX_ERR(2, 5542, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_uint8(values[0]); if (unlikely((__pyx_v_xfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5542, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_uint8(values[1]); if (unlikely((__pyx_v_yfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5543, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_and_uint8", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5542, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_120sparse_fill_and_uint8(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_120sparse_fill_and_uint8(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_and_uint8", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_and_uint8(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5542, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_and_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5543:                                        uint8_t yfill):
-
+5544:     return xfill & yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_xfill & __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5544, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5545: 
-
 5546: 
-
 5547: @cython.wraparound(False)
-
 5548: @cython.boundscheck(False)
-
+5549: cdef inline tuple block_op_or_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_or_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_or_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5550:                                                 BlockIndex xindex,
-
 5551:                                                 int64_t xfill,
-
 5552:                                                 int64_t[:] y_,
-
 5553:                                                 BlockIndex yindex,
-
 5554:                                                 int64_t yfill):
-
 5555:     '''
-
 5556:     Binary operator on BlockIndex objects with fill values
-
 5557:     '''
-
 5558: 
-
 5559:     cdef:
-
 5560:         BlockIndex out_index
-
+5561:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+5562:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 5563:         int32_t xloc, yloc
-
+5564:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 5565: 
-
 5566:         int64_t[:] x, y
-
 5567:         ndarray[uint8_t, ndim=1] out
-
 5568: 
-
 5569:     # to suppress Cython warning
-
+5570:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5571:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5572: 
-
+5573:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5573, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+5574:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5574, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5574, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5574, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5574, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5574, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5574, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5574, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5574, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5574, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 5574, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5574, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5575: 
-
 5576:     # Wow, what a hack job. Need to do something about this
-
 5577: 
-
 5578:     # walk the two SparseVectors, adding matched locations...
-
+5579:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+5580:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5581:             # use y fill value
-
+5582:             out[out_i] = x[xi] | yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
-
+5583:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5584: 
-
 5585:             # advance x location
-
+5586:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5587:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5588:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5589:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+5590:             continue
-
      goto __pyx_L3_continue;
-
 5591: 
-
+5592:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5593:             # use x fill value
-
+5594:             out[out_i] = xfill | y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+5595:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5596: 
-
 5597:             # advance y location
-
+5598:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5599:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5600:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5601:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+5602:             continue
-
      goto __pyx_L3_continue;
-
 5603: 
-
+5604:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+5605:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 5606: 
-
 5607:         # each index in the out_index had to come from either x, y, or both
-
+5608:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+5609:             out[out_i] = x[xi] | y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) | (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5610:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5611:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5612: 
-
 5613:             # advance both locations
-
+5614:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5615:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5616:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5617:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5618: 
-
+5619:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5620:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5621:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5622:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5623: 
-
+5624:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 5625:             # use y fill value
-
+5626:             out[out_i] = x[xi] | yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
-
+5627:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5628: 
-
 5629:             # advance x location
-
+5630:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5631:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5632:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5633:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5634:         else:
-
 5635:             # use x fill value
-
+5636:             out[out_i] = xfill | y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5637:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5638: 
-
 5639:             # advance y location
-
+5640:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5641:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+5642:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5643:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5644: 
-
+5645:     return out, out_index, xfill | yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill | __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5645, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5645, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5646: 
-
 5647: 
-
 5648: @cython.wraparound(False)
-
 5649: @cython.boundscheck(False)
-
+5650: cdef inline tuple int_op_or_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_or_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_or_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5651:                                               IntIndex xindex,
-
 5652:                                               int64_t xfill,
-
 5653:                                               int64_t[:] y_,
-
 5654:                                               IntIndex yindex,
-
 5655:                                               int64_t yfill):
-
 5656:     cdef:
-
 5657:         IntIndex out_index
-
+5658:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 5659:         int32_t xloc, yloc
-
 5660:         int32_t[:] xindices, yindices, out_indices
-
 5661:         int64_t[:] x, y
-
 5662:         ndarray[uint8_t, ndim=1] out
-
 5663: 
-
 5664:     # suppress Cython compiler warnings due to inlining
-
+5665:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5666:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5667: 
-
 5668:     # need to do this first to know size of result array
-
+5669:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5669, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+5670:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5670, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5670, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5670, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5670, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5670, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5670, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5670, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5670, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5670, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 5670, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5670, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5671: 
-
+5672:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5672, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5673:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5673, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5674:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5674, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 5675: 
-
 5676:     # walk the two SparseVectors, adding matched locations...
-
+5677:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+5678:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5679:             # use x fill value
-
+5680:             out[out_i] = xfill | y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5681:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5682:             continue
-
      goto __pyx_L3_continue;
-
 5683: 
-
+5684:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5685:             # use y fill value
-
+5686:             out[out_i] = x[xi] | yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
-
+5687:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5688:             continue
-
      goto __pyx_L3_continue;
-
 5689: 
-
+5690:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+5691:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 5692: 
-
 5693:         # each index in the out_index had to come from either x, y, or both
-
+5694:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+5695:             out[out_i] = x[xi] | y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) | (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+5696:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5697:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5698:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 5699:             # use y fill value
-
+5700:             out[out_i] = x[xi] | yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
-
+5701:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5702:         else:
-
 5703:             # use x fill value
-
+5704:             out[out_i] = xfill | y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+5705:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 5706: 
-
+5707:     return out, out_index, xfill | yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill | __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5707, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5707, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5708: 
-
 5709: 
-
+5710: cpdef sparse_or_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_123sparse_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_or_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_or_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_123sparse_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_123sparse_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_or_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_or_int64", 1, 6, 6, 1); __PYX_ERR(2, 5710, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_or_int64", 1, 6, 6, 2); __PYX_ERR(2, 5710, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_or_int64", 1, 6, 6, 3); __PYX_ERR(2, 5710, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_or_int64", 1, 6, 6, 4); __PYX_ERR(2, 5710, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_or_int64", 1, 6, 6, 5); __PYX_ERR(2, 5710, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_or_int64") < 0)) __PYX_ERR(2, 5710, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 5710, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5711, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 5712, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5713, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_or_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5710, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 5711, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5713, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_122sparse_or_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_122sparse_or_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_or_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 5710, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5710, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_or_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5710, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5711:                                   SparseIndex xindex, int64_t xfill,
-
 5712:                                   int64_t[:] y,
-
 5713:                                   SparseIndex yindex, int64_t yfill):
-
 5714: 
-
+5715:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+5716:         return block_op_or_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5716, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5716, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5716, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_or_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5716, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+5717:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5717, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5717, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5717, __pyx_L1_error)
-
+5718:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+5719:         return int_op_or_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5719, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5719, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5719, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_or_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5719, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+5720:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5720, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5720, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5720, __pyx_L1_error)
-
 5721:     else:
-
+5722:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 5722, __pyx_L1_error)
-  }
-
 5723: 
-
 5724: 
-
+5725: cpdef sparse_fill_or_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_125sparse_fill_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_or_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_or_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_125sparse_fill_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_125sparse_fill_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_or_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_or_int64", 1, 2, 2, 1); __PYX_ERR(2, 5725, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_or_int64") < 0)) __PYX_ERR(2, 5725, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5725, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5726, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_or_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5725, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_124sparse_fill_or_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_124sparse_fill_or_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_or_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_or_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5725, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_or_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5726:                                        int64_t yfill):
-
+5727:     return xfill | yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill | __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5727, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5728: 
-
 5729: 
-
 5730: @cython.wraparound(False)
-
 5731: @cython.boundscheck(False)
-
+5732: cdef inline tuple block_op_or_uint8(uint8_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_or_uint8(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_or_uint8", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5733:                                                 BlockIndex xindex,
-
 5734:                                                 uint8_t xfill,
-
 5735:                                                 uint8_t[:] y_,
-
 5736:                                                 BlockIndex yindex,
-
 5737:                                                 uint8_t yfill):
-
 5738:     '''
-
 5739:     Binary operator on BlockIndex objects with fill values
-
 5740:     '''
-
 5741: 
-
 5742:     cdef:
-
 5743:         BlockIndex out_index
-
+5744:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+5745:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 5746:         int32_t xloc, yloc
-
+5747:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 5748: 
-
 5749:         uint8_t[:] x, y
-
 5750:         ndarray[uint8_t, ndim=1] out
-
 5751: 
-
 5752:     # to suppress Cython warning
-
+5753:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5754:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5755: 
-
+5756:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5756, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+5757:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5757, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5757, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5757, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5757, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5757, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5757, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5757, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5757, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5757, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 5757, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5757, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5758: 
-
 5759:     # Wow, what a hack job. Need to do something about this
-
 5760: 
-
 5761:     # walk the two SparseVectors, adding matched locations...
-
+5762:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+5763:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5764:             # use y fill value
-
+5765:             out[out_i] = x[xi] | yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
-
+5766:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5767: 
-
 5768:             # advance x location
-
+5769:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5770:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5771:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5772:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+5773:             continue
-
      goto __pyx_L3_continue;
-
 5774: 
-
+5775:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5776:             # use x fill value
-
+5777:             out[out_i] = xfill | y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+5778:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5779: 
-
 5780:             # advance y location
-
+5781:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5782:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5783:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5784:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+5785:             continue
-
      goto __pyx_L3_continue;
-
 5786: 
-
+5787:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+5788:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 5789: 
-
 5790:         # each index in the out_index had to come from either x, y, or both
-
+5791:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+5792:             out[out_i] = x[xi] | y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) | (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5793:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5794:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5795: 
-
 5796:             # advance both locations
-
+5797:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5798:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5799:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5800:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5801: 
-
+5802:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5803:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5804:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5805:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5806: 
-
+5807:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 5808:             # use y fill value
-
+5809:             out[out_i] = x[xi] | yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
-
+5810:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5811: 
-
 5812:             # advance x location
-
+5813:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5814:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5815:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5816:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5817:         else:
-
 5818:             # use x fill value
-
+5819:             out[out_i] = xfill | y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5820:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5821: 
-
 5822:             # advance y location
-
+5823:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5824:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+5825:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5826:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5827: 
-
+5828:     return out, out_index, xfill | yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_xfill | __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5828, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5828, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5829: 
-
 5830: 
-
 5831: @cython.wraparound(False)
-
 5832: @cython.boundscheck(False)
-
+5833: cdef inline tuple int_op_or_uint8(uint8_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_or_uint8(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_or_uint8", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5834:                                               IntIndex xindex,
-
 5835:                                               uint8_t xfill,
-
 5836:                                               uint8_t[:] y_,
-
 5837:                                               IntIndex yindex,
-
 5838:                                               uint8_t yfill):
-
 5839:     cdef:
-
 5840:         IntIndex out_index
-
+5841:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 5842:         int32_t xloc, yloc
-
 5843:         int32_t[:] xindices, yindices, out_indices
-
 5844:         uint8_t[:] x, y
-
 5845:         ndarray[uint8_t, ndim=1] out
-
 5846: 
-
 5847:     # suppress Cython compiler warnings due to inlining
-
+5848:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5849:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5850: 
-
 5851:     # need to do this first to know size of result array
-
+5852:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5852, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+5853:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5853, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5853, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5853, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5853, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5853, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5853, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5853, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5853, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5853, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 5853, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5853, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5854: 
-
+5855:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5855, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5856:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5856, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5857:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 5857, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 5858: 
-
 5859:     # walk the two SparseVectors, adding matched locations...
-
+5860:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+5861:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5862:             # use x fill value
-
+5863:             out[out_i] = xfill | y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5864:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5865:             continue
-
      goto __pyx_L3_continue;
-
 5866: 
-
+5867:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5868:             # use y fill value
-
+5869:             out[out_i] = x[xi] | yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
-
+5870:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5871:             continue
-
      goto __pyx_L3_continue;
-
 5872: 
-
+5873:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+5874:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 5875: 
-
 5876:         # each index in the out_index had to come from either x, y, or both
-
+5877:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+5878:             out[out_i] = x[xi] | y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) | (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+5879:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5880:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5881:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 5882:             # use y fill value
-
+5883:             out[out_i] = x[xi] | yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) | __pyx_v_yfill);
-
+5884:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5885:         else:
-
 5886:             # use x fill value
-
+5887:             out[out_i] = xfill | y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill | (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+5888:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 5889: 
-
+5890:     return out, out_index, xfill | yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_xfill | __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5890, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5890, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5891: 
-
 5892: 
-
+5893: cpdef sparse_or_uint8(uint8_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_127sparse_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_or_uint8(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_or_uint8", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_127sparse_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_127sparse_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_uint8_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_uint8_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_or_uint8 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_or_uint8", 1, 6, 6, 1); __PYX_ERR(2, 5893, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_or_uint8", 1, 6, 6, 2); __PYX_ERR(2, 5893, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_or_uint8", 1, 6, 6, 3); __PYX_ERR(2, 5893, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_or_uint8", 1, 6, 6, 4); __PYX_ERR(2, 5893, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_or_uint8", 1, 6, 6, 5); __PYX_ERR(2, 5893, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_or_uint8") < 0)) __PYX_ERR(2, 5893, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 5893, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_uint8(values[2]); if (unlikely((__pyx_v_xfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5894, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 5895, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_uint8(values[5]); if (unlikely((__pyx_v_yfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5896, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_or_uint8", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5893, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 5894, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5896, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_126sparse_or_uint8(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_126sparse_or_uint8(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_or_uint8", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 5893, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5893, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_or_uint8(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5893, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5894:                                   SparseIndex xindex, uint8_t xfill,
-
 5895:                                   uint8_t[:] y,
-
 5896:                                   SparseIndex yindex, uint8_t yfill):
-
 5897: 
-
+5898:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+5899:         return block_op_or_uint8(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5899, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5899, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5899, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_or_uint8(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5899, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+5900:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5900, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5900, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 5900, __pyx_L1_error)
-
+5901:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+5902:         return int_op_or_uint8(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5902, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5902, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5902, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_or_uint8(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5902, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+5903:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5903, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5903, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 5903, __pyx_L1_error)
-
 5904:     else:
-
+5905:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 5905, __pyx_L1_error)
-  }
-
 5906: 
-
 5907: 
-
+5908: cpdef sparse_fill_or_uint8(uint8_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_129sparse_fill_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_or_uint8(__pyx_t_5numpy_uint8_t __pyx_v_xfill, __pyx_t_5numpy_uint8_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_or_uint8", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_129sparse_fill_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_129sparse_fill_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_uint8_t __pyx_v_xfill;
-  __pyx_t_5numpy_uint8_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_or_uint8 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_or_uint8", 1, 2, 2, 1); __PYX_ERR(2, 5908, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_or_uint8") < 0)) __PYX_ERR(2, 5908, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_uint8(values[0]); if (unlikely((__pyx_v_xfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5908, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_uint8(values[1]); if (unlikely((__pyx_v_yfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 5909, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_or_uint8", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 5908, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_128sparse_fill_or_uint8(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_128sparse_fill_or_uint8(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_or_uint8", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_or_uint8(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5908, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_or_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5909:                                        uint8_t yfill):
-
+5910:     return xfill | yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_xfill | __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5910, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 5911: 
-
 5912: 
-
 5913: @cython.wraparound(False)
-
 5914: @cython.boundscheck(False)
-
+5915: cdef inline tuple block_op_xor_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_xor_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_xor_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 5916:                                                 BlockIndex xindex,
-
 5917:                                                 int64_t xfill,
-
 5918:                                                 int64_t[:] y_,
-
 5919:                                                 BlockIndex yindex,
-
 5920:                                                 int64_t yfill):
-
 5921:     '''
-
 5922:     Binary operator on BlockIndex objects with fill values
-
 5923:     '''
-
 5924: 
-
 5925:     cdef:
-
 5926:         BlockIndex out_index
-
+5927:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+5928:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 5929:         int32_t xloc, yloc
-
+5930:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 5931: 
-
 5932:         int64_t[:] x, y
-
 5933:         ndarray[uint8_t, ndim=1] out
-
 5934: 
-
 5935:     # to suppress Cython warning
-
+5936:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5937:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5938: 
-
+5939:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5939, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+5940:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5940, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 5940, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5940, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5940, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5940, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 5940, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5940, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 5940, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 5940, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 5940, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 5940, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5941: 
-
 5942:     # Wow, what a hack job. Need to do something about this
-
 5943: 
-
 5944:     # walk the two SparseVectors, adding matched locations...
-
+5945:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+5946:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5947:             # use y fill value
-
+5948:             out[out_i] = x[xi] ^ yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
-
+5949:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5950: 
-
 5951:             # advance x location
-
+5952:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5953:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5954:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5955:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+5956:             continue
-
      goto __pyx_L3_continue;
-
 5957: 
-
+5958:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5959:             # use x fill value
-
+5960:             out[out_i] = xfill ^ y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+5961:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5962: 
-
 5963:             # advance y location
-
+5964:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5965:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5966:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5967:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+5968:             continue
-
      goto __pyx_L3_continue;
-
 5969: 
-
+5970:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+5971:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 5972: 
-
 5973:         # each index in the out_index had to come from either x, y, or both
-
+5974:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+5975:             out[out_i] = x[xi] ^ y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) ^ (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+5976:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5977:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5978: 
-
 5979:             # advance both locations
-
+5980:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5981:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5982:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5983:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5984: 
-
+5985:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5986:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5987:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5988:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5989: 
-
+5990:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 5991:             # use y fill value
-
+5992:             out[out_i] = x[xi] ^ yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
-
+5993:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5994: 
-
 5995:             # advance x location
-
+5996:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5997:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5998:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5999:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 6000:         else:
-
 6001:             # use x fill value
-
+6002:             out[out_i] = xfill ^ y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+6003:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 6004: 
-
 6005:             # advance y location
-
+6006:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+6007:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+6008:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+6009:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 6010: 
-
+6011:     return out, out_index, xfill ^ yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill ^ __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6011, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6011, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 6012: 
-
 6013: 
-
 6014: @cython.wraparound(False)
-
 6015: @cython.boundscheck(False)
-
+6016: cdef inline tuple int_op_xor_int64(int64_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_xor_int64(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_xor_int64", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 6017:                                               IntIndex xindex,
-
 6018:                                               int64_t xfill,
-
 6019:                                               int64_t[:] y_,
-
 6020:                                               IntIndex yindex,
-
 6021:                                               int64_t yfill):
-
 6022:     cdef:
-
 6023:         IntIndex out_index
-
+6024:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 6025:         int32_t xloc, yloc
-
 6026:         int32_t[:] xindices, yindices, out_indices
-
 6027:         int64_t[:] x, y
-
 6028:         ndarray[uint8_t, ndim=1] out
-
 6029: 
-
 6030:     # suppress Cython compiler warnings due to inlining
-
+6031:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+6032:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 6033: 
-
 6034:     # need to do this first to know size of result array
-
+6035:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6035, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+6036:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6036, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6036, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6036, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6036, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6036, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6036, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6036, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 6036, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6036, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 6036, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 6036, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 6037: 
-
+6038:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 6038, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+6039:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 6039, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+6040:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 6040, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 6041: 
-
 6042:     # walk the two SparseVectors, adding matched locations...
-
+6043:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+6044:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 6045:             # use x fill value
-
+6046:             out[out_i] = xfill ^ y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+6047:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+6048:             continue
-
      goto __pyx_L3_continue;
-
 6049: 
-
+6050:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 6051:             # use y fill value
-
+6052:             out[out_i] = x[xi] ^ yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
-
+6053:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+6054:             continue
-
      goto __pyx_L3_continue;
-
 6055: 
-
+6056:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+6057:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 6058: 
-
 6059:         # each index in the out_index had to come from either x, y, or both
-
+6060:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+6061:             out[out_i] = x[xi] ^ y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) ^ (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+6062:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+6063:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+6064:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 6065:             # use y fill value
-
+6066:             out[out_i] = x[xi] ^ yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
-
+6067:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 6068:         else:
-
 6069:             # use x fill value
-
+6070:             out[out_i] = xfill ^ y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_int64_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+6071:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 6072: 
-
+6073:     return out, out_index, xfill ^ yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill ^ __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6073, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6073, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 6074: 
-
 6075: 
-
+6076: cpdef sparse_xor_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_131sparse_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_xor_int64(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_xor_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_131sparse_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_131sparse_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_xor_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_xor_int64", 1, 6, 6, 1); __PYX_ERR(2, 6076, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_xor_int64", 1, 6, 6, 2); __PYX_ERR(2, 6076, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_xor_int64", 1, 6, 6, 3); __PYX_ERR(2, 6076, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_xor_int64", 1, 6, 6, 4); __PYX_ERR(2, 6076, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_xor_int64", 1, 6, 6, 5); __PYX_ERR(2, 6076, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_xor_int64") < 0)) __PYX_ERR(2, 6076, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 6076, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[2]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6077, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int64_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 6078, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[5]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6079, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_xor_int64", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 6076, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 6077, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 6079, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_130sparse_xor_int64(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_130sparse_xor_int64(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_int64_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_xor_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 6076, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 6076, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_xor_int64(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6076, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 6077:                                   SparseIndex xindex, int64_t xfill,
-
 6078:                                   int64_t[:] y,
-
 6079:                                   SparseIndex yindex, int64_t yfill):
-
 6080: 
-
+6081:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+6082:         return block_op_xor_int64(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6082, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6082, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 6082, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_xor_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6082, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+6083:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6083, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6083, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 6083, __pyx_L1_error)
-
+6084:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+6085:         return int_op_xor_int64(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6085, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6085, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 6085, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_xor_int64(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6085, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+6086:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6086, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6086, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 6086, __pyx_L1_error)
-
 6087:     else:
-
+6088:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 6088, __pyx_L1_error)
-  }
-
 6089: 
-
 6090: 
-
+6091: cpdef sparse_fill_xor_int64(int64_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_133sparse_fill_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_xor_int64(__pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_xor_int64", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_133sparse_fill_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_133sparse_fill_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_int64_t __pyx_v_xfill;
-  __pyx_t_5numpy_int64_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_xor_int64 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_xor_int64", 1, 2, 2, 1); __PYX_ERR(2, 6091, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_xor_int64") < 0)) __PYX_ERR(2, 6091, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_int64(values[0]); if (unlikely((__pyx_v_xfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6091, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_int64(values[1]); if (unlikely((__pyx_v_yfill == ((npy_int64)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6092, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_xor_int64", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 6091, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_132sparse_fill_xor_int64(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_132sparse_fill_xor_int64(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_int64_t __pyx_v_xfill, __pyx_t_5numpy_int64_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_xor_int64", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_xor_int64(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6091, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_xor_int64", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 6092:                                        int64_t yfill):
-
+6093:     return xfill ^ yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int64((__pyx_v_xfill ^ __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6093, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 6094: 
-
 6095: 
-
 6096: @cython.wraparound(False)
-
 6097: @cython.boundscheck(False)
-
+6098: cdef inline tuple block_op_xor_uint8(uint8_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_block_op_xor_uint8(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xbp;
-  __pyx_t_5numpy_int32_t __pyx_v_ybp;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  Py_ssize_t __pyx_v_xblock;
-  Py_ssize_t __pyx_v_yblock;
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("block_op_xor_uint8", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.block_op_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 6099:                                                 BlockIndex xindex,
-
 6100:                                                 uint8_t xfill,
-
 6101:                                                 uint8_t[:] y_,
-
 6102:                                                 BlockIndex yindex,
-
 6103:                                                 uint8_t yfill):
-
 6104:     '''
-
 6105:     Binary operator on BlockIndex objects with fill values
-
 6106:     '''
-
 6107: 
-
 6108:     cdef:
-
 6109:         BlockIndex out_index
-
+6110:         Py_ssize_t xi = 0, yi = 0, out_i = 0 # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
+6111:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 6112:         int32_t xloc, yloc
-
+6113:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 6114: 
-
 6115:         uint8_t[:] x, y
-
 6116:         ndarray[uint8_t, ndim=1] out
-
 6117: 
-
 6118:     # to suppress Cython warning
-
+6119:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+6120:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 6121: 
-
+6122:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_BlockIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6122, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+6123:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6123, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6123, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyInt_From_npy_int32(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6123, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6123, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6123, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6123, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6123, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 6123, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6123, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 6123, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 6123, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 6124: 
-
 6125:     # Wow, what a hack job. Need to do something about this
-
 6126: 
-
 6127:     # walk the two SparseVectors, adding matched locations...
-
+6128:     for out_i in range(out_index.npoints):
-
  __pyx_t_11 = __pyx_v_out_index->npoints;
-  __pyx_t_12 = __pyx_t_11;
-  for (__pyx_t_13 = 0; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
-    __pyx_v_out_i = __pyx_t_13;
-
+6129:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 6130:             # use y fill value
-
+6131:             out[out_i] = x[xi] ^ yfill
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
-
+6132:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 6133: 
-
 6134:             # advance x location
-
+6135:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+6136:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+6137:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+6138:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+6139:             continue
-
      goto __pyx_L3_continue;
-
 6140: 
-
+6141:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 6142:             # use x fill value
-
+6143:             out[out_i] = xfill ^ y[yi]
-
      __pyx_t_15 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_15 * __pyx_v_y.strides[0]) ))));
-
+6144:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 6145: 
-
 6146:             # advance y location
-
+6147:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+6148:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+6149:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+6150:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+6151:             continue
-
      goto __pyx_L3_continue;
-
 6152: 
-
+6153:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+6154:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 6155: 
-
 6156:         # each index in the out_index had to come from either x, y, or both
-
+6157:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+6158:             out[out_i] = x[xi] ^ y[yi]
-
      __pyx_t_15 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_15 * __pyx_v_x.strides[0]) ))) ^ (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+6159:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+6160:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 6161: 
-
 6162:             # advance both locations
-
+6163:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+6164:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+6165:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+6166:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 6167: 
-
+6168:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+6169:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+6170:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+6171:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 6172: 
-
+6173:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 6174:             # use y fill value
-
+6175:             out[out_i] = x[xi] ^ yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
-
+6176:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 6177: 
-
 6178:             # advance x location
-
+6179:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+6180:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+6181:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+6182:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 6183:         else:
-
 6184:             # use x fill value
-
+6185:             out[out_i] = xfill ^ y[yi]
-
    /*else*/ {
-      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_15 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_15, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+6186:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 6187: 
-
 6188:             # advance y location
-
+6189:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+6190:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-    }
-    __pyx_L9:;
-    __pyx_L3_continue:;
-  }
-
+6191:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+6192:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 6193: 
-
+6194:     return out, out_index, xfill ^ yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_xfill ^ __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6194, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6194, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 6195: 
-
 6196: 
-
 6197: @cython.wraparound(False)
-
 6198: @cython.boundscheck(False)
-
+6199: cdef inline tuple int_op_xor_uint8(uint8_t[:] x_,
-
static CYTHON_INLINE PyObject *__pyx_f_6pandas_5_libs_6sparse_int_op_xor_uint8(__Pyx_memviewslice __pyx_v_x_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y_, struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
-  struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *__pyx_v_out_index = 0;
-  Py_ssize_t __pyx_v_xi;
-  Py_ssize_t __pyx_v_yi;
-  Py_ssize_t __pyx_v_out_i;
-  __pyx_t_5numpy_int32_t __pyx_v_xloc;
-  __pyx_t_5numpy_int32_t __pyx_v_yloc;
-  __Pyx_memviewslice __pyx_v_xindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_yindices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  CYTHON_UNUSED __Pyx_memviewslice __pyx_v_out_indices = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  PyArrayObject *__pyx_v_out = 0;
-  __Pyx_LocalBuf_ND __pyx_pybuffernd_out;
-  __Pyx_Buffer __pyx_pybuffer_out;
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("int_op_xor_uint8", 0);
-  __pyx_pybuffer_out.pybuffer.buf = NULL;
-  __pyx_pybuffer_out.refcount = 0;
-  __pyx_pybuffernd_out.data = NULL;
-  __pyx_pybuffernd_out.rcbuffer = &__pyx_pybuffer_out;
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_XDECREF(__pyx_t_2);
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __PYX_XDEC_MEMVIEW(&__pyx_t_11, 1);
-  { PyObject *__pyx_type, *__pyx_value, *__pyx_tb;
-    __Pyx_PyThreadState_declare
-    __Pyx_PyThreadState_assign
-    __Pyx_ErrFetch(&__pyx_type, &__pyx_value, &__pyx_tb);
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __Pyx_ErrRestore(__pyx_type, __pyx_value, __pyx_tb);}
-  __Pyx_AddTraceback("pandas._libs.sparse.int_op_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  goto __pyx_L2;
-  __pyx_L0:;
-  __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-  __pyx_L2:;
-  __Pyx_XDECREF((PyObject *)__pyx_v_out_index);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_xindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_yindices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_out_indices, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XDECREF((PyObject *)__pyx_v_out);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 6200:                                               IntIndex xindex,
-
 6201:                                               uint8_t xfill,
-
 6202:                                               uint8_t[:] y_,
-
 6203:                                               IntIndex yindex,
-
 6204:                                               uint8_t yfill):
-
 6205:     cdef:
-
 6206:         IntIndex out_index
-
+6207:         Py_ssize_t xi = 0, yi = 0, out_i = 0  # fp buf indices
-
  __pyx_v_xi = 0;
-  __pyx_v_yi = 0;
-  __pyx_v_out_i = 0;
-
 6208:         int32_t xloc, yloc
-
 6209:         int32_t[:] xindices, yindices, out_indices
-
 6210:         uint8_t[:] x, y
-
 6211:         ndarray[uint8_t, ndim=1] out
-
 6212: 
-
 6213:     # suppress Cython compiler warnings due to inlining
-
+6214:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+6215:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 6216: 
-
 6217:     # need to do this first to know size of result array
-
+6218:     out_index = xindex.make_union(yindex)
-
  __pyx_t_1 = ((PyObject *)((struct __pyx_vtabstruct_6pandas_5_libs_6sparse_IntIndex *)__pyx_v_xindex->__pyx_vtab)->make_union(__pyx_v_xindex, ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)__pyx_v_yindex), 0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6218, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_v_out_index = ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_1);
-  __pyx_t_1 = 0;
-
+6219:     out = np.empty(out_index.npoints, dtype=np.uint8)
-
  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_np); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6219, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_empty); if (unlikely(!__pyx_t_2)) __PYX_ERR(2, 6219, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyInt_FromSsize_t(__pyx_v_out_index->npoints); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6219, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6219, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_3);
-  __Pyx_GIVEREF(__pyx_t_1);
-  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
-  __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6219, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_np); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6219, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_4, __pyx_n_s_uint8); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6219, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dtype, __pyx_t_5) < 0) __PYX_ERR(2, 6219, __pyx_L1_error)
-  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_3, __pyx_t_1); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6219, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __Pyx_DECREF(__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_ERR(2, 6219, __pyx_L1_error)
-  __pyx_t_6 = ((PyArrayObject *)__pyx_t_5);
-  {
-    __Pyx_BufFmt_StackElem __pyx_stack[1];
-    __Pyx_SafeReleaseBuffer(&__pyx_pybuffernd_out.rcbuffer->pybuffer);
-    __pyx_t_7 = __Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_t_6, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack);
-    if (unlikely(__pyx_t_7 < 0)) {
-      PyErr_Fetch(&__pyx_t_8, &__pyx_t_9, &__pyx_t_10);
-      if (unlikely(__Pyx_GetBufferAndValidate(&__pyx_pybuffernd_out.rcbuffer->pybuffer, (PyObject*)__pyx_v_out, &__Pyx_TypeInfo_nn___pyx_t_5numpy_uint8_t, PyBUF_FORMAT| PyBUF_STRIDES| PyBUF_WRITABLE, 1, 0, __pyx_stack) == -1)) {
-        Py_XDECREF(__pyx_t_8); Py_XDECREF(__pyx_t_9); Py_XDECREF(__pyx_t_10);
-        __Pyx_RaiseBufferFallbackError();
-      } else {
-        PyErr_Restore(__pyx_t_8, __pyx_t_9, __pyx_t_10);
-      }
-      __pyx_t_8 = __pyx_t_9 = __pyx_t_10 = 0;
-    }
-    __pyx_pybuffernd_out.diminfo[0].strides = __pyx_pybuffernd_out.rcbuffer->pybuffer.strides[0]; __pyx_pybuffernd_out.diminfo[0].shape = __pyx_pybuffernd_out.rcbuffer->pybuffer.shape[0];
-    if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(2, 6219, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 6220: 
-
+6221:     xindices = xindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_xindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 6221, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+6222:     yindices = yindex.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_yindex->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 6222, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+6223:     out_indices = out_index.indices
-
  __pyx_t_11 = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_int32_t(((PyObject *)__pyx_v_out_index->indices), PyBUF_WRITABLE); if (unlikely(!__pyx_t_11.memview)) __PYX_ERR(2, 6223, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 6224: 
-
 6225:     # walk the two SparseVectors, adding matched locations...
-
+6226:     for out_i in range(out_index.npoints):
-
  __pyx_t_12 = __pyx_v_out_index->npoints;
-  __pyx_t_13 = __pyx_t_12;
-  for (__pyx_t_14 = 0; __pyx_t_14 < __pyx_t_13; __pyx_t_14+=1) {
-    __pyx_v_out_i = __pyx_t_14;
-
+6227:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 6228:             # use x fill value
-
+6229:             out[out_i] = xfill ^ y[yi]
-
      __pyx_t_16 = __pyx_v_yi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_16 * __pyx_v_y.strides[0]) ))));
-
+6230:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+6231:             continue
-
      goto __pyx_L3_continue;
-
 6232: 
-
+6233:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 6234:             # use y fill value
-
+6235:             out[out_i] = x[xi] ^ yfill
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_17, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
-
+6236:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+6237:             continue
-
      goto __pyx_L3_continue;
-
 6238: 
-
+6239:         xloc = xindices[xi]
-
    __pyx_t_16 = __pyx_v_xi;
-    __pyx_v_xloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_xindices.data + __pyx_t_16 * __pyx_v_xindices.strides[0]) )));
-
+6240:         yloc = yindices[yi]
-
    __pyx_t_16 = __pyx_v_yi;
-    __pyx_v_yloc = (*((__pyx_t_5numpy_int32_t *) ( /* dim=0 */ (__pyx_v_yindices.data + __pyx_t_16 * __pyx_v_yindices.strides[0]) )));
-
 6241: 
-
 6242:         # each index in the out_index had to come from either x, y, or both
-
+6243:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+6244:             out[out_i] = x[xi] ^ y[yi]
-
      __pyx_t_16 = __pyx_v_xi;
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_18 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_18, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_16 * __pyx_v_x.strides[0]) ))) ^ (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+6245:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+6246:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+6247:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 6248:             # use y fill value
-
+6249:             out[out_i] = x[xi] ^ yfill
-
      __pyx_t_17 = __pyx_v_xi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = ((*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_x.data + __pyx_t_17 * __pyx_v_x.strides[0]) ))) ^ __pyx_v_yfill);
-
+6250:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 6251:         else:
-
 6252:             # use x fill value
-
+6253:             out[out_i] = xfill ^ y[yi]
-
    /*else*/ {
-      __pyx_t_17 = __pyx_v_yi;
-      __pyx_t_16 = __pyx_v_out_i;
-      *__Pyx_BufPtrStrided1d(__pyx_t_5numpy_uint8_t *, __pyx_pybuffernd_out.rcbuffer->pybuffer.buf, __pyx_t_16, __pyx_pybuffernd_out.diminfo[0].strides) = (__pyx_v_xfill ^ (*((__pyx_t_5numpy_uint8_t *) ( /* dim=0 */ (__pyx_v_y.data + __pyx_t_17 * __pyx_v_y.strides[0]) ))));
-
+6254:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 6255: 
-
+6256:     return out, out_index, xfill ^ yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_5 = __Pyx_PyInt_From_int((__pyx_v_xfill ^ __pyx_v_yfill)); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6256, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6256, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_INCREF(((PyObject *)__pyx_v_out));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out));
-  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_out));
-  __Pyx_INCREF(((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(((PyObject *)__pyx_v_out_index));
-  PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_out_index));
-  __Pyx_GIVEREF(__pyx_t_5);
-  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_5);
-  __pyx_t_5 = 0;
-  __pyx_r = ((PyObject*)__pyx_t_1);
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
 6257: 
-
 6258: 
-
+6259: cpdef sparse_xor_uint8(uint8_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_135sparse_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_xor_uint8(__Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_xor_uint8", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_3);
-  __Pyx_XDECREF(__pyx_t_4);
-  __Pyx_XDECREF(__pyx_t_5);
-  __Pyx_XDECREF(__pyx_t_6);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_135sparse_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_135sparse_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __Pyx_memviewslice __pyx_v_x = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex = 0;
-  __pyx_t_5numpy_uint8_t __pyx_v_xfill;
-  __Pyx_memviewslice __pyx_v_y = { 0, 0, { 0 }, { 0 }, { 0 } };
-  struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex = 0;
-  __pyx_t_5numpy_uint8_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_xor_uint8 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_x,&__pyx_n_s_xindex,&__pyx_n_s_xfill,&__pyx_n_s_y,&__pyx_n_s_yindex,&__pyx_n_s_yfill,0};
-    PyObject* values[6] = {0,0,0,0,0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-        CYTHON_FALLTHROUGH;
-        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-        CYTHON_FALLTHROUGH;
-        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-        CYTHON_FALLTHROUGH;
-        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-        CYTHON_FALLTHROUGH;
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_x)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_xor_uint8", 1, 6, 6, 1); __PYX_ERR(2, 6259, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  2:
-        if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_xor_uint8", 1, 6, 6, 2); __PYX_ERR(2, 6259, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  3:
-        if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_y)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_xor_uint8", 1, 6, 6, 3); __PYX_ERR(2, 6259, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  4:
-        if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yindex)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_xor_uint8", 1, 6, 6, 4); __PYX_ERR(2, 6259, __pyx_L3_error)
-        }
-        CYTHON_FALLTHROUGH;
-        case  5:
-        if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_xor_uint8", 1, 6, 6, 5); __PYX_ERR(2, 6259, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_xor_uint8") < 0)) __PYX_ERR(2, 6259, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
-      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
-      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
-      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
-    }
-    __pyx_v_x = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(values[0], PyBUF_WRITABLE); if (unlikely(!__pyx_v_x.memview)) __PYX_ERR(2, 6259, __pyx_L3_error)
-    __pyx_v_xindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[1]);
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_uint8(values[2]); if (unlikely((__pyx_v_xfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6260, __pyx_L3_error)
-    __pyx_v_y = __Pyx_PyObject_to_MemoryviewSlice_ds_nn___pyx_t_5numpy_uint8_t(values[3], PyBUF_WRITABLE); if (unlikely(!__pyx_v_y.memview)) __PYX_ERR(2, 6261, __pyx_L3_error)
-    __pyx_v_yindex = ((struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *)values[4]);
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_uint8(values[5]); if (unlikely((__pyx_v_yfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6262, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_xor_uint8", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 6259, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "xindex", 0))) __PYX_ERR(2, 6260, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 6262, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_134sparse_xor_uint8(__pyx_self, __pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  goto __pyx_L0;
-  __pyx_L1_error:;
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_134sparse_xor_uint8(CYTHON_UNUSED PyObject *__pyx_self, __Pyx_memviewslice __pyx_v_x, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_xindex, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __Pyx_memviewslice __pyx_v_y, struct __pyx_obj_6pandas_5_libs_6sparse_SparseIndex *__pyx_v_yindex, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_xor_uint8", 0);
-  __Pyx_XDECREF(__pyx_r);
-  if (unlikely(!__pyx_v_x.memview)) { __Pyx_RaiseUnboundLocalError("x"); __PYX_ERR(2, 6259, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 6259, __pyx_L1_error) }
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_xor_uint8(__pyx_v_x, __pyx_v_xindex, __pyx_v_xfill, __pyx_v_y, __pyx_v_yindex, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6259, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __PYX_XDEC_MEMVIEW(&__pyx_v_x, 1);
-  __PYX_XDEC_MEMVIEW(&__pyx_v_y, 1);
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 6260:                                   SparseIndex xindex, uint8_t xfill,
-
 6261:                                   uint8_t[:] y,
-
 6262:                                   SparseIndex yindex, uint8_t yfill):
-
 6263: 
-
+6264:     if isinstance(xindex, BlockIndex):
-
  __pyx_t_1 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex); 
-  __pyx_t_2 = (__pyx_t_1 != 0);
-  if (__pyx_t_2) {
-/* … */
-  }
-
+6265:         return block_op_xor_uint8(x, xindex.to_block_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6265, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_5 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_5)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_5);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6265, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 6265, __pyx_L1_error)
-/* … */
-    __pyx_t_5 = __pyx_f_6pandas_5_libs_6sparse_block_op_xor_uint8(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_3), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_BlockIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6265, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_5;
-    __pyx_t_5 = 0;
-    goto __pyx_L0;
-
+6266:                                              y, yindex.to_block_index(), yfill)
-
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_block_index); if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6266, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_5);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_5);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_5, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6266, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_BlockIndex))))) __PYX_ERR(2, 6266, __pyx_L1_error)
-
+6267:     elif isinstance(xindex, IntIndex):
-
  __pyx_t_2 = __Pyx_TypeCheck(((PyObject *)__pyx_v_xindex), __pyx_ptype_6pandas_5_libs_6sparse_IntIndex); 
-  __pyx_t_1 = (__pyx_t_2 != 0);
-  if (likely(__pyx_t_1)) {
-/* … */
-  }
-
+6268:         return int_op_xor_uint8(x, xindex.to_int_index(), xfill,
-
    __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_xindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6268, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_3 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
-      __pyx_t_3 = PyMethod_GET_SELF(__pyx_t_4);
-      if (likely(__pyx_t_3)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_4);
-        __Pyx_INCREF(__pyx_t_3);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_4, function);
-      }
-    }
-    __pyx_t_5 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
-    __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(2, 6268, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_5);
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 6268, __pyx_L1_error)
-/* … */
-    __pyx_t_3 = __pyx_f_6pandas_5_libs_6sparse_int_op_xor_uint8(__pyx_v_x, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_5), __pyx_v_xfill, __pyx_v_y, ((struct __pyx_obj_6pandas_5_libs_6sparse_IntIndex *)__pyx_t_4), __pyx_v_yfill); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6268, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_r = __pyx_t_3;
-    __pyx_t_3 = 0;
-    goto __pyx_L0;
-
+6269:                                            y, yindex.to_int_index(), yfill)
-
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_yindex), __pyx_n_s_to_int_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6269, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_6 = NULL;
-    if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
-      __pyx_t_6 = PyMethod_GET_SELF(__pyx_t_3);
-      if (likely(__pyx_t_6)) {
-        PyObject* function = PyMethod_GET_FUNCTION(__pyx_t_3);
-        __Pyx_INCREF(__pyx_t_6);
-        __Pyx_INCREF(function);
-        __Pyx_DECREF_SET(__pyx_t_3, function);
-      }
-    }
-    __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
-    __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(2, 6269, __pyx_L1_error)
-    __Pyx_GOTREF(__pyx_t_4);
-    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_6pandas_5_libs_6sparse_IntIndex))))) __PYX_ERR(2, 6269, __pyx_L1_error)
-
 6270:     else:
-
+6271:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 6271, __pyx_L1_error)
-  }
-
 6272: 
-
 6273: 
-
+6274: cpdef sparse_fill_xor_uint8(uint8_t xfill,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_137sparse_fill_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_f_6pandas_5_libs_6sparse_sparse_fill_xor_uint8(__pyx_t_5numpy_uint8_t __pyx_v_xfill, __pyx_t_5numpy_uint8_t __pyx_v_yfill, CYTHON_UNUSED int __pyx_skip_dispatch) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_xor_uint8", 0);
-/* … */
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-/* Python wrapper */
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_137sparse_fill_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_137sparse_fill_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
-  __pyx_t_5numpy_uint8_t __pyx_v_xfill;
-  __pyx_t_5numpy_uint8_t __pyx_v_yfill;
-  PyObject *__pyx_r = 0;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_xor_uint8 (wrapper)", 0);
-  {
-    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_xfill,&__pyx_n_s_yfill,0};
-    PyObject* values[2] = {0,0};
-    if (unlikely(__pyx_kwds)) {
-      Py_ssize_t kw_args;
-      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
-      switch (pos_args) {
-        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-        CYTHON_FALLTHROUGH;
-        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-        CYTHON_FALLTHROUGH;
-        case  0: break;
-        default: goto __pyx_L5_argtuple_error;
-      }
-      kw_args = PyDict_Size(__pyx_kwds);
-      switch (pos_args) {
-        case  0:
-        if (likely((values[0] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_xfill)) != 0)) kw_args--;
-        else goto __pyx_L5_argtuple_error;
-        CYTHON_FALLTHROUGH;
-        case  1:
-        if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_yfill)) != 0)) kw_args--;
-        else {
-          __Pyx_RaiseArgtupleInvalid("sparse_fill_xor_uint8", 1, 2, 2, 1); __PYX_ERR(2, 6274, __pyx_L3_error)
-        }
-      }
-      if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "sparse_fill_xor_uint8") < 0)) __PYX_ERR(2, 6274, __pyx_L3_error)
-      }
-    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
-      goto __pyx_L5_argtuple_error;
-    } else {
-      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
-      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
-    }
-    __pyx_v_xfill = __Pyx_PyInt_As_npy_uint8(values[0]); if (unlikely((__pyx_v_xfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6274, __pyx_L3_error)
-    __pyx_v_yfill = __Pyx_PyInt_As_npy_uint8(values[1]); if (unlikely((__pyx_v_yfill == ((npy_uint8)-1)) && PyErr_Occurred())) __PYX_ERR(2, 6275, __pyx_L3_error)
-  }
-  goto __pyx_L4_argument_unpacking_done;
-  __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("sparse_fill_xor_uint8", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(2, 6274, __pyx_L3_error)
-  __pyx_L3_error:;
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __Pyx_RefNannyFinishContext();
-  return NULL;
-  __pyx_L4_argument_unpacking_done:;
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_136sparse_fill_xor_uint8(__pyx_self, __pyx_v_xfill, __pyx_v_yfill);
-  int __pyx_lineno = 0;
-  const char *__pyx_filename = NULL;
-  int __pyx_clineno = 0;
-
-  /* function exit code */
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
-static PyObject *__pyx_pf_6pandas_5_libs_6sparse_136sparse_fill_xor_uint8(CYTHON_UNUSED PyObject *__pyx_self, __pyx_t_5numpy_uint8_t __pyx_v_xfill, __pyx_t_5numpy_uint8_t __pyx_v_yfill) {
-  PyObject *__pyx_r = NULL;
-  __Pyx_RefNannyDeclarations
-  __Pyx_RefNannySetupContext("sparse_fill_xor_uint8", 0);
-  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_6pandas_5_libs_6sparse_sparse_fill_xor_uint8(__pyx_v_xfill, __pyx_v_yfill, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6274, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-
-  /* function exit code */
-  __pyx_L1_error:;
-  __Pyx_XDECREF(__pyx_t_1);
-  __Pyx_AddTraceback("pandas._libs.sparse.sparse_fill_xor_uint8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = NULL;
-  __pyx_L0:;
-  __Pyx_XGIVEREF(__pyx_r);
-  __Pyx_RefNannyFinishContext();
-  return __pyx_r;
-}
-
 6275:                                        uint8_t yfill):
-
+6276:     return xfill ^ yfill
-
  __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_xfill ^ __pyx_v_yfill)); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6276, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_r = __pyx_t_1;
-  __pyx_t_1 = 0;
-  goto __pyx_L0;
-