From 960fc601c8a2a2c591cd1bd65425dbeacfe2f85a Mon Sep 17 00:00:00 2001 From: Matthew Zeitlin Date: Fri, 17 Sep 2021 17:02:31 -0400 Subject: [PATCH 1/4] CLN: remove unused sparse reindex --- pandas/_libs/sparse.html | 10324 +++++++++ pandas/_libs/sparse.pyx | 74 - pandas/_libs/sparse_op_helper.html | 30036 +++++++++++++++++++++++++++ 3 files changed, 40360 insertions(+), 74 deletions(-) create mode 100644 pandas/_libs/sparse.html create mode 100644 pandas/_libs/sparse_op_helper.html diff --git a/pandas/_libs/sparse.html b/pandas/_libs/sparse.html new file mode 100644 index 0000000000000..4c6e1b9ae3134 --- /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, -1); 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_s_IntIndex);
+  __pyx_v_output = __pyx_n_s_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 = PyNumber_InPlaceAdd(__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, __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_s_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_s_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_s_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_s_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_s_BlockIndex);
+  __pyx_v_output = __pyx_n_s_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 = PyNumber_InPlaceAdd(__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, __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 = PyNumber_InPlaceAdd(__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, __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_s_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_s_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_s_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_71make_mask_object_ndarray(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyMethodDef __pyx_mdef_6pandas_5_libs_6sparse_71make_mask_object_ndarray = {"make_mask_object_ndarray", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pandas_5_libs_6sparse_71make_mask_object_ndarray, METH_VARARGS|METH_KEYWORDS, 0};
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_71make_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_70make_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_70make_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_71make_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.pyx b/pandas/_libs/sparse.pyx index 134883e159407..18af77461ecd2 100644 --- a/pandas/_libs/sparse.pyx +++ b/pandas/_libs/sparse.pyx @@ -3,12 +3,9 @@ import numpy as np cimport numpy as cnp from numpy cimport ( - float32_t, float64_t, int8_t, - int16_t, int32_t, - int64_t, ndarray, uint8_t, ) @@ -229,45 +226,6 @@ cdef class IntIndex(SparseIndex): results[mask] = res return results - cpdef ndarray reindex(self, ndarray[float64_t, ndim=1] values, - float64_t fill_value, SparseIndex other_): - cdef: - Py_ssize_t i = 0, j = 0 - IntIndex other - ndarray[float64_t, ndim=1] result - ndarray[int32_t, ndim=1] sinds, oinds - - other = other_.to_int_index() - - oinds = other.indices - sinds = self.indices - - result = np.empty(other.npoints, dtype=np.float64) - result[:] = fill_value - - for i in range(other.npoints): - while oinds[i] > sinds[j] and j < self.npoints: - j += 1 - - if j == self.npoints: - break - - if oinds[i] < sinds[j]: - continue - elif oinds[i] == sinds[j]: - result[i] = values[j] - j += 1 - - return result - - cpdef put(self, ndarray[float64_t, ndim=1] values, - ndarray[int32_t, ndim=1] indices, object to_put): - pass - - cpdef take(self, ndarray[float64_t, ndim=1] values, - ndarray[int32_t, ndim=1] indices): - pass - cpdef get_blocks(ndarray[int32_t, ndim=1] indices): cdef: @@ -585,38 +543,6 @@ cdef class BlockIndex(SparseIndex): cum_len += lens[j] return results - cpdef ndarray reindex(self, ndarray[float64_t, ndim=1] values, - float64_t fill_value, SparseIndex other_): - cdef: - Py_ssize_t i = 0, j = 0, ocur, ocurlen - BlockIndex other - ndarray[float64_t, ndim=1] result - ndarray[int32_t, ndim=1] slocs, slens, olocs, olens - - other = other_.to_block_index() - - olocs = other.blocs - olens = other.blengths - slocs = self.blocs - slens = self.blengths - - result = np.empty(other.npoints, dtype=np.float64) - - for i in range(other.nblocks): - ocur = olocs[i] - ocurlen = olens[i] - - while slocs[j] + slens[j] < ocur: - j += 1 - - cpdef put(self, ndarray[float64_t, ndim=1] values, - ndarray[int32_t, ndim=1] indices, object to_put): - pass - - cpdef take(self, ndarray[float64_t, ndim=1] values, - ndarray[int32_t, ndim=1] indices): - pass - @cython.internal cdef class BlockMerge: diff --git a/pandas/_libs/sparse_op_helper.html b/pandas/_libs/sparse_op_helper.html new file mode 100644 index 0000000000000..8dd11b1b0bb8b --- /dev/null +++ b/pandas/_libs/sparse_op_helper.html @@ -0,0 +1,30036 @@ + + + + + + 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 = (((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) / __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: @cython.wraparound(False)
+
 0236: @cython.boundscheck(False)
+
+0237: 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;
+}
+
 0238:                                                 BlockIndex xindex,
+
 0239:                                                 int64_t xfill,
+
 0240:                                                 int64_t[:] y_,
+
 0241:                                                 BlockIndex yindex,
+
 0242:                                                 int64_t yfill):
+
 0243:     '''
+
 0244:     Binary operator on BlockIndex objects with fill values
+
 0245:     '''
+
 0246: 
+
 0247:     cdef:
+
 0248:         BlockIndex out_index
+
+0249:         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;
+
+0250:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 0251:         int32_t xloc, yloc
+
+0252:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 0253: 
+
 0254:         int64_t[:] x, y
+
 0255:         ndarray[int64_t, ndim=1] out
+
 0256: 
+
 0257:     # to suppress Cython warning
+
+0258:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0259:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0260: 
+
+0261:     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, 261, __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;
+
+0262:     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, 262, __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, 262, __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, 262, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 262, __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, 262, __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, 262, __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, 262, __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, 262, __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, 262, __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, 262, __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, 262, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0263: 
+
 0264:     # Wow, what a hack job. Need to do something about this
+
 0265: 
+
 0266:     # walk the two SparseVectors, adding matched locations...
+
+0267:     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;
+
+0268:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0269:             # use y fill value
+
+0270:             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);
+
+0271:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0272: 
+
 0273:             # advance x location
+
+0274:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0275:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0276:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0277:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+0278:             continue
+
      goto __pyx_L3_continue;
+
 0279: 
+
+0280:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0281:             # use x fill value
+
+0282:             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]) ))));
+
+0283:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0284: 
+
 0285:             # advance y location
+
+0286:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0287:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0288:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0289:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+0290:             continue
+
      goto __pyx_L3_continue;
+
 0291: 
+
+0292:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+0293:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 0294: 
+
 0295:         # each index in the out_index had to come from either x, y, or both
+
+0296:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+0297:             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]) ))));
+
+0298:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0299:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0300: 
+
 0301:             # advance both locations
+
+0302:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0303:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0304:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0305:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0306: 
+
+0307:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0308:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0309:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0310:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0311: 
+
+0312:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 0313:             # use y fill value
+
+0314:             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);
+
+0315:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0316: 
+
 0317:             # advance x location
+
+0318:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0319:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0320:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0321:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0322:         else:
+
 0323:             # use x fill value
+
+0324:             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]) ))));
+
+0325:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0326: 
+
 0327:             # advance y location
+
+0328:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0329:             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:;
+  }
+
+0330:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0331:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0332: 
+
+0333:     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, 333, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 333, __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;
+
 0334: 
+
 0335: 
+
 0336: @cython.wraparound(False)
+
 0337: @cython.boundscheck(False)
+
+0338: 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;
+}
+
 0339:                                               IntIndex xindex,
+
 0340:                                               int64_t xfill,
+
 0341:                                               int64_t[:] y_,
+
 0342:                                               IntIndex yindex,
+
 0343:                                               int64_t yfill):
+
 0344:     cdef:
+
 0345:         IntIndex out_index
+
+0346:         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;
+
 0347:         int32_t xloc, yloc
+
 0348:         int32_t[:] xindices, yindices, out_indices
+
 0349:         int64_t[:] x, y
+
 0350:         ndarray[int64_t, ndim=1] out
+
 0351: 
+
 0352:     # suppress Cython compiler warnings due to inlining
+
+0353:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0354:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0355: 
+
 0356:     # need to do this first to know size of result array
+
+0357:     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, 357, __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;
+
+0358:     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, 358, __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, 358, __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, 358, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 358, __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, 358, __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, 358, __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, 358, __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, 358, __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, 358, __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, 358, __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, 358, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0359: 
+
+0360:     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, 360, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0361:     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, 361, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0362:     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, 362, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 0363: 
+
 0364:     # walk the two SparseVectors, adding matched locations...
+
+0365:     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;
+
+0366:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0367:             # use x fill value
+
+0368:             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]) ))));
+
+0369:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0370:             continue
+
      goto __pyx_L3_continue;
+
 0371: 
+
+0372:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0373:             # use y fill value
+
+0374:             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);
+
+0375:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0376:             continue
+
      goto __pyx_L3_continue;
+
 0377: 
+
+0378:         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]) )));
+
+0379:         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]) )));
+
 0380: 
+
 0381:         # each index in the out_index had to come from either x, y, or both
+
+0382:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+0383:             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]) ))));
+
+0384:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0385:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0386:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 0387:             # use y fill value
+
+0388:             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);
+
+0389:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0390:         else:
+
 0391:             # use x fill value
+
+0392:             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]) ))));
+
+0393:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 0394: 
+
+0395:     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, 395, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 395, __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;
+
 0396: 
+
 0397: 
+
+0398: cpdef sparse_add_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_5sparse_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_5sparse_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_5sparse_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, 398, __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, 398, __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, 398, __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, 398, __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, 398, __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, 398, __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, 398, __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, 399, __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, 400, __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, 401, __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, 398, __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, 399, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 401, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_4sparse_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_4sparse_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, 398, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 398, __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, 398, __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;
+}
+
 0399:                                   SparseIndex xindex, int64_t xfill,
+
 0400:                                   int64_t[:] y,
+
 0401:                                   SparseIndex yindex, int64_t yfill):
+
 0402: 
+
+0403:     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) {
+/* … */
+  }
+
+0404:         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, 404, __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, 404, __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, 404, __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, 404, __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;
+
+0405:                                              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, 405, __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, 405, __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, 405, __pyx_L1_error)
+
+0406:     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)) {
+/* … */
+  }
+
+0407:         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, 407, __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, 407, __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, 407, __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, 407, __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;
+
+0408:                                            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, 408, __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, 408, __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, 408, __pyx_L1_error)
+
 0409:     else:
+
+0410:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 410, __pyx_L1_error)
+  }
+
 0411: 
+
 0412: 
+
 0413: @cython.wraparound(False)
+
 0414: @cython.boundscheck(False)
+
+0415: 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;
+}
+
 0416:                                                 BlockIndex xindex,
+
 0417:                                                 float64_t xfill,
+
 0418:                                                 float64_t[:] y_,
+
 0419:                                                 BlockIndex yindex,
+
 0420:                                                 float64_t yfill):
+
 0421:     '''
+
 0422:     Binary operator on BlockIndex objects with fill values
+
 0423:     '''
+
 0424: 
+
 0425:     cdef:
+
 0426:         BlockIndex out_index
+
+0427:         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;
+
+0428:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 0429:         int32_t xloc, yloc
+
+0430:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 0431: 
+
 0432:         float64_t[:] x, y
+
 0433:         ndarray[float64_t, ndim=1] out
+
 0434: 
+
 0435:     # to suppress Cython warning
+
+0436:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0437:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0438: 
+
+0439:     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, 439, __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;
+
+0440:     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, 440, __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, 440, __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, 440, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 440, __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, 440, __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, 440, __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, 440, __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, 440, __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, 440, __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, 440, __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, 440, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0441: 
+
 0442:     # Wow, what a hack job. Need to do something about this
+
 0443: 
+
 0444:     # walk the two SparseVectors, adding matched locations...
+
+0445:     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;
+
+0446:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0447:             # use y fill value
+
+0448:             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);
+
+0449:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0450: 
+
 0451:             # advance x location
+
+0452:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0453:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0454:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0455:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+0456:             continue
+
      goto __pyx_L3_continue;
+
 0457: 
+
+0458:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0459:             # use x fill value
+
+0460:             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]) ))));
+
+0461:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0462: 
+
 0463:             # advance y location
+
+0464:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0465:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0466:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0467:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+0468:             continue
+
      goto __pyx_L3_continue;
+
 0469: 
+
+0470:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+0471:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 0472: 
+
 0473:         # each index in the out_index had to come from either x, y, or both
+
+0474:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+0475:             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]) ))));
+
+0476:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0477:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0478: 
+
 0479:             # advance both locations
+
+0480:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0481:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0482:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0483:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0484: 
+
+0485:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0486:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0487:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0488:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0489: 
+
+0490:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 0491:             # use y fill value
+
+0492:             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);
+
+0493:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0494: 
+
 0495:             # advance x location
+
+0496:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0497:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0498:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0499:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0500:         else:
+
 0501:             # use x fill value
+
+0502:             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]) ))));
+
+0503:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0504: 
+
 0505:             # advance y location
+
+0506:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0507:             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:;
+  }
+
+0508:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0509:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0510: 
+
+0511:     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, 511, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 511, __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;
+
 0512: 
+
 0513: 
+
 0514: @cython.wraparound(False)
+
 0515: @cython.boundscheck(False)
+
+0516: 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;
+}
+
 0517:                                               IntIndex xindex,
+
 0518:                                               float64_t xfill,
+
 0519:                                               float64_t[:] y_,
+
 0520:                                               IntIndex yindex,
+
 0521:                                               float64_t yfill):
+
 0522:     cdef:
+
 0523:         IntIndex out_index
+
+0524:         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;
+
 0525:         int32_t xloc, yloc
+
 0526:         int32_t[:] xindices, yindices, out_indices
+
 0527:         float64_t[:] x, y
+
 0528:         ndarray[float64_t, ndim=1] out
+
 0529: 
+
 0530:     # suppress Cython compiler warnings due to inlining
+
+0531:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0532:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0533: 
+
 0534:     # need to do this first to know size of result array
+
+0535:     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, 535, __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;
+
+0536:     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, 536, __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, 536, __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, 536, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 536, __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, 536, __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, 536, __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, 536, __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, 536, __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, 536, __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, 536, __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, 536, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0537: 
+
+0538:     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, 538, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0539:     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, 539, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0540:     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, 540, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 0541: 
+
 0542:     # walk the two SparseVectors, adding matched locations...
+
+0543:     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;
+
+0544:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0545:             # use x fill value
+
+0546:             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]) ))));
+
+0547:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0548:             continue
+
      goto __pyx_L3_continue;
+
 0549: 
+
+0550:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0551:             # use y fill value
+
+0552:             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);
+
+0553:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0554:             continue
+
      goto __pyx_L3_continue;
+
 0555: 
+
+0556:         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]) )));
+
+0557:         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]) )));
+
 0558: 
+
 0559:         # each index in the out_index had to come from either x, y, or both
+
+0560:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+0561:             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]) ))));
+
+0562:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0563:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0564:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 0565:             # use y fill value
+
+0566:             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);
+
+0567:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0568:         else:
+
 0569:             # use x fill value
+
+0570:             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]) ))));
+
+0571:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 0572: 
+
+0573:     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, 573, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 573, __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;
+
 0574: 
+
 0575: 
+
+0576: cpdef sparse_sub_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_7sparse_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_7sparse_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_7sparse_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, 576, __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, 576, __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, 576, __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, 576, __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, 576, __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, 576, __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, 576, __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, 577, __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, 578, __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, 579, __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, 576, __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, 577, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 579, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_6sparse_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_6sparse_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, 576, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 576, __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, 576, __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;
+}
+
 0577:                                   SparseIndex xindex, float64_t xfill,
+
 0578:                                   float64_t[:] y,
+
 0579:                                   SparseIndex yindex, float64_t yfill):
+
 0580: 
+
+0581:     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) {
+/* … */
+  }
+
+0582:         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, 582, __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, 582, __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, 582, __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, 582, __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;
+
+0583:                                              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, 583, __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, 583, __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, 583, __pyx_L1_error)
+
+0584:     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)) {
+/* … */
+  }
+
+0585:         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, 585, __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, 585, __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, 585, __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, 585, __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;
+
+0586:                                            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, 586, __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, 586, __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, 586, __pyx_L1_error)
+
 0587:     else:
+
+0588:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 588, __pyx_L1_error)
+  }
+
 0589: 
+
 0590: 
+
 0591: @cython.wraparound(False)
+
 0592: @cython.boundscheck(False)
+
+0593: 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;
+}
+
 0594:                                                 BlockIndex xindex,
+
 0595:                                                 int64_t xfill,
+
 0596:                                                 int64_t[:] y_,
+
 0597:                                                 BlockIndex yindex,
+
 0598:                                                 int64_t yfill):
+
 0599:     '''
+
 0600:     Binary operator on BlockIndex objects with fill values
+
 0601:     '''
+
 0602: 
+
 0603:     cdef:
+
 0604:         BlockIndex out_index
+
+0605:         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;
+
+0606:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 0607:         int32_t xloc, yloc
+
+0608:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 0609: 
+
 0610:         int64_t[:] x, y
+
 0611:         ndarray[int64_t, ndim=1] out
+
 0612: 
+
 0613:     # to suppress Cython warning
+
+0614:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0615:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0616: 
+
+0617:     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, 617, __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;
+
+0618:     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, 618, __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, 618, __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, 618, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 618, __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, 618, __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, 618, __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, 618, __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, 618, __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, 618, __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, 618, __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, 618, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0619: 
+
 0620:     # Wow, what a hack job. Need to do something about this
+
 0621: 
+
 0622:     # walk the two SparseVectors, adding matched locations...
+
+0623:     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;
+
+0624:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0625:             # use y fill value
+
+0626:             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);
+
+0627:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0628: 
+
 0629:             # advance x location
+
+0630:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0631:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0632:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0633:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+0634:             continue
+
      goto __pyx_L3_continue;
+
 0635: 
+
+0636:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0637:             # use x fill value
+
+0638:             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]) ))));
+
+0639:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0640: 
+
 0641:             # advance y location
+
+0642:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0643:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0644:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0645:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+0646:             continue
+
      goto __pyx_L3_continue;
+
 0647: 
+
+0648:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+0649:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 0650: 
+
 0651:         # each index in the out_index had to come from either x, y, or both
+
+0652:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+0653:             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]) ))));
+
+0654:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0655:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0656: 
+
 0657:             # advance both locations
+
+0658:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0659:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0660:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0661:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0662: 
+
+0663:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0664:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0665:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0666:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0667: 
+
+0668:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 0669:             # use y fill value
+
+0670:             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);
+
+0671:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0672: 
+
 0673:             # advance x location
+
+0674:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0675:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0676:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0677:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0678:         else:
+
 0679:             # use x fill value
+
+0680:             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]) ))));
+
+0681:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0682: 
+
 0683:             # advance y location
+
+0684:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0685:             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:;
+  }
+
+0686:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0687:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0688: 
+
+0689:     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, 689, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 689, __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;
+
 0690: 
+
 0691: 
+
 0692: @cython.wraparound(False)
+
 0693: @cython.boundscheck(False)
+
+0694: 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;
+}
+
 0695:                                               IntIndex xindex,
+
 0696:                                               int64_t xfill,
+
 0697:                                               int64_t[:] y_,
+
 0698:                                               IntIndex yindex,
+
 0699:                                               int64_t yfill):
+
 0700:     cdef:
+
 0701:         IntIndex out_index
+
+0702:         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;
+
 0703:         int32_t xloc, yloc
+
 0704:         int32_t[:] xindices, yindices, out_indices
+
 0705:         int64_t[:] x, y
+
 0706:         ndarray[int64_t, ndim=1] out
+
 0707: 
+
 0708:     # suppress Cython compiler warnings due to inlining
+
+0709:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0710:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0711: 
+
 0712:     # need to do this first to know size of result array
+
+0713:     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, 713, __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;
+
+0714:     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, 714, __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, 714, __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, 714, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 714, __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, 714, __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, 714, __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, 714, __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, 714, __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, 714, __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, 714, __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, 714, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0715: 
+
+0716:     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, 716, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0717:     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, 717, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0718:     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, 718, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 0719: 
+
 0720:     # walk the two SparseVectors, adding matched locations...
+
+0721:     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;
+
+0722:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0723:             # use x fill value
+
+0724:             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]) ))));
+
+0725:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0726:             continue
+
      goto __pyx_L3_continue;
+
 0727: 
+
+0728:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0729:             # use y fill value
+
+0730:             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);
+
+0731:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0732:             continue
+
      goto __pyx_L3_continue;
+
 0733: 
+
+0734:         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]) )));
+
+0735:         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]) )));
+
 0736: 
+
 0737:         # each index in the out_index had to come from either x, y, or both
+
+0738:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+0739:             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]) ))));
+
+0740:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0741:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0742:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 0743:             # use y fill value
+
+0744:             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);
+
+0745:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0746:         else:
+
 0747:             # use x fill value
+
+0748:             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]) ))));
+
+0749:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 0750: 
+
+0751:     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, 751, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 751, __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;
+
 0752: 
+
 0753: 
+
+0754: cpdef sparse_sub_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_9sparse_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_9sparse_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_9sparse_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, 754, __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, 754, __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, 754, __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, 754, __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, 754, __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, 754, __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, 754, __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, 755, __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, 756, __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, 757, __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, 754, __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, 755, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 757, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8sparse_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_8sparse_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, 754, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 754, __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, 754, __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;
+}
+
 0755:                                   SparseIndex xindex, int64_t xfill,
+
 0756:                                   int64_t[:] y,
+
 0757:                                   SparseIndex yindex, int64_t yfill):
+
 0758: 
+
+0759:     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) {
+/* … */
+  }
+
+0760:         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, 760, __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, 760, __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, 760, __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, 760, __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;
+
+0761:                                              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, 761, __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, 761, __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, 761, __pyx_L1_error)
+
+0762:     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)) {
+/* … */
+  }
+
+0763:         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, 763, __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, 763, __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, 763, __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, 763, __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;
+
+0764:                                            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, 764, __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, 764, __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, 764, __pyx_L1_error)
+
 0765:     else:
+
+0766:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 766, __pyx_L1_error)
+  }
+
 0767: 
+
 0768: 
+
 0769: @cython.wraparound(False)
+
 0770: @cython.boundscheck(False)
+
+0771: 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;
+}
+
 0772:                                                 BlockIndex xindex,
+
 0773:                                                 float64_t xfill,
+
 0774:                                                 float64_t[:] y_,
+
 0775:                                                 BlockIndex yindex,
+
 0776:                                                 float64_t yfill):
+
 0777:     '''
+
 0778:     Binary operator on BlockIndex objects with fill values
+
 0779:     '''
+
 0780: 
+
 0781:     cdef:
+
 0782:         BlockIndex out_index
+
+0783:         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;
+
+0784:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 0785:         int32_t xloc, yloc
+
+0786:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 0787: 
+
 0788:         float64_t[:] x, y
+
 0789:         ndarray[float64_t, ndim=1] out
+
 0790: 
+
 0791:     # to suppress Cython warning
+
+0792:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0793:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0794: 
+
+0795:     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, 795, __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;
+
+0796:     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, 796, __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, 796, __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, 796, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 796, __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, 796, __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, 796, __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, 796, __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, 796, __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, 796, __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, 796, __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, 796, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0797: 
+
 0798:     # Wow, what a hack job. Need to do something about this
+
 0799: 
+
 0800:     # walk the two SparseVectors, adding matched locations...
+
+0801:     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;
+
+0802:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0803:             # use y fill value
+
+0804:             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);
+
+0805:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0806: 
+
 0807:             # advance x location
+
+0808:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0809:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0810:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0811:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+0812:             continue
+
      goto __pyx_L3_continue;
+
 0813: 
+
+0814:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0815:             # use x fill value
+
+0816:             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]) ))));
+
+0817:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0818: 
+
 0819:             # advance y location
+
+0820:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0821:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0822:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0823:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+0824:             continue
+
      goto __pyx_L3_continue;
+
 0825: 
+
+0826:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+0827:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 0828: 
+
 0829:         # each index in the out_index had to come from either x, y, or both
+
+0830:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+0831:             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]) ))));
+
+0832:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0833:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0834: 
+
 0835:             # advance both locations
+
+0836:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0837:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0838:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0839:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0840: 
+
+0841:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0842:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0843:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0844:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0845: 
+
+0846:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 0847:             # use y fill value
+
+0848:             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);
+
+0849:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0850: 
+
 0851:             # advance x location
+
+0852:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0853:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0854:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0855:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 0856:         else:
+
 0857:             # use x fill value
+
+0858:             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]) ))));
+
+0859:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0860: 
+
 0861:             # advance y location
+
+0862:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0863:             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:;
+  }
+
+0864:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+0865:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 0866: 
+
+0867:     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, 867, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 867, __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;
+
 0868: 
+
 0869: 
+
 0870: @cython.wraparound(False)
+
 0871: @cython.boundscheck(False)
+
+0872: 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;
+}
+
 0873:                                               IntIndex xindex,
+
 0874:                                               float64_t xfill,
+
 0875:                                               float64_t[:] y_,
+
 0876:                                               IntIndex yindex,
+
 0877:                                               float64_t yfill):
+
 0878:     cdef:
+
 0879:         IntIndex out_index
+
+0880:         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;
+
 0881:         int32_t xloc, yloc
+
 0882:         int32_t[:] xindices, yindices, out_indices
+
 0883:         float64_t[:] x, y
+
 0884:         ndarray[float64_t, ndim=1] out
+
 0885: 
+
 0886:     # suppress Cython compiler warnings due to inlining
+
+0887:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0888:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0889: 
+
 0890:     # need to do this first to know size of result array
+
+0891:     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, 891, __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;
+
+0892:     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, 892, __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, 892, __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, 892, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 892, __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, 892, __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, 892, __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, 892, __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, 892, __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, 892, __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, 892, __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, 892, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0893: 
+
+0894:     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, 894, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0895:     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, 895, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+0896:     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, 896, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 0897: 
+
 0898:     # walk the two SparseVectors, adding matched locations...
+
+0899:     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;
+
+0900:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0901:             # use x fill value
+
+0902:             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]) ))));
+
+0903:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0904:             continue
+
      goto __pyx_L3_continue;
+
 0905: 
+
+0906:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 0907:             # use y fill value
+
+0908:             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);
+
+0909:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0910:             continue
+
      goto __pyx_L3_continue;
+
 0911: 
+
+0912:         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]) )));
+
+0913:         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]) )));
+
 0914: 
+
 0915:         # each index in the out_index had to come from either x, y, or both
+
+0916:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+0917:             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]) ))));
+
+0918:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+0919:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+0920:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 0921:             # use y fill value
+
+0922:             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);
+
+0923:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0924:         else:
+
 0925:             # use x fill value
+
+0926:             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]) ))));
+
+0927:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 0928: 
+
+0929:     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, 929, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 929, __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;
+
 0930: 
+
 0931: 
+
+0932: cpdef sparse_mul_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_11sparse_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_11sparse_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_11sparse_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, 932, __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, 932, __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, 932, __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, 932, __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, 932, __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, 932, __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, 932, __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, 933, __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, 934, __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, 935, __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, 932, __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, 933, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 935, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10sparse_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_10sparse_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, 932, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 932, __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, 932, __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;
+}
+
 0933:                                   SparseIndex xindex, float64_t xfill,
+
 0934:                                   float64_t[:] y,
+
 0935:                                   SparseIndex yindex, float64_t yfill):
+
 0936: 
+
+0937:     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) {
+/* … */
+  }
+
+0938:         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, 938, __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, 938, __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, 938, __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, 938, __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;
+
+0939:                                              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, 939, __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, 939, __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, 939, __pyx_L1_error)
+
+0940:     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)) {
+/* … */
+  }
+
+0941:         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, 941, __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, 941, __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, 941, __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, 941, __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;
+
+0942:                                            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, 942, __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, 942, __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, 942, __pyx_L1_error)
+
 0943:     else:
+
+0944:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 944, __pyx_L1_error)
+  }
+
 0945: 
+
 0946: 
+
 0947: @cython.wraparound(False)
+
 0948: @cython.boundscheck(False)
+
+0949: 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;
+}
+
 0950:                                                 BlockIndex xindex,
+
 0951:                                                 int64_t xfill,
+
 0952:                                                 int64_t[:] y_,
+
 0953:                                                 BlockIndex yindex,
+
 0954:                                                 int64_t yfill):
+
 0955:     '''
+
 0956:     Binary operator on BlockIndex objects with fill values
+
 0957:     '''
+
 0958: 
+
 0959:     cdef:
+
 0960:         BlockIndex out_index
+
+0961:         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;
+
+0962:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 0963:         int32_t xloc, yloc
+
+0964:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 0965: 
+
 0966:         int64_t[:] x, y
+
 0967:         ndarray[int64_t, ndim=1] out
+
 0968: 
+
 0969:     # to suppress Cython warning
+
+0970:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+0971:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 0972: 
+
+0973:     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, 973, __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;
+
+0974:     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, 974, __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, 974, __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, 974, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 974, __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, 974, __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, 974, __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, 974, __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, 974, __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, 974, __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, 974, __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, 974, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 0975: 
+
 0976:     # Wow, what a hack job. Need to do something about this
+
 0977: 
+
 0978:     # walk the two SparseVectors, adding matched locations...
+
+0979:     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;
+
+0980:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0981:             # use y fill value
+
+0982:             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);
+
+0983:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 0984: 
+
 0985:             # advance x location
+
+0986:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+0987:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+0988:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+0989:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+0990:             continue
+
      goto __pyx_L3_continue;
+
 0991: 
+
+0992:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 0993:             # use x fill value
+
+0994:             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]) ))));
+
+0995:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 0996: 
+
 0997:             # advance y location
+
+0998:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+0999:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1000:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1001:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+1002:             continue
+
      goto __pyx_L3_continue;
+
 1003: 
+
+1004:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+1005:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 1006: 
+
 1007:         # each index in the out_index had to come from either x, y, or both
+
+1008:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+1009:             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]) ))));
+
+1010:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1011:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1012: 
+
 1013:             # advance both locations
+
+1014:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1015:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1016:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1017:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1018: 
+
+1019:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1020:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1021:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1022:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1023: 
+
+1024:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 1025:             # use y fill value
+
+1026:             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);
+
+1027:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1028: 
+
 1029:             # advance x location
+
+1030:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1031:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1032:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1033:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1034:         else:
+
 1035:             # use x fill value
+
+1036:             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]) ))));
+
+1037:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1038: 
+
 1039:             # advance y location
+
+1040:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1041:             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:;
+  }
+
+1042:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1043:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1044: 
+
+1045:     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, 1045, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1045, __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;
+
 1046: 
+
 1047: 
+
 1048: @cython.wraparound(False)
+
 1049: @cython.boundscheck(False)
+
+1050: 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;
+}
+
 1051:                                               IntIndex xindex,
+
 1052:                                               int64_t xfill,
+
 1053:                                               int64_t[:] y_,
+
 1054:                                               IntIndex yindex,
+
 1055:                                               int64_t yfill):
+
 1056:     cdef:
+
 1057:         IntIndex out_index
+
+1058:         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;
+
 1059:         int32_t xloc, yloc
+
 1060:         int32_t[:] xindices, yindices, out_indices
+
 1061:         int64_t[:] x, y
+
 1062:         ndarray[int64_t, ndim=1] out
+
 1063: 
+
 1064:     # suppress Cython compiler warnings due to inlining
+
+1065:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1066:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1067: 
+
 1068:     # need to do this first to know size of result array
+
+1069:     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, 1069, __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;
+
+1070:     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, 1070, __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, 1070, __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, 1070, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1070, __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, 1070, __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, 1070, __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, 1070, __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, 1070, __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, 1070, __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, 1070, __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, 1070, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1071: 
+
+1072:     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, 1072, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1073:     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, 1073, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1074:     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, 1074, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 1075: 
+
 1076:     # walk the two SparseVectors, adding matched locations...
+
+1077:     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;
+
+1078:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1079:             # use x fill value
+
+1080:             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]) ))));
+
+1081:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1082:             continue
+
      goto __pyx_L3_continue;
+
 1083: 
+
+1084:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1085:             # use y fill value
+
+1086:             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);
+
+1087:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1088:             continue
+
      goto __pyx_L3_continue;
+
 1089: 
+
+1090:         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]) )));
+
+1091:         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]) )));
+
 1092: 
+
 1093:         # each index in the out_index had to come from either x, y, or both
+
+1094:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+1095:             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]) ))));
+
+1096:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1097:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1098:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 1099:             # use y fill value
+
+1100:             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);
+
+1101:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1102:         else:
+
 1103:             # use x fill value
+
+1104:             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]) ))));
+
+1105:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 1106: 
+
+1107:     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, 1107, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1107, __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;
+
 1108: 
+
 1109: 
+
+1110: cpdef sparse_mul_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_13sparse_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_13sparse_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_13sparse_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, 1110, __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, 1110, __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, 1110, __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, 1110, __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, 1110, __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, 1110, __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, 1110, __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, 1111, __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, 1112, __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, 1113, __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, 1110, __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, 1111, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1113, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_12sparse_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_12sparse_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, 1110, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1110, __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, 1110, __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;
+}
+
 1111:                                   SparseIndex xindex, int64_t xfill,
+
 1112:                                   int64_t[:] y,
+
 1113:                                   SparseIndex yindex, int64_t yfill):
+
 1114: 
+
+1115:     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) {
+/* … */
+  }
+
+1116:         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, 1116, __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, 1116, __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, 1116, __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, 1116, __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;
+
+1117:                                              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, 1117, __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, 1117, __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, 1117, __pyx_L1_error)
+
+1118:     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)) {
+/* … */
+  }
+
+1119:         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, 1119, __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, 1119, __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, 1119, __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, 1119, __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;
+
+1120:                                            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, 1120, __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, 1120, __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, 1120, __pyx_L1_error)
+
 1121:     else:
+
+1122:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 1122, __pyx_L1_error)
+  }
+
 1123: 
+
 1124: 
+
 1125: @cython.wraparound(False)
+
 1126: @cython.boundscheck(False)
+
+1127: 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;
+}
+
 1128:                                                 BlockIndex xindex,
+
 1129:                                                 float64_t xfill,
+
 1130:                                                 float64_t[:] y_,
+
 1131:                                                 BlockIndex yindex,
+
 1132:                                                 float64_t yfill):
+
 1133:     '''
+
 1134:     Binary operator on BlockIndex objects with fill values
+
 1135:     '''
+
 1136: 
+
 1137:     cdef:
+
 1138:         BlockIndex out_index
+
+1139:         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;
+
+1140:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 1141:         int32_t xloc, yloc
+
+1142:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 1143: 
+
 1144:         float64_t[:] x, y
+
 1145:         ndarray[float64_t, ndim=1] out
+
 1146: 
+
 1147:     # to suppress Cython warning
+
+1148:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1149:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1150: 
+
+1151:     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, 1151, __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;
+
+1152:     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, 1152, __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, 1152, __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, 1152, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1152, __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, 1152, __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, 1152, __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, 1152, __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, 1152, __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, 1152, __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, 1152, __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, 1152, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1153: 
+
 1154:     # Wow, what a hack job. Need to do something about this
+
 1155: 
+
 1156:     # walk the two SparseVectors, adding matched locations...
+
+1157:     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;
+
+1158:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1159:             # use y fill value
+
+1160:             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);
+
+1161:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1162: 
+
 1163:             # advance x location
+
+1164:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1165:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1166:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1167:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+1168:             continue
+
      goto __pyx_L3_continue;
+
 1169: 
+
+1170:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1171:             # use x fill value
+
+1172:             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]) ))));
+
+1173:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1174: 
+
 1175:             # advance y location
+
+1176:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1177:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1178:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1179:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+1180:             continue
+
      goto __pyx_L3_continue;
+
 1181: 
+
+1182:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+1183:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 1184: 
+
 1185:         # each index in the out_index had to come from either x, y, or both
+
+1186:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+1187:             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]) ))));
+
+1188:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1189:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1190: 
+
 1191:             # advance both locations
+
+1192:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1193:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1194:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1195:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1196: 
+
+1197:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1198:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1199:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1200:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1201: 
+
+1202:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 1203:             # use y fill value
+
+1204:             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);
+
+1205:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1206: 
+
 1207:             # advance x location
+
+1208:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1209:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1210:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1211:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1212:         else:
+
 1213:             # use x fill value
+
+1214:             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]) ))));
+
+1215:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1216: 
+
 1217:             # advance y location
+
+1218:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1219:             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:;
+  }
+
+1220:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1221:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1222: 
+
+1223:     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, 1223, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1223, __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;
+
 1224: 
+
 1225: 
+
 1226: @cython.wraparound(False)
+
 1227: @cython.boundscheck(False)
+
+1228: 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;
+}
+
 1229:                                               IntIndex xindex,
+
 1230:                                               float64_t xfill,
+
 1231:                                               float64_t[:] y_,
+
 1232:                                               IntIndex yindex,
+
 1233:                                               float64_t yfill):
+
 1234:     cdef:
+
 1235:         IntIndex out_index
+
+1236:         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;
+
 1237:         int32_t xloc, yloc
+
 1238:         int32_t[:] xindices, yindices, out_indices
+
 1239:         float64_t[:] x, y
+
 1240:         ndarray[float64_t, ndim=1] out
+
 1241: 
+
 1242:     # suppress Cython compiler warnings due to inlining
+
+1243:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1244:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1245: 
+
 1246:     # need to do this first to know size of result array
+
+1247:     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, 1247, __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;
+
+1248:     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, 1248, __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, 1248, __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, 1248, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1248, __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, 1248, __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, 1248, __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, 1248, __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, 1248, __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, 1248, __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, 1248, __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, 1248, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1249: 
+
+1250:     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, 1250, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1251:     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, 1251, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1252:     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, 1252, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 1253: 
+
 1254:     # walk the two SparseVectors, adding matched locations...
+
+1255:     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;
+
+1256:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1257:             # use x fill value
+
+1258:             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]) ))));
+
+1259:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1260:             continue
+
      goto __pyx_L3_continue;
+
 1261: 
+
+1262:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1263:             # use y fill value
+
+1264:             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);
+
+1265:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1266:             continue
+
      goto __pyx_L3_continue;
+
 1267: 
+
+1268:         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]) )));
+
+1269:         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]) )));
+
 1270: 
+
 1271:         # each index in the out_index had to come from either x, y, or both
+
+1272:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+1273:             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]) ))));
+
+1274:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1275:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1276:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 1277:             # use y fill value
+
+1278:             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);
+
+1279:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1280:         else:
+
 1281:             # use x fill value
+
+1282:             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]) ))));
+
+1283:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 1284: 
+
+1285:     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, 1285, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1285, __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;
+
 1286: 
+
 1287: 
+
+1288: cpdef sparse_div_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_15sparse_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_15sparse_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_15sparse_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, 1288, __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, 1288, __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, 1288, __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, 1288, __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, 1288, __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, 1288, __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, 1288, __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, 1289, __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, 1290, __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, 1291, __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, 1288, __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, 1289, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1291, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_14sparse_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_14sparse_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, 1288, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1288, __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, 1288, __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;
+}
+
 1289:                                   SparseIndex xindex, float64_t xfill,
+
 1290:                                   float64_t[:] y,
+
 1291:                                   SparseIndex yindex, float64_t yfill):
+
 1292: 
+
+1293:     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) {
+/* … */
+  }
+
+1294:         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, 1294, __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, 1294, __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, 1294, __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, 1294, __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;
+
+1295:                                              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, 1295, __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, 1295, __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, 1295, __pyx_L1_error)
+
+1296:     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)) {
+/* … */
+  }
+
+1297:         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, 1297, __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, 1297, __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, 1297, __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, 1297, __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;
+
+1298:                                            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, 1298, __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, 1298, __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, 1298, __pyx_L1_error)
+
 1299:     else:
+
+1300:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 1300, __pyx_L1_error)
+  }
+
 1301: 
+
 1302: 
+
 1303: @cython.wraparound(False)
+
 1304: @cython.boundscheck(False)
+
+1305: 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;
+}
+
 1306:                                                 BlockIndex xindex,
+
 1307:                                                 int64_t xfill,
+
 1308:                                                 int64_t[:] y_,
+
 1309:                                                 BlockIndex yindex,
+
 1310:                                                 int64_t yfill):
+
 1311:     '''
+
 1312:     Binary operator on BlockIndex objects with fill values
+
 1313:     '''
+
 1314: 
+
 1315:     cdef:
+
 1316:         BlockIndex out_index
+
+1317:         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;
+
+1318:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 1319:         int32_t xloc, yloc
+
+1320:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 1321: 
+
 1322:         int64_t[:] x, y
+
 1323:         ndarray[float64_t, ndim=1] out
+
 1324: 
+
 1325:     # to suppress Cython warning
+
+1326:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1327:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1328: 
+
+1329:     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, 1329, __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;
+
+1330:     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, 1330, __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, 1330, __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, 1330, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1330, __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, 1330, __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, 1330, __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, 1330, __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, 1330, __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, 1330, __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, 1330, __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, 1330, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1331: 
+
 1332:     # Wow, what a hack job. Need to do something about this
+
 1333: 
+
 1334:     # walk the two SparseVectors, adding matched locations...
+
+1335:     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;
+
+1336:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1337:             # use y fill value
+
+1338:             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);
+
+1339:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1340: 
+
 1341:             # advance x location
+
+1342:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1343:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1344:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1345:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+1346:             continue
+
      goto __pyx_L3_continue;
+
 1347: 
+
+1348:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1349:             # use x fill value
+
+1350:             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]) ))));
+
+1351:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1352: 
+
 1353:             # advance y location
+
+1354:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1355:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1356:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1357:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+1358:             continue
+
      goto __pyx_L3_continue;
+
 1359: 
+
+1360:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+1361:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 1362: 
+
 1363:         # each index in the out_index had to come from either x, y, or both
+
+1364:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+1365:             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]) ))));
+
+1366:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1367:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1368: 
+
 1369:             # advance both locations
+
+1370:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1371:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1372:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1373:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1374: 
+
+1375:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1376:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1377:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1378:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1379: 
+
+1380:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 1381:             # use y fill value
+
+1382:             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);
+
+1383:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1384: 
+
 1385:             # advance x location
+
+1386:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1387:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1388:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1389:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1390:         else:
+
 1391:             # use x fill value
+
+1392:             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]) ))));
+
+1393:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1394: 
+
 1395:             # advance y location
+
+1396:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1397:             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:;
+  }
+
+1398:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1399:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1400: 
+
+1401:     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, 1401, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1401, __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;
+
 1402: 
+
 1403: 
+
 1404: @cython.wraparound(False)
+
 1405: @cython.boundscheck(False)
+
+1406: 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;
+}
+
 1407:                                               IntIndex xindex,
+
 1408:                                               int64_t xfill,
+
 1409:                                               int64_t[:] y_,
+
 1410:                                               IntIndex yindex,
+
 1411:                                               int64_t yfill):
+
 1412:     cdef:
+
 1413:         IntIndex out_index
+
+1414:         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;
+
 1415:         int32_t xloc, yloc
+
 1416:         int32_t[:] xindices, yindices, out_indices
+
 1417:         int64_t[:] x, y
+
 1418:         ndarray[float64_t, ndim=1] out
+
 1419: 
+
 1420:     # suppress Cython compiler warnings due to inlining
+
+1421:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1422:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1423: 
+
 1424:     # need to do this first to know size of result array
+
+1425:     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, 1425, __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;
+
+1426:     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, 1426, __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, 1426, __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, 1426, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1426, __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, 1426, __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, 1426, __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, 1426, __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, 1426, __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, 1426, __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, 1426, __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, 1426, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1427: 
+
+1428:     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, 1428, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1429:     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, 1429, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1430:     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, 1430, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 1431: 
+
 1432:     # walk the two SparseVectors, adding matched locations...
+
+1433:     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;
+
+1434:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1435:             # use x fill value
+
+1436:             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]) ))));
+
+1437:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1438:             continue
+
      goto __pyx_L3_continue;
+
 1439: 
+
+1440:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1441:             # use y fill value
+
+1442:             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);
+
+1443:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1444:             continue
+
      goto __pyx_L3_continue;
+
 1445: 
+
+1446:         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]) )));
+
+1447:         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]) )));
+
 1448: 
+
 1449:         # each index in the out_index had to come from either x, y, or both
+
+1450:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+1451:             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]) ))));
+
+1452:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1453:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1454:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 1455:             # use y fill value
+
+1456:             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);
+
+1457:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1458:         else:
+
 1459:             # use x fill value
+
+1460:             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]) ))));
+
+1461:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 1462: 
+
+1463:     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, 1463, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1463, __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;
+
 1464: 
+
 1465: 
+
+1466: cpdef sparse_div_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_17sparse_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_17sparse_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_17sparse_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, 1466, __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, 1466, __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, 1466, __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, 1466, __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, 1466, __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, 1466, __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, 1466, __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, 1467, __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, 1468, __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, 1469, __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, 1466, __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, 1467, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1469, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_16sparse_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_16sparse_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, 1466, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1466, __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, 1466, __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;
+}
+
 1467:                                   SparseIndex xindex, int64_t xfill,
+
 1468:                                   int64_t[:] y,
+
 1469:                                   SparseIndex yindex, int64_t yfill):
+
 1470: 
+
+1471:     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) {
+/* … */
+  }
+
+1472:         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, 1472, __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, 1472, __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, 1472, __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, 1472, __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;
+
+1473:                                              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, 1473, __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, 1473, __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, 1473, __pyx_L1_error)
+
+1474:     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)) {
+/* … */
+  }
+
+1475:         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, 1475, __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, 1475, __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, 1475, __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, 1475, __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;
+
+1476:                                            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, 1476, __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, 1476, __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, 1476, __pyx_L1_error)
+
 1477:     else:
+
+1478:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 1478, __pyx_L1_error)
+  }
+
 1479: 
+
 1480: 
+
 1481: @cython.wraparound(False)
+
 1482: @cython.boundscheck(False)
+
+1483: 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;
+}
+
 1484:                                                 BlockIndex xindex,
+
 1485:                                                 float64_t xfill,
+
 1486:                                                 float64_t[:] y_,
+
 1487:                                                 BlockIndex yindex,
+
 1488:                                                 float64_t yfill):
+
 1489:     '''
+
 1490:     Binary operator on BlockIndex objects with fill values
+
 1491:     '''
+
 1492: 
+
 1493:     cdef:
+
 1494:         BlockIndex out_index
+
+1495:         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;
+
+1496:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 1497:         int32_t xloc, yloc
+
+1498:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 1499: 
+
 1500:         float64_t[:] x, y
+
 1501:         ndarray[float64_t, ndim=1] out
+
 1502: 
+
 1503:     # to suppress Cython warning
+
+1504:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1505:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1506: 
+
+1507:     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, 1507, __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;
+
+1508:     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, 1508, __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, 1508, __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, 1508, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1508, __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, 1508, __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, 1508, __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, 1508, __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, 1508, __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, 1508, __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, 1508, __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, 1508, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1509: 
+
 1510:     # Wow, what a hack job. Need to do something about this
+
 1511: 
+
 1512:     # walk the two SparseVectors, adding matched locations...
+
+1513:     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;
+
+1514:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1515:             # use y fill value
+
+1516:             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);
+
+1517:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1518: 
+
 1519:             # advance x location
+
+1520:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1521:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1522:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1523:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+1524:             continue
+
      goto __pyx_L3_continue;
+
 1525: 
+
+1526:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1527:             # use x fill value
+
+1528:             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]) ))));
+
+1529:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1530: 
+
 1531:             # advance y location
+
+1532:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1533:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1534:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1535:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+1536:             continue
+
      goto __pyx_L3_continue;
+
 1537: 
+
+1538:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+1539:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 1540: 
+
 1541:         # each index in the out_index had to come from either x, y, or both
+
+1542:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+1543:             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]) ))));
+
+1544:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1545:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1546: 
+
 1547:             # advance both locations
+
+1548:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1549:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1550:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1551:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1552: 
+
+1553:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1554:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1555:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1556:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1557: 
+
+1558:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 1559:             # use y fill value
+
+1560:             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);
+
+1561:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1562: 
+
 1563:             # advance x location
+
+1564:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1565:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1566:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1567:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1568:         else:
+
 1569:             # use x fill value
+
+1570:             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]) ))));
+
+1571:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1572: 
+
 1573:             # advance y location
+
+1574:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1575:             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:;
+  }
+
+1576:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1577:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1578: 
+
+1579:     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, 1579, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1579, __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;
+
 1580: 
+
 1581: 
+
 1582: @cython.wraparound(False)
+
 1583: @cython.boundscheck(False)
+
+1584: 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;
+}
+
 1585:                                               IntIndex xindex,
+
 1586:                                               float64_t xfill,
+
 1587:                                               float64_t[:] y_,
+
 1588:                                               IntIndex yindex,
+
 1589:                                               float64_t yfill):
+
 1590:     cdef:
+
 1591:         IntIndex out_index
+
+1592:         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;
+
 1593:         int32_t xloc, yloc
+
 1594:         int32_t[:] xindices, yindices, out_indices
+
 1595:         float64_t[:] x, y
+
 1596:         ndarray[float64_t, ndim=1] out
+
 1597: 
+
 1598:     # suppress Cython compiler warnings due to inlining
+
+1599:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1600:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1601: 
+
 1602:     # need to do this first to know size of result array
+
+1603:     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, 1603, __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;
+
+1604:     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, 1604, __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, 1604, __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, 1604, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1604, __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, 1604, __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, 1604, __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, 1604, __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, 1604, __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, 1604, __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, 1604, __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, 1604, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1605: 
+
+1606:     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, 1606, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1607:     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, 1607, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1608:     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, 1608, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 1609: 
+
 1610:     # walk the two SparseVectors, adding matched locations...
+
+1611:     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;
+
+1612:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1613:             # use x fill value
+
+1614:             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]) ))));
+
+1615:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1616:             continue
+
      goto __pyx_L3_continue;
+
 1617: 
+
+1618:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1619:             # use y fill value
+
+1620:             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);
+
+1621:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1622:             continue
+
      goto __pyx_L3_continue;
+
 1623: 
+
+1624:         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]) )));
+
+1625:         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]) )));
+
 1626: 
+
 1627:         # each index in the out_index had to come from either x, y, or both
+
+1628:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+1629:             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]) ))));
+
+1630:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1631:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1632:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 1633:             # use y fill value
+
+1634:             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);
+
+1635:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1636:         else:
+
 1637:             # use x fill value
+
+1638:             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]) ))));
+
+1639:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 1640: 
+
+1641:     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, 1641, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1641, __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;
+
 1642: 
+
 1643: 
+
+1644: cpdef sparse_mod_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_19sparse_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_19sparse_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_19sparse_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, 1644, __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, 1644, __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, 1644, __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, 1644, __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, 1644, __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, 1644, __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, 1644, __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, 1645, __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, 1646, __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, 1647, __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, 1644, __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, 1645, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1647, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_18sparse_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_18sparse_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, 1644, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1644, __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, 1644, __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;
+}
+
 1645:                                   SparseIndex xindex, float64_t xfill,
+
 1646:                                   float64_t[:] y,
+
 1647:                                   SparseIndex yindex, float64_t yfill):
+
 1648: 
+
+1649:     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) {
+/* … */
+  }
+
+1650:         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, 1650, __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, 1650, __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, 1650, __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, 1650, __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;
+
+1651:                                              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, 1651, __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, 1651, __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, 1651, __pyx_L1_error)
+
+1652:     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)) {
+/* … */
+  }
+
+1653:         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, 1653, __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, 1653, __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, 1653, __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, 1653, __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;
+
+1654:                                            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, 1654, __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, 1654, __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, 1654, __pyx_L1_error)
+
 1655:     else:
+
+1656:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 1656, __pyx_L1_error)
+  }
+
 1657: 
+
 1658: 
+
 1659: @cython.wraparound(False)
+
 1660: @cython.boundscheck(False)
+
+1661: 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;
+}
+
 1662:                                                 BlockIndex xindex,
+
 1663:                                                 int64_t xfill,
+
 1664:                                                 int64_t[:] y_,
+
 1665:                                                 BlockIndex yindex,
+
 1666:                                                 int64_t yfill):
+
 1667:     '''
+
 1668:     Binary operator on BlockIndex objects with fill values
+
 1669:     '''
+
 1670: 
+
 1671:     cdef:
+
 1672:         BlockIndex out_index
+
+1673:         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;
+
+1674:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 1675:         int32_t xloc, yloc
+
+1676:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 1677: 
+
 1678:         int64_t[:] x, y
+
 1679:         ndarray[int64_t, ndim=1] out
+
 1680: 
+
 1681:     # to suppress Cython warning
+
+1682:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1683:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1684: 
+
+1685:     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, 1685, __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;
+
+1686:     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, 1686, __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, 1686, __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, 1686, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1686, __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, 1686, __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, 1686, __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, 1686, __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, 1686, __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, 1686, __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, 1686, __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, 1686, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1687: 
+
 1688:     # Wow, what a hack job. Need to do something about this
+
 1689: 
+
 1690:     # walk the two SparseVectors, adding matched locations...
+
+1691:     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;
+
+1692:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1693:             # use y fill value
+
+1694:             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);
+
+1695:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1696: 
+
 1697:             # advance x location
+
+1698:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1699:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1700:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1701:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+1702:             continue
+
      goto __pyx_L3_continue;
+
 1703: 
+
+1704:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1705:             # use x fill value
+
+1706:             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]) ))));
+
+1707:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1708: 
+
 1709:             # advance y location
+
+1710:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1711:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1712:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1713:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+1714:             continue
+
      goto __pyx_L3_continue;
+
 1715: 
+
+1716:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+1717:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 1718: 
+
 1719:         # each index in the out_index had to come from either x, y, or both
+
+1720:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+1721:             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]) ))));
+
+1722:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1723:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1724: 
+
 1725:             # advance both locations
+
+1726:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1727:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1728:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1729:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1730: 
+
+1731:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1732:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1733:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1734:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1735: 
+
+1736:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 1737:             # use y fill value
+
+1738:             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);
+
+1739:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1740: 
+
 1741:             # advance x location
+
+1742:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1743:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1744:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1745:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1746:         else:
+
 1747:             # use x fill value
+
+1748:             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]) ))));
+
+1749:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1750: 
+
 1751:             # advance y location
+
+1752:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1753:             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:;
+  }
+
+1754:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1755:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1756: 
+
+1757:     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, 1757, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1757, __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;
+
 1758: 
+
 1759: 
+
 1760: @cython.wraparound(False)
+
 1761: @cython.boundscheck(False)
+
+1762: 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;
+}
+
 1763:                                               IntIndex xindex,
+
 1764:                                               int64_t xfill,
+
 1765:                                               int64_t[:] y_,
+
 1766:                                               IntIndex yindex,
+
 1767:                                               int64_t yfill):
+
 1768:     cdef:
+
 1769:         IntIndex out_index
+
+1770:         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;
+
 1771:         int32_t xloc, yloc
+
 1772:         int32_t[:] xindices, yindices, out_indices
+
 1773:         int64_t[:] x, y
+
 1774:         ndarray[int64_t, ndim=1] out
+
 1775: 
+
 1776:     # suppress Cython compiler warnings due to inlining
+
+1777:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1778:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1779: 
+
 1780:     # need to do this first to know size of result array
+
+1781:     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, 1781, __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;
+
+1782:     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, 1782, __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, 1782, __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, 1782, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1782, __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, 1782, __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, 1782, __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, 1782, __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, 1782, __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, 1782, __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, 1782, __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, 1782, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1783: 
+
+1784:     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, 1784, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1785:     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, 1785, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1786:     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, 1786, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 1787: 
+
 1788:     # walk the two SparseVectors, adding matched locations...
+
+1789:     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;
+
+1790:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1791:             # use x fill value
+
+1792:             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]) ))));
+
+1793:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1794:             continue
+
      goto __pyx_L3_continue;
+
 1795: 
+
+1796:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1797:             # use y fill value
+
+1798:             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);
+
+1799:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1800:             continue
+
      goto __pyx_L3_continue;
+
 1801: 
+
+1802:         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]) )));
+
+1803:         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]) )));
+
 1804: 
+
 1805:         # each index in the out_index had to come from either x, y, or both
+
+1806:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+1807:             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]) ))));
+
+1808:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1809:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1810:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 1811:             # use y fill value
+
+1812:             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);
+
+1813:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1814:         else:
+
 1815:             # use x fill value
+
+1816:             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]) ))));
+
+1817:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 1818: 
+
+1819:     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, 1819, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1819, __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;
+
 1820: 
+
 1821: 
+
+1822: cpdef sparse_mod_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_21sparse_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_21sparse_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_21sparse_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, 1822, __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, 1822, __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, 1822, __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, 1822, __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, 1822, __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, 1822, __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, 1822, __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, 1823, __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, 1824, __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, 1825, __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, 1822, __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, 1823, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1825, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_20sparse_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_20sparse_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, 1822, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1822, __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, 1822, __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;
+}
+
 1823:                                   SparseIndex xindex, int64_t xfill,
+
 1824:                                   int64_t[:] y,
+
 1825:                                   SparseIndex yindex, int64_t yfill):
+
 1826: 
+
+1827:     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) {
+/* … */
+  }
+
+1828:         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, 1828, __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, 1828, __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, 1828, __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, 1828, __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;
+
+1829:                                              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, 1829, __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, 1829, __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, 1829, __pyx_L1_error)
+
+1830:     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)) {
+/* … */
+  }
+
+1831:         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, 1831, __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, 1831, __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, 1831, __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, 1831, __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;
+
+1832:                                            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, 1832, __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, 1832, __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, 1832, __pyx_L1_error)
+
 1833:     else:
+
+1834:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 1834, __pyx_L1_error)
+  }
+
 1835: 
+
 1836: 
+
 1837: @cython.wraparound(False)
+
 1838: @cython.boundscheck(False)
+
+1839: 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;
+}
+
 1840:                                                 BlockIndex xindex,
+
 1841:                                                 float64_t xfill,
+
 1842:                                                 float64_t[:] y_,
+
 1843:                                                 BlockIndex yindex,
+
 1844:                                                 float64_t yfill):
+
 1845:     '''
+
 1846:     Binary operator on BlockIndex objects with fill values
+
 1847:     '''
+
 1848: 
+
 1849:     cdef:
+
 1850:         BlockIndex out_index
+
+1851:         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;
+
+1852:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 1853:         int32_t xloc, yloc
+
+1854:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 1855: 
+
 1856:         float64_t[:] x, y
+
 1857:         ndarray[float64_t, ndim=1] out
+
 1858: 
+
 1859:     # to suppress Cython warning
+
+1860:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1861:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1862: 
+
+1863:     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, 1863, __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;
+
+1864:     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, 1864, __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, 1864, __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, 1864, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1864, __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, 1864, __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, 1864, __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, 1864, __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, 1864, __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, 1864, __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, 1864, __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, 1864, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1865: 
+
 1866:     # Wow, what a hack job. Need to do something about this
+
 1867: 
+
 1868:     # walk the two SparseVectors, adding matched locations...
+
+1869:     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;
+
+1870:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1871:             # use y fill value
+
+1872:             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);
+
+1873:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1874: 
+
 1875:             # advance x location
+
+1876:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1877:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1878:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1879:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+1880:             continue
+
      goto __pyx_L3_continue;
+
 1881: 
+
+1882:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 1883:             # use x fill value
+
+1884:             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]) ))));
+
+1885:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1886: 
+
 1887:             # advance y location
+
+1888:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1889:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1890:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1891:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+1892:             continue
+
      goto __pyx_L3_continue;
+
 1893: 
+
+1894:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+1895:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 1896: 
+
 1897:         # each index in the out_index had to come from either x, y, or both
+
+1898:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+1899:             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]) ))));
+
+1900:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1901:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1902: 
+
 1903:             # advance both locations
+
+1904:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1905:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1906:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1907:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1908: 
+
+1909:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1910:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1911:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1912:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1913: 
+
+1914:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 1915:             # use y fill value
+
+1916:             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);
+
+1917:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1918: 
+
 1919:             # advance x location
+
+1920:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+1921:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+1922:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+1923:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 1924:         else:
+
 1925:             # use x fill value
+
+1926:             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]) ))));
+
+1927:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 1928: 
+
 1929:             # advance y location
+
+1930:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+1931:             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:;
+  }
+
+1932:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+1933:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 1934: 
+
+1935:     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, 1935, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1935, __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;
+
 1936: 
+
 1937: 
+
 1938: @cython.wraparound(False)
+
 1939: @cython.boundscheck(False)
+
+1940: 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;
+}
+
 1941:                                               IntIndex xindex,
+
 1942:                                               float64_t xfill,
+
 1943:                                               float64_t[:] y_,
+
 1944:                                               IntIndex yindex,
+
 1945:                                               float64_t yfill):
+
 1946:     cdef:
+
 1947:         IntIndex out_index
+
+1948:         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;
+
 1949:         int32_t xloc, yloc
+
 1950:         int32_t[:] xindices, yindices, out_indices
+
 1951:         float64_t[:] x, y
+
 1952:         ndarray[float64_t, ndim=1] out
+
 1953: 
+
 1954:     # suppress Cython compiler warnings due to inlining
+
+1955:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+1956:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 1957: 
+
 1958:     # need to do this first to know size of result array
+
+1959:     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, 1959, __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;
+
+1960:     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, 1960, __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, 1960, __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, 1960, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1960, __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, 1960, __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, 1960, __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, 1960, __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, 1960, __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, 1960, __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, 1960, __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, 1960, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 1961: 
+
+1962:     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, 1962, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1963:     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, 1963, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+1964:     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, 1964, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 1965: 
+
 1966:     # walk the two SparseVectors, adding matched locations...
+
+1967:     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;
+
+1968:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1969:             # use x fill value
+
+1970:             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]) ))));
+
+1971:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1972:             continue
+
      goto __pyx_L3_continue;
+
 1973: 
+
+1974:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 1975:             # use y fill value
+
+1976:             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);
+
+1977:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1978:             continue
+
      goto __pyx_L3_continue;
+
 1979: 
+
+1980:         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]) )));
+
+1981:         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]) )));
+
 1982: 
+
 1983:         # each index in the out_index had to come from either x, y, or both
+
+1984:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+1985:             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]) ))));
+
+1986:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+1987:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+1988:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 1989:             # use y fill value
+
+1990:             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);
+
+1991:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 1992:         else:
+
 1993:             # use x fill value
+
+1994:             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]) ))));
+
+1995:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 1996: 
+
+1997:     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, 1997, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1997, __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;
+
 1998: 
+
 1999: 
+
+2000: cpdef sparse_truediv_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_23sparse_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_23sparse_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_23sparse_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, 2000, __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, 2000, __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, 2000, __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, 2000, __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, 2000, __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, 2000, __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, 2000, __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, 2001, __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, 2002, __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, 2003, __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, 2000, __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, 2001, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2003, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_22sparse_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_22sparse_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, 2000, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2000, __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, 2000, __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;
+}
+
 2001:                                   SparseIndex xindex, float64_t xfill,
+
 2002:                                   float64_t[:] y,
+
 2003:                                   SparseIndex yindex, float64_t yfill):
+
 2004: 
+
+2005:     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) {
+/* … */
+  }
+
+2006:         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, 2006, __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, 2006, __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, 2006, __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, 2006, __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;
+
+2007:                                              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, 2007, __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, 2007, __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, 2007, __pyx_L1_error)
+
+2008:     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)) {
+/* … */
+  }
+
+2009:         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, 2009, __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, 2009, __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, 2009, __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, 2009, __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;
+
+2010:                                            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, 2010, __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, 2010, __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, 2010, __pyx_L1_error)
+
 2011:     else:
+
+2012:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 2012, __pyx_L1_error)
+  }
+
 2013: 
+
 2014: 
+
 2015: @cython.wraparound(False)
+
 2016: @cython.boundscheck(False)
+
+2017: 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;
+}
+
 2018:                                                 BlockIndex xindex,
+
 2019:                                                 int64_t xfill,
+
 2020:                                                 int64_t[:] y_,
+
 2021:                                                 BlockIndex yindex,
+
 2022:                                                 int64_t yfill):
+
 2023:     '''
+
 2024:     Binary operator on BlockIndex objects with fill values
+
 2025:     '''
+
 2026: 
+
 2027:     cdef:
+
 2028:         BlockIndex out_index
+
+2029:         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;
+
+2030:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 2031:         int32_t xloc, yloc
+
+2032:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 2033: 
+
 2034:         int64_t[:] x, y
+
 2035:         ndarray[float64_t, ndim=1] out
+
 2036: 
+
 2037:     # to suppress Cython warning
+
+2038:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2039:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2040: 
+
+2041:     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, 2041, __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;
+
+2042:     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, 2042, __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, 2042, __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, 2042, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2042, __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, 2042, __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, 2042, __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, 2042, __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, 2042, __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, 2042, __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, 2042, __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, 2042, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2043: 
+
 2044:     # Wow, what a hack job. Need to do something about this
+
 2045: 
+
 2046:     # walk the two SparseVectors, adding matched locations...
+
+2047:     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;
+
+2048:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2049:             # use y fill value
+
+2050:             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);
+
+2051:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2052: 
+
 2053:             # advance x location
+
+2054:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2055:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2056:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2057:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+2058:             continue
+
      goto __pyx_L3_continue;
+
 2059: 
+
+2060:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2061:             # use x fill value
+
+2062:             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]) ))));
+
+2063:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2064: 
+
 2065:             # advance y location
+
+2066:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2067:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2068:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2069:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+2070:             continue
+
      goto __pyx_L3_continue;
+
 2071: 
+
+2072:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+2073:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 2074: 
+
 2075:         # each index in the out_index had to come from either x, y, or both
+
+2076:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+2077:             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]) ))));
+
+2078:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2079:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2080: 
+
 2081:             # advance both locations
+
+2082:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2083:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2084:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2085:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2086: 
+
+2087:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2088:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2089:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2090:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2091: 
+
+2092:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 2093:             # use y fill value
+
+2094:             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);
+
+2095:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2096: 
+
 2097:             # advance x location
+
+2098:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2099:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2100:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2101:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2102:         else:
+
 2103:             # use x fill value
+
+2104:             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]) ))));
+
+2105:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2106: 
+
 2107:             # advance y location
+
+2108:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2109:             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:;
+  }
+
+2110:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2111:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2112: 
+
+2113:     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, 2113, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2113, __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;
+
 2114: 
+
 2115: 
+
 2116: @cython.wraparound(False)
+
 2117: @cython.boundscheck(False)
+
+2118: 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;
+}
+
 2119:                                               IntIndex xindex,
+
 2120:                                               int64_t xfill,
+
 2121:                                               int64_t[:] y_,
+
 2122:                                               IntIndex yindex,
+
 2123:                                               int64_t yfill):
+
 2124:     cdef:
+
 2125:         IntIndex out_index
+
+2126:         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;
+
 2127:         int32_t xloc, yloc
+
 2128:         int32_t[:] xindices, yindices, out_indices
+
 2129:         int64_t[:] x, y
+
 2130:         ndarray[float64_t, ndim=1] out
+
 2131: 
+
 2132:     # suppress Cython compiler warnings due to inlining
+
+2133:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2134:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2135: 
+
 2136:     # need to do this first to know size of result array
+
+2137:     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, 2137, __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;
+
+2138:     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, 2138, __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, 2138, __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, 2138, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2138, __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, 2138, __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, 2138, __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, 2138, __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, 2138, __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, 2138, __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, 2138, __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, 2138, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2139: 
+
+2140:     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, 2140, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2141:     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, 2141, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2142:     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, 2142, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 2143: 
+
 2144:     # walk the two SparseVectors, adding matched locations...
+
+2145:     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;
+
+2146:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2147:             # use x fill value
+
+2148:             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]) ))));
+
+2149:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2150:             continue
+
      goto __pyx_L3_continue;
+
 2151: 
+
+2152:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2153:             # use y fill value
+
+2154:             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);
+
+2155:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2156:             continue
+
      goto __pyx_L3_continue;
+
 2157: 
+
+2158:         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]) )));
+
+2159:         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]) )));
+
 2160: 
+
 2161:         # each index in the out_index had to come from either x, y, or both
+
+2162:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+2163:             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]) ))));
+
+2164:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2165:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2166:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 2167:             # use y fill value
+
+2168:             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);
+
+2169:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2170:         else:
+
 2171:             # use x fill value
+
+2172:             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]) ))));
+
+2173:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 2174: 
+
+2175:     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, 2175, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2175, __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;
+
 2176: 
+
 2177: 
+
+2178: cpdef sparse_truediv_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_25sparse_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_25sparse_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_25sparse_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, 2178, __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, 2178, __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, 2178, __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, 2178, __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, 2178, __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, 2178, __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, 2178, __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, 2179, __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, 2180, __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, 2181, __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, 2178, __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, 2179, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2181, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_24sparse_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_24sparse_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, 2178, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2178, __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, 2178, __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;
+}
+
 2179:                                   SparseIndex xindex, int64_t xfill,
+
 2180:                                   int64_t[:] y,
+
 2181:                                   SparseIndex yindex, int64_t yfill):
+
 2182: 
+
+2183:     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) {
+/* … */
+  }
+
+2184:         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, 2184, __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, 2184, __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, 2184, __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, 2184, __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;
+
+2185:                                              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, 2185, __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, 2185, __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, 2185, __pyx_L1_error)
+
+2186:     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)) {
+/* … */
+  }
+
+2187:         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, 2187, __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, 2187, __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, 2187, __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, 2187, __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;
+
+2188:                                            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, 2188, __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, 2188, __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, 2188, __pyx_L1_error)
+
 2189:     else:
+
+2190:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 2190, __pyx_L1_error)
+  }
+
 2191: 
+
 2192: 
+
 2193: @cython.wraparound(False)
+
 2194: @cython.boundscheck(False)
+
+2195: 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;
+}
+
 2196:                                                 BlockIndex xindex,
+
 2197:                                                 float64_t xfill,
+
 2198:                                                 float64_t[:] y_,
+
 2199:                                                 BlockIndex yindex,
+
 2200:                                                 float64_t yfill):
+
 2201:     '''
+
 2202:     Binary operator on BlockIndex objects with fill values
+
 2203:     '''
+
 2204: 
+
 2205:     cdef:
+
 2206:         BlockIndex out_index
+
+2207:         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;
+
+2208:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 2209:         int32_t xloc, yloc
+
+2210:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 2211: 
+
 2212:         float64_t[:] x, y
+
 2213:         ndarray[float64_t, ndim=1] out
+
 2214: 
+
 2215:     # to suppress Cython warning
+
+2216:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2217:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2218: 
+
+2219:     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, 2219, __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;
+
+2220:     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, 2220, __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, 2220, __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, 2220, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2220, __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, 2220, __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, 2220, __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, 2220, __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, 2220, __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, 2220, __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, 2220, __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, 2220, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2221: 
+
 2222:     # Wow, what a hack job. Need to do something about this
+
 2223: 
+
 2224:     # walk the two SparseVectors, adding matched locations...
+
+2225:     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;
+
+2226:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2227:             # use y fill value
+
+2228:             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);
+
+2229:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2230: 
+
 2231:             # advance x location
+
+2232:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2233:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2234:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2235:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+2236:             continue
+
      goto __pyx_L3_continue;
+
 2237: 
+
+2238:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2239:             # use x fill value
+
+2240:             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]) ))));
+
+2241:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2242: 
+
 2243:             # advance y location
+
+2244:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2245:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2246:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2247:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+2248:             continue
+
      goto __pyx_L3_continue;
+
 2249: 
+
+2250:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+2251:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 2252: 
+
 2253:         # each index in the out_index had to come from either x, y, or both
+
+2254:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+2255:             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]) ))));
+
+2256:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2257:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2258: 
+
 2259:             # advance both locations
+
+2260:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2261:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2262:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2263:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2264: 
+
+2265:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2266:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2267:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2268:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2269: 
+
+2270:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 2271:             # use y fill value
+
+2272:             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);
+
+2273:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2274: 
+
 2275:             # advance x location
+
+2276:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2277:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2278:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2279:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2280:         else:
+
 2281:             # use x fill value
+
+2282:             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]) ))));
+
+2283:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2284: 
+
 2285:             # advance y location
+
+2286:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2287:             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:;
+  }
+
+2288:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2289:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2290: 
+
+2291:     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, 2291, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2291, __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;
+
 2292: 
+
 2293: 
+
 2294: @cython.wraparound(False)
+
 2295: @cython.boundscheck(False)
+
+2296: 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;
+}
+
 2297:                                               IntIndex xindex,
+
 2298:                                               float64_t xfill,
+
 2299:                                               float64_t[:] y_,
+
 2300:                                               IntIndex yindex,
+
 2301:                                               float64_t yfill):
+
 2302:     cdef:
+
 2303:         IntIndex out_index
+
+2304:         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;
+
 2305:         int32_t xloc, yloc
+
 2306:         int32_t[:] xindices, yindices, out_indices
+
 2307:         float64_t[:] x, y
+
 2308:         ndarray[float64_t, ndim=1] out
+
 2309: 
+
 2310:     # suppress Cython compiler warnings due to inlining
+
+2311:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2312:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2313: 
+
 2314:     # need to do this first to know size of result array
+
+2315:     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, 2315, __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;
+
+2316:     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, 2316, __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, 2316, __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, 2316, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2316, __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, 2316, __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, 2316, __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, 2316, __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, 2316, __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, 2316, __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, 2316, __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, 2316, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2317: 
+
+2318:     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, 2318, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2319:     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, 2319, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2320:     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, 2320, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 2321: 
+
 2322:     # walk the two SparseVectors, adding matched locations...
+
+2323:     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;
+
+2324:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2325:             # use x fill value
+
+2326:             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]) ))));
+
+2327:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2328:             continue
+
      goto __pyx_L3_continue;
+
 2329: 
+
+2330:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2331:             # use y fill value
+
+2332:             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);
+
+2333:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2334:             continue
+
      goto __pyx_L3_continue;
+
 2335: 
+
+2336:         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]) )));
+
+2337:         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]) )));
+
 2338: 
+
 2339:         # each index in the out_index had to come from either x, y, or both
+
+2340:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+2341:             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]) ))));
+
+2342:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2343:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2344:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 2345:             # use y fill value
+
+2346:             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);
+
+2347:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2348:         else:
+
 2349:             # use x fill value
+
+2350:             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]) ))));
+
+2351:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 2352: 
+
+2353:     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, 2353, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2353, __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;
+
 2354: 
+
 2355: 
+
+2356: cpdef sparse_floordiv_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_27sparse_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_27sparse_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_27sparse_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, 2356, __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, 2356, __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, 2356, __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, 2356, __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, 2356, __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, 2356, __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, 2356, __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, 2357, __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, 2358, __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, 2359, __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, 2356, __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, 2357, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2359, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_26sparse_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_26sparse_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, 2356, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2356, __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, 2356, __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;
+}
+
 2357:                                   SparseIndex xindex, float64_t xfill,
+
 2358:                                   float64_t[:] y,
+
 2359:                                   SparseIndex yindex, float64_t yfill):
+
 2360: 
+
+2361:     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) {
+/* … */
+  }
+
+2362:         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, 2362, __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, 2362, __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, 2362, __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, 2362, __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;
+
+2363:                                              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, 2363, __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, 2363, __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, 2363, __pyx_L1_error)
+
+2364:     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)) {
+/* … */
+  }
+
+2365:         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, 2365, __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, 2365, __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, 2365, __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, 2365, __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;
+
+2366:                                            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, 2366, __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, 2366, __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, 2366, __pyx_L1_error)
+
 2367:     else:
+
+2368:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 2368, __pyx_L1_error)
+  }
+
 2369: 
+
 2370: 
+
 2371: @cython.wraparound(False)
+
 2372: @cython.boundscheck(False)
+
+2373: 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;
+}
+
 2374:                                                 BlockIndex xindex,
+
 2375:                                                 int64_t xfill,
+
 2376:                                                 int64_t[:] y_,
+
 2377:                                                 BlockIndex yindex,
+
 2378:                                                 int64_t yfill):
+
 2379:     '''
+
 2380:     Binary operator on BlockIndex objects with fill values
+
 2381:     '''
+
 2382: 
+
 2383:     cdef:
+
 2384:         BlockIndex out_index
+
+2385:         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;
+
+2386:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 2387:         int32_t xloc, yloc
+
+2388:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 2389: 
+
 2390:         int64_t[:] x, y
+
 2391:         ndarray[int64_t, ndim=1] out
+
 2392: 
+
 2393:     # to suppress Cython warning
+
+2394:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2395:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2396: 
+
+2397:     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, 2397, __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;
+
+2398:     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, 2398, __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, 2398, __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, 2398, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2398, __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, 2398, __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, 2398, __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, 2398, __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, 2398, __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, 2398, __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, 2398, __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, 2398, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2399: 
+
 2400:     # Wow, what a hack job. Need to do something about this
+
 2401: 
+
 2402:     # walk the two SparseVectors, adding matched locations...
+
+2403:     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;
+
+2404:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2405:             # use y fill value
+
+2406:             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);
+
+2407:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2408: 
+
 2409:             # advance x location
+
+2410:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2411:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2412:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2413:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+2414:             continue
+
      goto __pyx_L3_continue;
+
 2415: 
+
+2416:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2417:             # use x fill value
+
+2418:             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]) ))));
+
+2419:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2420: 
+
 2421:             # advance y location
+
+2422:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2423:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2424:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2425:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+2426:             continue
+
      goto __pyx_L3_continue;
+
 2427: 
+
+2428:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+2429:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 2430: 
+
 2431:         # each index in the out_index had to come from either x, y, or both
+
+2432:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+2433:             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]) ))));
+
+2434:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2435:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2436: 
+
 2437:             # advance both locations
+
+2438:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2439:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2440:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2441:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2442: 
+
+2443:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2444:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2445:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2446:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2447: 
+
+2448:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 2449:             # use y fill value
+
+2450:             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);
+
+2451:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2452: 
+
 2453:             # advance x location
+
+2454:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2455:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2456:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2457:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2458:         else:
+
 2459:             # use x fill value
+
+2460:             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]) ))));
+
+2461:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2462: 
+
 2463:             # advance y location
+
+2464:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2465:             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:;
+  }
+
+2466:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2467:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2468: 
+
+2469:     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, 2469, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2469, __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;
+
 2470: 
+
 2471: 
+
 2472: @cython.wraparound(False)
+
 2473: @cython.boundscheck(False)
+
+2474: 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;
+}
+
 2475:                                               IntIndex xindex,
+
 2476:                                               int64_t xfill,
+
 2477:                                               int64_t[:] y_,
+
 2478:                                               IntIndex yindex,
+
 2479:                                               int64_t yfill):
+
 2480:     cdef:
+
 2481:         IntIndex out_index
+
+2482:         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;
+
 2483:         int32_t xloc, yloc
+
 2484:         int32_t[:] xindices, yindices, out_indices
+
 2485:         int64_t[:] x, y
+
 2486:         ndarray[int64_t, ndim=1] out
+
 2487: 
+
 2488:     # suppress Cython compiler warnings due to inlining
+
+2489:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2490:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2491: 
+
 2492:     # need to do this first to know size of result array
+
+2493:     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, 2493, __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;
+
+2494:     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, 2494, __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, 2494, __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, 2494, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2494, __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, 2494, __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, 2494, __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, 2494, __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, 2494, __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, 2494, __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, 2494, __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, 2494, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2495: 
+
+2496:     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, 2496, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2497:     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, 2497, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2498:     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, 2498, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 2499: 
+
 2500:     # walk the two SparseVectors, adding matched locations...
+
+2501:     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;
+
+2502:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2503:             # use x fill value
+
+2504:             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]) ))));
+
+2505:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2506:             continue
+
      goto __pyx_L3_continue;
+
 2507: 
+
+2508:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2509:             # use y fill value
+
+2510:             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);
+
+2511:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2512:             continue
+
      goto __pyx_L3_continue;
+
 2513: 
+
+2514:         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]) )));
+
+2515:         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]) )));
+
 2516: 
+
 2517:         # each index in the out_index had to come from either x, y, or both
+
+2518:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+2519:             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]) ))));
+
+2520:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2521:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2522:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 2523:             # use y fill value
+
+2524:             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);
+
+2525:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2526:         else:
+
 2527:             # use x fill value
+
+2528:             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]) ))));
+
+2529:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 2530: 
+
+2531:     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, 2531, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2531, __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;
+
 2532: 
+
 2533: 
+
+2534: cpdef sparse_floordiv_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_29sparse_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_29sparse_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_29sparse_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, 2534, __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, 2534, __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, 2534, __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, 2534, __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, 2534, __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, 2534, __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, 2534, __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, 2535, __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, 2536, __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, 2537, __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, 2534, __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, 2535, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2537, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_28sparse_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_28sparse_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, 2534, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2534, __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, 2534, __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;
+}
+
 2535:                                   SparseIndex xindex, int64_t xfill,
+
 2536:                                   int64_t[:] y,
+
 2537:                                   SparseIndex yindex, int64_t yfill):
+
 2538: 
+
+2539:     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) {
+/* … */
+  }
+
+2540:         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, 2540, __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, 2540, __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, 2540, __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, 2540, __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;
+
+2541:                                              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, 2541, __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, 2541, __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, 2541, __pyx_L1_error)
+
+2542:     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)) {
+/* … */
+  }
+
+2543:         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, 2543, __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, 2543, __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, 2543, __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, 2543, __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;
+
+2544:                                            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, 2544, __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, 2544, __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, 2544, __pyx_L1_error)
+
 2545:     else:
+
+2546:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 2546, __pyx_L1_error)
+  }
+
 2547: 
+
 2548: 
+
 2549: @cython.wraparound(False)
+
 2550: @cython.boundscheck(False)
+
+2551: 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;
+}
+
 2552:                                                 BlockIndex xindex,
+
 2553:                                                 float64_t xfill,
+
 2554:                                                 float64_t[:] y_,
+
 2555:                                                 BlockIndex yindex,
+
 2556:                                                 float64_t yfill):
+
 2557:     '''
+
 2558:     Binary operator on BlockIndex objects with fill values
+
 2559:     '''
+
 2560: 
+
 2561:     cdef:
+
 2562:         BlockIndex out_index
+
+2563:         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;
+
+2564:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 2565:         int32_t xloc, yloc
+
+2566:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 2567: 
+
 2568:         float64_t[:] x, y
+
 2569:         ndarray[float64_t, ndim=1] out
+
 2570: 
+
 2571:     # to suppress Cython warning
+
+2572:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2573:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2574: 
+
+2575:     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, 2575, __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;
+
+2576:     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, 2576, __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, 2576, __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, 2576, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2576, __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, 2576, __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, 2576, __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, 2576, __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, 2576, __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, 2576, __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, 2576, __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, 2576, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2577: 
+
 2578:     # Wow, what a hack job. Need to do something about this
+
 2579: 
+
 2580:     # walk the two SparseVectors, adding matched locations...
+
+2581:     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;
+
+2582:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2583:             # use y fill value
+
+2584:             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);
+
+2585:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2586: 
+
 2587:             # advance x location
+
+2588:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2589:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2590:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2591:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+2592:             continue
+
      goto __pyx_L3_continue;
+
 2593: 
+
+2594:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2595:             # use x fill value
+
+2596:             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]) ))));
+
+2597:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2598: 
+
 2599:             # advance y location
+
+2600:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2601:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2602:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2603:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+2604:             continue
+
      goto __pyx_L3_continue;
+
 2605: 
+
+2606:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+2607:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 2608: 
+
 2609:         # each index in the out_index had to come from either x, y, or both
+
+2610:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+2611:             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]) ))));
+
+2612:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2613:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2614: 
+
 2615:             # advance both locations
+
+2616:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2617:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2618:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2619:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2620: 
+
+2621:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2622:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2623:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2624:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2625: 
+
+2626:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 2627:             # use y fill value
+
+2628:             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);
+
+2629:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2630: 
+
 2631:             # advance x location
+
+2632:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2633:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2634:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2635:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2636:         else:
+
 2637:             # use x fill value
+
+2638:             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]) ))));
+
+2639:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2640: 
+
 2641:             # advance y location
+
+2642:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2643:             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:;
+  }
+
+2644:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2645:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2646: 
+
+2647:     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, 2647, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2647, __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;
+
 2648: 
+
 2649: 
+
 2650: @cython.wraparound(False)
+
 2651: @cython.boundscheck(False)
+
+2652: 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;
+}
+
 2653:                                               IntIndex xindex,
+
 2654:                                               float64_t xfill,
+
 2655:                                               float64_t[:] y_,
+
 2656:                                               IntIndex yindex,
+
 2657:                                               float64_t yfill):
+
 2658:     cdef:
+
 2659:         IntIndex out_index
+
+2660:         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;
+
 2661:         int32_t xloc, yloc
+
 2662:         int32_t[:] xindices, yindices, out_indices
+
 2663:         float64_t[:] x, y
+
 2664:         ndarray[float64_t, ndim=1] out
+
 2665: 
+
 2666:     # suppress Cython compiler warnings due to inlining
+
+2667:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2668:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2669: 
+
 2670:     # need to do this first to know size of result array
+
+2671:     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, 2671, __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;
+
+2672:     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, 2672, __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, 2672, __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, 2672, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2672, __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, 2672, __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, 2672, __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, 2672, __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, 2672, __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, 2672, __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, 2672, __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, 2672, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2673: 
+
+2674:     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, 2674, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2675:     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, 2675, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2676:     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, 2676, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 2677: 
+
 2678:     # walk the two SparseVectors, adding matched locations...
+
+2679:     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;
+
+2680:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2681:             # use x fill value
+
+2682:             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]) ))));
+
+2683:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2684:             continue
+
      goto __pyx_L3_continue;
+
 2685: 
+
+2686:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2687:             # use y fill value
+
+2688:             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);
+
+2689:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2690:             continue
+
      goto __pyx_L3_continue;
+
 2691: 
+
+2692:         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]) )));
+
+2693:         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]) )));
+
 2694: 
+
 2695:         # each index in the out_index had to come from either x, y, or both
+
+2696:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+2697:             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]) ))));
+
+2698:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2699:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2700:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 2701:             # use y fill value
+
+2702:             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);
+
+2703:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2704:         else:
+
 2705:             # use x fill value
+
+2706:             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]) ))));
+
+2707:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 2708: 
+
+2709:     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, 2709, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2709, __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;
+
 2710: 
+
 2711: 
+
+2712: cpdef sparse_pow_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_31sparse_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_31sparse_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_31sparse_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, 2712, __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, 2712, __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, 2712, __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, 2712, __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, 2712, __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, 2712, __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, 2712, __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, 2713, __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, 2714, __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, 2715, __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, 2712, __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, 2713, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2715, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_30sparse_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_30sparse_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, 2712, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2712, __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, 2712, __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;
+}
+
 2713:                                   SparseIndex xindex, float64_t xfill,
+
 2714:                                   float64_t[:] y,
+
 2715:                                   SparseIndex yindex, float64_t yfill):
+
 2716: 
+
+2717:     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) {
+/* … */
+  }
+
+2718:         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, 2718, __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, 2718, __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, 2718, __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, 2718, __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;
+
+2719:                                              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, 2719, __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, 2719, __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, 2719, __pyx_L1_error)
+
+2720:     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)) {
+/* … */
+  }
+
+2721:         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, 2721, __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, 2721, __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, 2721, __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, 2721, __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;
+
+2722:                                            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, 2722, __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, 2722, __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, 2722, __pyx_L1_error)
+
 2723:     else:
+
+2724:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 2724, __pyx_L1_error)
+  }
+
 2725: 
+
 2726: 
+
 2727: @cython.wraparound(False)
+
 2728: @cython.boundscheck(False)
+
+2729: 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;
+}
+
 2730:                                                 BlockIndex xindex,
+
 2731:                                                 int64_t xfill,
+
 2732:                                                 int64_t[:] y_,
+
 2733:                                                 BlockIndex yindex,
+
 2734:                                                 int64_t yfill):
+
 2735:     '''
+
 2736:     Binary operator on BlockIndex objects with fill values
+
 2737:     '''
+
 2738: 
+
 2739:     cdef:
+
 2740:         BlockIndex out_index
+
+2741:         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;
+
+2742:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 2743:         int32_t xloc, yloc
+
+2744:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 2745: 
+
 2746:         int64_t[:] x, y
+
 2747:         ndarray[int64_t, ndim=1] out
+
 2748: 
+
 2749:     # to suppress Cython warning
+
+2750:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2751:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2752: 
+
+2753:     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, 2753, __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;
+
+2754:     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, 2754, __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, 2754, __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, 2754, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2754, __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, 2754, __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, 2754, __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, 2754, __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, 2754, __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, 2754, __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, 2754, __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, 2754, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2755: 
+
 2756:     # Wow, what a hack job. Need to do something about this
+
 2757: 
+
 2758:     # walk the two SparseVectors, adding matched locations...
+
+2759:     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;
+
+2760:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2761:             # use y fill value
+
+2762:             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);
+
+2763:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2764: 
+
 2765:             # advance x location
+
+2766:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2767:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2768:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2769:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+2770:             continue
+
      goto __pyx_L3_continue;
+
 2771: 
+
+2772:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2773:             # use x fill value
+
+2774:             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]) ))));
+
+2775:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2776: 
+
 2777:             # advance y location
+
+2778:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2779:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2780:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2781:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+2782:             continue
+
      goto __pyx_L3_continue;
+
 2783: 
+
+2784:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+2785:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 2786: 
+
 2787:         # each index in the out_index had to come from either x, y, or both
+
+2788:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+2789:             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]) ))));
+
+2790:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2791:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2792: 
+
 2793:             # advance both locations
+
+2794:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2795:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2796:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2797:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2798: 
+
+2799:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2800:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2801:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2802:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2803: 
+
+2804:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 2805:             # use y fill value
+
+2806:             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);
+
+2807:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2808: 
+
 2809:             # advance x location
+
+2810:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2811:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2812:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2813:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2814:         else:
+
 2815:             # use x fill value
+
+2816:             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]) ))));
+
+2817:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2818: 
+
 2819:             # advance y location
+
+2820:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2821:             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:;
+  }
+
+2822:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2823:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2824: 
+
+2825:     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, 2825, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2825, __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;
+
 2826: 
+
 2827: 
+
 2828: @cython.wraparound(False)
+
 2829: @cython.boundscheck(False)
+
+2830: 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;
+}
+
 2831:                                               IntIndex xindex,
+
 2832:                                               int64_t xfill,
+
 2833:                                               int64_t[:] y_,
+
 2834:                                               IntIndex yindex,
+
 2835:                                               int64_t yfill):
+
 2836:     cdef:
+
 2837:         IntIndex out_index
+
+2838:         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;
+
 2839:         int32_t xloc, yloc
+
 2840:         int32_t[:] xindices, yindices, out_indices
+
 2841:         int64_t[:] x, y
+
 2842:         ndarray[int64_t, ndim=1] out
+
 2843: 
+
 2844:     # suppress Cython compiler warnings due to inlining
+
+2845:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2846:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2847: 
+
 2848:     # need to do this first to know size of result array
+
+2849:     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, 2849, __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;
+
+2850:     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, 2850, __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, 2850, __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, 2850, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2850, __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, 2850, __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, 2850, __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, 2850, __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, 2850, __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, 2850, __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, 2850, __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, 2850, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2851: 
+
+2852:     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, 2852, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2853:     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, 2853, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+2854:     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, 2854, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 2855: 
+
 2856:     # walk the two SparseVectors, adding matched locations...
+
+2857:     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;
+
+2858:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2859:             # use x fill value
+
+2860:             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]) ))));
+
+2861:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2862:             continue
+
      goto __pyx_L3_continue;
+
 2863: 
+
+2864:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 2865:             # use y fill value
+
+2866:             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);
+
+2867:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2868:             continue
+
      goto __pyx_L3_continue;
+
 2869: 
+
+2870:         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]) )));
+
+2871:         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]) )));
+
 2872: 
+
 2873:         # each index in the out_index had to come from either x, y, or both
+
+2874:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+2875:             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]) ))));
+
+2876:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2877:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+2878:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 2879:             # use y fill value
+
+2880:             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);
+
+2881:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2882:         else:
+
 2883:             # use x fill value
+
+2884:             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]) ))));
+
+2885:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 2886: 
+
+2887:     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, 2887, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2887, __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;
+
 2888: 
+
 2889: 
+
+2890: cpdef sparse_pow_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_33sparse_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_33sparse_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_33sparse_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, 2890, __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, 2890, __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, 2890, __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, 2890, __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, 2890, __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, 2890, __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, 2890, __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, 2891, __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, 2892, __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, 2893, __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, 2890, __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, 2891, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2893, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_32sparse_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_32sparse_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, 2890, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2890, __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, 2890, __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;
+}
+
 2891:                                   SparseIndex xindex, int64_t xfill,
+
 2892:                                   int64_t[:] y,
+
 2893:                                   SparseIndex yindex, int64_t yfill):
+
 2894: 
+
+2895:     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) {
+/* … */
+  }
+
+2896:         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, 2896, __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, 2896, __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, 2896, __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, 2896, __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;
+
+2897:                                              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, 2897, __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, 2897, __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, 2897, __pyx_L1_error)
+
+2898:     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)) {
+/* … */
+  }
+
+2899:         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, 2899, __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, 2899, __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, 2899, __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, 2899, __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;
+
+2900:                                            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, 2900, __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, 2900, __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, 2900, __pyx_L1_error)
+
 2901:     else:
+
+2902:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 2902, __pyx_L1_error)
+  }
+
 2903: 
+
 2904: 
+
 2905: @cython.wraparound(False)
+
 2906: @cython.boundscheck(False)
+
+2907: 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;
+}
+
 2908:                                                 BlockIndex xindex,
+
 2909:                                                 float64_t xfill,
+
 2910:                                                 float64_t[:] y_,
+
 2911:                                                 BlockIndex yindex,
+
 2912:                                                 float64_t yfill):
+
 2913:     '''
+
 2914:     Binary operator on BlockIndex objects with fill values
+
 2915:     '''
+
 2916: 
+
 2917:     cdef:
+
 2918:         BlockIndex out_index
+
+2919:         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;
+
+2920:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 2921:         int32_t xloc, yloc
+
+2922:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 2923: 
+
 2924:         float64_t[:] x, y
+
 2925:         ndarray[uint8_t, ndim=1] out
+
 2926: 
+
 2927:     # to suppress Cython warning
+
+2928:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+2929:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 2930: 
+
+2931:     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, 2931, __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;
+
+2932:     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, 2932, __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, 2932, __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, 2932, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2932, __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, 2932, __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, 2932, __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, 2932, __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, 2932, __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, 2932, __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, 2932, __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, 2932, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 2933: 
+
 2934:     # Wow, what a hack job. Need to do something about this
+
 2935: 
+
 2936:     # walk the two SparseVectors, adding matched locations...
+
+2937:     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;
+
+2938:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2939:             # use y fill value
+
+2940:             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);
+
+2941:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2942: 
+
 2943:             # advance x location
+
+2944:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2945:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2946:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2947:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+2948:             continue
+
      goto __pyx_L3_continue;
+
 2949: 
+
+2950:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 2951:             # use x fill value
+
+2952:             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]) ))));
+
+2953:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2954: 
+
 2955:             # advance y location
+
+2956:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2957:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2958:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2959:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+2960:             continue
+
      goto __pyx_L3_continue;
+
 2961: 
+
+2962:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+2963:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 2964: 
+
 2965:         # each index in the out_index had to come from either x, y, or both
+
+2966:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+2967:             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]) ))));
+
+2968:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+2969:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2970: 
+
 2971:             # advance both locations
+
+2972:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2973:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2974:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2975:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2976: 
+
+2977:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2978:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2979:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+2980:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 2981: 
+
+2982:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 2983:             # use y fill value
+
+2984:             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);
+
+2985:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 2986: 
+
 2987:             # advance x location
+
+2988:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+2989:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+2990:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+2991:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 2992:         else:
+
 2993:             # use x fill value
+
+2994:             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]) ))));
+
+2995:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 2996: 
+
 2997:             # advance y location
+
+2998:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+2999:             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:;
+  }
+
+3000:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3001:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3002: 
+
+3003:     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, 3003, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3003, __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;
+
 3004: 
+
 3005: 
+
 3006: @cython.wraparound(False)
+
 3007: @cython.boundscheck(False)
+
+3008: 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;
+}
+
 3009:                                               IntIndex xindex,
+
 3010:                                               float64_t xfill,
+
 3011:                                               float64_t[:] y_,
+
 3012:                                               IntIndex yindex,
+
 3013:                                               float64_t yfill):
+
 3014:     cdef:
+
 3015:         IntIndex out_index
+
+3016:         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;
+
 3017:         int32_t xloc, yloc
+
 3018:         int32_t[:] xindices, yindices, out_indices
+
 3019:         float64_t[:] x, y
+
 3020:         ndarray[uint8_t, ndim=1] out
+
 3021: 
+
 3022:     # suppress Cython compiler warnings due to inlining
+
+3023:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3024:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3025: 
+
 3026:     # need to do this first to know size of result array
+
+3027:     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, 3027, __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;
+
+3028:     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, 3028, __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, 3028, __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, 3028, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3028, __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, 3028, __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, 3028, __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, 3028, __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, 3028, __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, 3028, __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, 3028, __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, 3028, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3029: 
+
+3030:     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, 3030, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3031:     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, 3031, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3032:     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, 3032, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 3033: 
+
 3034:     # walk the two SparseVectors, adding matched locations...
+
+3035:     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;
+
+3036:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3037:             # use x fill value
+
+3038:             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]) ))));
+
+3039:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3040:             continue
+
      goto __pyx_L3_continue;
+
 3041: 
+
+3042:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3043:             # use y fill value
+
+3044:             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);
+
+3045:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3046:             continue
+
      goto __pyx_L3_continue;
+
 3047: 
+
+3048:         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]) )));
+
+3049:         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]) )));
+
 3050: 
+
 3051:         # each index in the out_index had to come from either x, y, or both
+
+3052:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+3053:             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]) ))));
+
+3054:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3055:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3056:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 3057:             # use y fill value
+
+3058:             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);
+
+3059:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3060:         else:
+
 3061:             # use x fill value
+
+3062:             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]) ))));
+
+3063:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 3064: 
+
+3065:     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, 3065, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3065, __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;
+
 3066: 
+
 3067: 
+
+3068: cpdef sparse_eq_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_35sparse_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_35sparse_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_35sparse_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, 3068, __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, 3068, __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, 3068, __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, 3068, __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, 3068, __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, 3068, __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, 3068, __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, 3069, __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, 3070, __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, 3071, __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, 3068, __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, 3069, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3071, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_34sparse_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_34sparse_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, 3068, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3068, __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, 3068, __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;
+}
+
 3069:                                   SparseIndex xindex, float64_t xfill,
+
 3070:                                   float64_t[:] y,
+
 3071:                                   SparseIndex yindex, float64_t yfill):
+
 3072: 
+
+3073:     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) {
+/* … */
+  }
+
+3074:         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, 3074, __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, 3074, __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, 3074, __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, 3074, __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;
+
+3075:                                              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, 3075, __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, 3075, __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, 3075, __pyx_L1_error)
+
+3076:     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)) {
+/* … */
+  }
+
+3077:         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, 3077, __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, 3077, __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, 3077, __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, 3077, __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;
+
+3078:                                            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, 3078, __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, 3078, __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, 3078, __pyx_L1_error)
+
 3079:     else:
+
+3080:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 3080, __pyx_L1_error)
+  }
+
 3081: 
+
 3082: 
+
 3083: @cython.wraparound(False)
+
 3084: @cython.boundscheck(False)
+
+3085: 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;
+}
+
 3086:                                                 BlockIndex xindex,
+
 3087:                                                 int64_t xfill,
+
 3088:                                                 int64_t[:] y_,
+
 3089:                                                 BlockIndex yindex,
+
 3090:                                                 int64_t yfill):
+
 3091:     '''
+
 3092:     Binary operator on BlockIndex objects with fill values
+
 3093:     '''
+
 3094: 
+
 3095:     cdef:
+
 3096:         BlockIndex out_index
+
+3097:         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;
+
+3098:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 3099:         int32_t xloc, yloc
+
+3100:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 3101: 
+
 3102:         int64_t[:] x, y
+
 3103:         ndarray[uint8_t, ndim=1] out
+
 3104: 
+
 3105:     # to suppress Cython warning
+
+3106:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3107:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3108: 
+
+3109:     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, 3109, __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;
+
+3110:     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, 3110, __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, 3110, __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, 3110, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3110, __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, 3110, __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, 3110, __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, 3110, __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, 3110, __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, 3110, __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, 3110, __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, 3110, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3111: 
+
 3112:     # Wow, what a hack job. Need to do something about this
+
 3113: 
+
 3114:     # walk the two SparseVectors, adding matched locations...
+
+3115:     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;
+
+3116:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3117:             # use y fill value
+
+3118:             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);
+
+3119:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3120: 
+
 3121:             # advance x location
+
+3122:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3123:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3124:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3125:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+3126:             continue
+
      goto __pyx_L3_continue;
+
 3127: 
+
+3128:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3129:             # use x fill value
+
+3130:             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]) ))));
+
+3131:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3132: 
+
 3133:             # advance y location
+
+3134:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3135:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3136:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3137:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+3138:             continue
+
      goto __pyx_L3_continue;
+
 3139: 
+
+3140:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+3141:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 3142: 
+
 3143:         # each index in the out_index had to come from either x, y, or both
+
+3144:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+3145:             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]) ))));
+
+3146:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3147:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3148: 
+
 3149:             # advance both locations
+
+3150:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3151:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3152:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3153:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3154: 
+
+3155:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3156:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3157:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3158:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3159: 
+
+3160:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 3161:             # use y fill value
+
+3162:             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);
+
+3163:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3164: 
+
 3165:             # advance x location
+
+3166:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3167:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3168:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3169:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3170:         else:
+
 3171:             # use x fill value
+
+3172:             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]) ))));
+
+3173:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3174: 
+
 3175:             # advance y location
+
+3176:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3177:             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:;
+  }
+
+3178:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3179:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3180: 
+
+3181:     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, 3181, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3181, __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;
+
 3182: 
+
 3183: 
+
 3184: @cython.wraparound(False)
+
 3185: @cython.boundscheck(False)
+
+3186: 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;
+}
+
 3187:                                               IntIndex xindex,
+
 3188:                                               int64_t xfill,
+
 3189:                                               int64_t[:] y_,
+
 3190:                                               IntIndex yindex,
+
 3191:                                               int64_t yfill):
+
 3192:     cdef:
+
 3193:         IntIndex out_index
+
+3194:         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;
+
 3195:         int32_t xloc, yloc
+
 3196:         int32_t[:] xindices, yindices, out_indices
+
 3197:         int64_t[:] x, y
+
 3198:         ndarray[uint8_t, ndim=1] out
+
 3199: 
+
 3200:     # suppress Cython compiler warnings due to inlining
+
+3201:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3202:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3203: 
+
 3204:     # need to do this first to know size of result array
+
+3205:     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, 3205, __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;
+
+3206:     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, 3206, __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, 3206, __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, 3206, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3206, __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, 3206, __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, 3206, __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, 3206, __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, 3206, __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, 3206, __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, 3206, __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, 3206, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3207: 
+
+3208:     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, 3208, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3209:     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, 3209, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3210:     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, 3210, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 3211: 
+
 3212:     # walk the two SparseVectors, adding matched locations...
+
+3213:     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;
+
+3214:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3215:             # use x fill value
+
+3216:             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]) ))));
+
+3217:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3218:             continue
+
      goto __pyx_L3_continue;
+
 3219: 
+
+3220:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3221:             # use y fill value
+
+3222:             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);
+
+3223:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3224:             continue
+
      goto __pyx_L3_continue;
+
 3225: 
+
+3226:         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]) )));
+
+3227:         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]) )));
+
 3228: 
+
 3229:         # each index in the out_index had to come from either x, y, or both
+
+3230:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+3231:             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]) ))));
+
+3232:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3233:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3234:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 3235:             # use y fill value
+
+3236:             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);
+
+3237:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3238:         else:
+
 3239:             # use x fill value
+
+3240:             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]) ))));
+
+3241:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 3242: 
+
+3243:     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, 3243, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3243, __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;
+
 3244: 
+
 3245: 
+
+3246: cpdef sparse_eq_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_37sparse_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_37sparse_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_37sparse_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, 3246, __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, 3246, __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, 3246, __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, 3246, __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, 3246, __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, 3246, __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, 3246, __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, 3247, __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, 3248, __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, 3249, __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, 3246, __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, 3247, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3249, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_36sparse_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_36sparse_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, 3246, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3246, __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, 3246, __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;
+}
+
 3247:                                   SparseIndex xindex, int64_t xfill,
+
 3248:                                   int64_t[:] y,
+
 3249:                                   SparseIndex yindex, int64_t yfill):
+
 3250: 
+
+3251:     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) {
+/* … */
+  }
+
+3252:         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, 3252, __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, 3252, __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, 3252, __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, 3252, __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;
+
+3253:                                              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, 3253, __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, 3253, __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, 3253, __pyx_L1_error)
+
+3254:     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)) {
+/* … */
+  }
+
+3255:         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, 3255, __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, 3255, __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, 3255, __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, 3255, __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;
+
+3256:                                            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, 3256, __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, 3256, __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, 3256, __pyx_L1_error)
+
 3257:     else:
+
+3258:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 3258, __pyx_L1_error)
+  }
+
 3259: 
+
 3260: 
+
 3261: @cython.wraparound(False)
+
 3262: @cython.boundscheck(False)
+
+3263: 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;
+}
+
 3264:                                                 BlockIndex xindex,
+
 3265:                                                 float64_t xfill,
+
 3266:                                                 float64_t[:] y_,
+
 3267:                                                 BlockIndex yindex,
+
 3268:                                                 float64_t yfill):
+
 3269:     '''
+
 3270:     Binary operator on BlockIndex objects with fill values
+
 3271:     '''
+
 3272: 
+
 3273:     cdef:
+
 3274:         BlockIndex out_index
+
+3275:         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;
+
+3276:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 3277:         int32_t xloc, yloc
+
+3278:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 3279: 
+
 3280:         float64_t[:] x, y
+
 3281:         ndarray[uint8_t, ndim=1] out
+
 3282: 
+
 3283:     # to suppress Cython warning
+
+3284:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3285:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3286: 
+
+3287:     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, 3287, __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;
+
+3288:     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, 3288, __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, 3288, __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, 3288, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3288, __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, 3288, __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, 3288, __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, 3288, __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, 3288, __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, 3288, __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, 3288, __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, 3288, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3289: 
+
 3290:     # Wow, what a hack job. Need to do something about this
+
 3291: 
+
 3292:     # walk the two SparseVectors, adding matched locations...
+
+3293:     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;
+
+3294:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3295:             # use y fill value
+
+3296:             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);
+
+3297:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3298: 
+
 3299:             # advance x location
+
+3300:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3301:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3302:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3303:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+3304:             continue
+
      goto __pyx_L3_continue;
+
 3305: 
+
+3306:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3307:             # use x fill value
+
+3308:             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]) ))));
+
+3309:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3310: 
+
 3311:             # advance y location
+
+3312:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3313:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3314:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3315:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+3316:             continue
+
      goto __pyx_L3_continue;
+
 3317: 
+
+3318:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+3319:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 3320: 
+
 3321:         # each index in the out_index had to come from either x, y, or both
+
+3322:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+3323:             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]) ))));
+
+3324:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3325:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3326: 
+
 3327:             # advance both locations
+
+3328:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3329:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3330:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3331:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3332: 
+
+3333:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3334:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3335:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3336:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3337: 
+
+3338:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 3339:             # use y fill value
+
+3340:             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);
+
+3341:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3342: 
+
 3343:             # advance x location
+
+3344:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3345:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3346:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3347:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3348:         else:
+
 3349:             # use x fill value
+
+3350:             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]) ))));
+
+3351:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3352: 
+
 3353:             # advance y location
+
+3354:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3355:             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:;
+  }
+
+3356:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3357:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3358: 
+
+3359:     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, 3359, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3359, __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;
+
 3360: 
+
 3361: 
+
 3362: @cython.wraparound(False)
+
 3363: @cython.boundscheck(False)
+
+3364: 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;
+}
+
 3365:                                               IntIndex xindex,
+
 3366:                                               float64_t xfill,
+
 3367:                                               float64_t[:] y_,
+
 3368:                                               IntIndex yindex,
+
 3369:                                               float64_t yfill):
+
 3370:     cdef:
+
 3371:         IntIndex out_index
+
+3372:         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;
+
 3373:         int32_t xloc, yloc
+
 3374:         int32_t[:] xindices, yindices, out_indices
+
 3375:         float64_t[:] x, y
+
 3376:         ndarray[uint8_t, ndim=1] out
+
 3377: 
+
 3378:     # suppress Cython compiler warnings due to inlining
+
+3379:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3380:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3381: 
+
 3382:     # need to do this first to know size of result array
+
+3383:     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, 3383, __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;
+
+3384:     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, 3384, __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, 3384, __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, 3384, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3384, __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, 3384, __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, 3384, __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, 3384, __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, 3384, __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, 3384, __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, 3384, __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, 3384, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3385: 
+
+3386:     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, 3386, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3387:     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, 3387, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3388:     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, 3388, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 3389: 
+
 3390:     # walk the two SparseVectors, adding matched locations...
+
+3391:     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;
+
+3392:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3393:             # use x fill value
+
+3394:             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]) ))));
+
+3395:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3396:             continue
+
      goto __pyx_L3_continue;
+
 3397: 
+
+3398:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3399:             # use y fill value
+
+3400:             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);
+
+3401:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3402:             continue
+
      goto __pyx_L3_continue;
+
 3403: 
+
+3404:         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]) )));
+
+3405:         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]) )));
+
 3406: 
+
 3407:         # each index in the out_index had to come from either x, y, or both
+
+3408:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+3409:             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]) ))));
+
+3410:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3411:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3412:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 3413:             # use y fill value
+
+3414:             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);
+
+3415:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3416:         else:
+
 3417:             # use x fill value
+
+3418:             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]) ))));
+
+3419:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 3420: 
+
+3421:     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, 3421, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3421, __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;
+
 3422: 
+
 3423: 
+
+3424: cpdef sparse_ne_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_39sparse_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_39sparse_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_39sparse_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, 3424, __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, 3424, __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, 3424, __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, 3424, __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, 3424, __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, 3424, __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, 3424, __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, 3425, __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, 3426, __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, 3427, __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, 3424, __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, 3425, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3427, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_38sparse_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_38sparse_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, 3424, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3424, __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, 3424, __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;
+}
+
 3425:                                   SparseIndex xindex, float64_t xfill,
+
 3426:                                   float64_t[:] y,
+
 3427:                                   SparseIndex yindex, float64_t yfill):
+
 3428: 
+
+3429:     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) {
+/* … */
+  }
+
+3430:         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, 3430, __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, 3430, __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, 3430, __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, 3430, __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;
+
+3431:                                              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, 3431, __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, 3431, __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, 3431, __pyx_L1_error)
+
+3432:     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)) {
+/* … */
+  }
+
+3433:         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, 3433, __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, 3433, __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, 3433, __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, 3433, __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;
+
+3434:                                            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, 3434, __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, 3434, __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, 3434, __pyx_L1_error)
+
 3435:     else:
+
+3436:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 3436, __pyx_L1_error)
+  }
+
 3437: 
+
 3438: 
+
 3439: @cython.wraparound(False)
+
 3440: @cython.boundscheck(False)
+
+3441: 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;
+}
+
 3442:                                                 BlockIndex xindex,
+
 3443:                                                 int64_t xfill,
+
 3444:                                                 int64_t[:] y_,
+
 3445:                                                 BlockIndex yindex,
+
 3446:                                                 int64_t yfill):
+
 3447:     '''
+
 3448:     Binary operator on BlockIndex objects with fill values
+
 3449:     '''
+
 3450: 
+
 3451:     cdef:
+
 3452:         BlockIndex out_index
+
+3453:         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;
+
+3454:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 3455:         int32_t xloc, yloc
+
+3456:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 3457: 
+
 3458:         int64_t[:] x, y
+
 3459:         ndarray[uint8_t, ndim=1] out
+
 3460: 
+
 3461:     # to suppress Cython warning
+
+3462:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3463:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3464: 
+
+3465:     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, 3465, __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;
+
+3466:     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, 3466, __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, 3466, __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, 3466, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3466, __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, 3466, __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, 3466, __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, 3466, __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, 3466, __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, 3466, __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, 3466, __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, 3466, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3467: 
+
 3468:     # Wow, what a hack job. Need to do something about this
+
 3469: 
+
 3470:     # walk the two SparseVectors, adding matched locations...
+
+3471:     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;
+
+3472:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3473:             # use y fill value
+
+3474:             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);
+
+3475:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3476: 
+
 3477:             # advance x location
+
+3478:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3479:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3480:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3481:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+3482:             continue
+
      goto __pyx_L3_continue;
+
 3483: 
+
+3484:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3485:             # use x fill value
+
+3486:             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]) ))));
+
+3487:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3488: 
+
 3489:             # advance y location
+
+3490:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3491:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3492:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3493:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+3494:             continue
+
      goto __pyx_L3_continue;
+
 3495: 
+
+3496:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+3497:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 3498: 
+
 3499:         # each index in the out_index had to come from either x, y, or both
+
+3500:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+3501:             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]) ))));
+
+3502:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3503:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3504: 
+
 3505:             # advance both locations
+
+3506:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3507:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3508:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3509:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3510: 
+
+3511:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3512:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3513:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3514:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3515: 
+
+3516:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 3517:             # use y fill value
+
+3518:             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);
+
+3519:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3520: 
+
 3521:             # advance x location
+
+3522:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3523:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3524:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3525:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3526:         else:
+
 3527:             # use x fill value
+
+3528:             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]) ))));
+
+3529:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3530: 
+
 3531:             # advance y location
+
+3532:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3533:             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:;
+  }
+
+3534:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3535:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3536: 
+
+3537:     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, 3537, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3537, __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;
+
 3538: 
+
 3539: 
+
 3540: @cython.wraparound(False)
+
 3541: @cython.boundscheck(False)
+
+3542: 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;
+}
+
 3543:                                               IntIndex xindex,
+
 3544:                                               int64_t xfill,
+
 3545:                                               int64_t[:] y_,
+
 3546:                                               IntIndex yindex,
+
 3547:                                               int64_t yfill):
+
 3548:     cdef:
+
 3549:         IntIndex out_index
+
+3550:         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;
+
 3551:         int32_t xloc, yloc
+
 3552:         int32_t[:] xindices, yindices, out_indices
+
 3553:         int64_t[:] x, y
+
 3554:         ndarray[uint8_t, ndim=1] out
+
 3555: 
+
 3556:     # suppress Cython compiler warnings due to inlining
+
+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:     # need to do this first to know size of result array
+
+3561:     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, 3561, __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;
+
+3562:     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, 3562, __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, 3562, __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, 3562, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3562, __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, 3562, __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, 3562, __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, 3562, __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, 3562, __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, 3562, __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, 3562, __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, 3562, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3563: 
+
+3564:     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, 3564, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3565:     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, 3565, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3566:     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, 3566, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 3567: 
+
 3568:     # walk the two SparseVectors, adding matched locations...
+
+3569:     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;
+
+3570:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3571:             # use x fill value
+
+3572:             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]) ))));
+
+3573:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3574:             continue
+
      goto __pyx_L3_continue;
+
 3575: 
+
+3576:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3577:             # use y fill value
+
+3578:             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);
+
+3579:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3580:             continue
+
      goto __pyx_L3_continue;
+
 3581: 
+
+3582:         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]) )));
+
+3583:         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]) )));
+
 3584: 
+
 3585:         # each index in the out_index had to come from either x, y, or both
+
+3586:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+3587:             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]) ))));
+
+3588:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3589:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3590:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 3591:             # use y fill value
+
+3592:             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);
+
+3593:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3594:         else:
+
 3595:             # use x fill value
+
+3596:             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]) ))));
+
+3597:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 3598: 
+
+3599:     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, 3599, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3599, __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;
+
 3600: 
+
 3601: 
+
+3602: cpdef sparse_ne_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_41sparse_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_41sparse_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_41sparse_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, 3602, __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, 3602, __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, 3602, __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, 3602, __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, 3602, __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, 3602, __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, 3602, __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, 3603, __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, 3604, __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, 3605, __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, 3602, __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, 3603, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3605, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_40sparse_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_40sparse_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, 3602, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3602, __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, 3602, __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;
+}
+
 3603:                                   SparseIndex xindex, int64_t xfill,
+
 3604:                                   int64_t[:] y,
+
 3605:                                   SparseIndex yindex, int64_t yfill):
+
 3606: 
+
+3607:     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) {
+/* … */
+  }
+
+3608:         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, 3608, __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, 3608, __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, 3608, __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, 3608, __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;
+
+3609:                                              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, 3609, __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, 3609, __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, 3609, __pyx_L1_error)
+
+3610:     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)) {
+/* … */
+  }
+
+3611:         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, 3611, __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, 3611, __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, 3611, __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, 3611, __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;
+
+3612:                                            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, 3612, __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, 3612, __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, 3612, __pyx_L1_error)
+
 3613:     else:
+
+3614:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 3614, __pyx_L1_error)
+  }
+
 3615: 
+
 3616: 
+
 3617: @cython.wraparound(False)
+
 3618: @cython.boundscheck(False)
+
+3619: 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;
+}
+
 3620:                                                 BlockIndex xindex,
+
 3621:                                                 float64_t xfill,
+
 3622:                                                 float64_t[:] y_,
+
 3623:                                                 BlockIndex yindex,
+
 3624:                                                 float64_t yfill):
+
 3625:     '''
+
 3626:     Binary operator on BlockIndex objects with fill values
+
 3627:     '''
+
 3628: 
+
 3629:     cdef:
+
 3630:         BlockIndex out_index
+
+3631:         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;
+
+3632:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 3633:         int32_t xloc, yloc
+
+3634:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 3635: 
+
 3636:         float64_t[:] x, y
+
 3637:         ndarray[uint8_t, ndim=1] out
+
 3638: 
+
 3639:     # to suppress Cython warning
+
+3640:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3641:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3642: 
+
+3643:     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, 3643, __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;
+
+3644:     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, 3644, __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, 3644, __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, 3644, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3644, __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, 3644, __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, 3644, __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, 3644, __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, 3644, __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, 3644, __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, 3644, __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, 3644, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3645: 
+
 3646:     # Wow, what a hack job. Need to do something about this
+
 3647: 
+
 3648:     # walk the two SparseVectors, adding matched locations...
+
+3649:     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;
+
+3650:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3651:             # use y fill value
+
+3652:             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);
+
+3653:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3654: 
+
 3655:             # advance x location
+
+3656:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3657:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3658:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3659:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+3660:             continue
+
      goto __pyx_L3_continue;
+
 3661: 
+
+3662:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3663:             # use x fill value
+
+3664:             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]) ))));
+
+3665:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3666: 
+
 3667:             # advance y location
+
+3668:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3669:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3670:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3671:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+3672:             continue
+
      goto __pyx_L3_continue;
+
 3673: 
+
+3674:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+3675:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 3676: 
+
 3677:         # each index in the out_index had to come from either x, y, or both
+
+3678:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+3679:             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]) ))));
+
+3680:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3681:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3682: 
+
 3683:             # advance both locations
+
+3684:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3685:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3686:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3687:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3688: 
+
+3689:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3690:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3691:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3692:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3693: 
+
+3694:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 3695:             # use y fill value
+
+3696:             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);
+
+3697:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3698: 
+
 3699:             # advance x location
+
+3700:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3701:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3702:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3703:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3704:         else:
+
 3705:             # use x fill value
+
+3706:             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]) ))));
+
+3707:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3708: 
+
 3709:             # advance y location
+
+3710:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3711:             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:;
+  }
+
+3712:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3713:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3714: 
+
+3715:     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, 3715, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3715, __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;
+
 3716: 
+
 3717: 
+
 3718: @cython.wraparound(False)
+
 3719: @cython.boundscheck(False)
+
+3720: 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;
+}
+
 3721:                                               IntIndex xindex,
+
 3722:                                               float64_t xfill,
+
 3723:                                               float64_t[:] y_,
+
 3724:                                               IntIndex yindex,
+
 3725:                                               float64_t yfill):
+
 3726:     cdef:
+
 3727:         IntIndex out_index
+
+3728:         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;
+
 3729:         int32_t xloc, yloc
+
 3730:         int32_t[:] xindices, yindices, out_indices
+
 3731:         float64_t[:] x, y
+
 3732:         ndarray[uint8_t, ndim=1] out
+
 3733: 
+
 3734:     # suppress Cython compiler warnings due to inlining
+
+3735:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3736:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3737: 
+
 3738:     # need to do this first to know size of result array
+
+3739:     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, 3739, __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;
+
+3740:     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, 3740, __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, 3740, __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, 3740, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3740, __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, 3740, __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, 3740, __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, 3740, __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, 3740, __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, 3740, __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, 3740, __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, 3740, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3741: 
+
+3742:     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, 3742, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3743:     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, 3743, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3744:     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, 3744, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 3745: 
+
 3746:     # walk the two SparseVectors, adding matched locations...
+
+3747:     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;
+
+3748:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3749:             # use x fill value
+
+3750:             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]) ))));
+
+3751:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3752:             continue
+
      goto __pyx_L3_continue;
+
 3753: 
+
+3754:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3755:             # use y fill value
+
+3756:             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);
+
+3757:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3758:             continue
+
      goto __pyx_L3_continue;
+
 3759: 
+
+3760:         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]) )));
+
+3761:         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]) )));
+
 3762: 
+
 3763:         # each index in the out_index had to come from either x, y, or both
+
+3764:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+3765:             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]) ))));
+
+3766:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3767:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3768:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 3769:             # use y fill value
+
+3770:             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);
+
+3771:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3772:         else:
+
 3773:             # use x fill value
+
+3774:             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]) ))));
+
+3775:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 3776: 
+
+3777:     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, 3777, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3777, __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;
+
 3778: 
+
 3779: 
+
+3780: cpdef sparse_lt_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_43sparse_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_43sparse_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_43sparse_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, 3780, __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, 3780, __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, 3780, __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, 3780, __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, 3780, __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, 3780, __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, 3780, __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, 3781, __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, 3782, __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, 3783, __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, 3780, __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, 3781, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3783, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_42sparse_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_42sparse_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, 3780, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3780, __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, 3780, __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;
+}
+
 3781:                                   SparseIndex xindex, float64_t xfill,
+
 3782:                                   float64_t[:] y,
+
 3783:                                   SparseIndex yindex, float64_t yfill):
+
 3784: 
+
+3785:     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) {
+/* … */
+  }
+
+3786:         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, 3786, __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, 3786, __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, 3786, __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, 3786, __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;
+
+3787:                                              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, 3787, __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, 3787, __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, 3787, __pyx_L1_error)
+
+3788:     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)) {
+/* … */
+  }
+
+3789:         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, 3789, __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, 3789, __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, 3789, __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, 3789, __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;
+
+3790:                                            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, 3790, __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, 3790, __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, 3790, __pyx_L1_error)
+
 3791:     else:
+
+3792:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 3792, __pyx_L1_error)
+  }
+
 3793: 
+
 3794: 
+
 3795: @cython.wraparound(False)
+
 3796: @cython.boundscheck(False)
+
+3797: 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;
+}
+
 3798:                                                 BlockIndex xindex,
+
 3799:                                                 int64_t xfill,
+
 3800:                                                 int64_t[:] y_,
+
 3801:                                                 BlockIndex yindex,
+
 3802:                                                 int64_t yfill):
+
 3803:     '''
+
 3804:     Binary operator on BlockIndex objects with fill values
+
 3805:     '''
+
 3806: 
+
 3807:     cdef:
+
 3808:         BlockIndex out_index
+
+3809:         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;
+
+3810:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 3811:         int32_t xloc, yloc
+
+3812:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 3813: 
+
 3814:         int64_t[:] x, y
+
 3815:         ndarray[uint8_t, ndim=1] out
+
 3816: 
+
 3817:     # to suppress Cython warning
+
+3818:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3819:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3820: 
+
+3821:     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, 3821, __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;
+
+3822:     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, 3822, __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, 3822, __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, 3822, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3822, __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, 3822, __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, 3822, __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, 3822, __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, 3822, __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, 3822, __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, 3822, __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, 3822, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3823: 
+
 3824:     # Wow, what a hack job. Need to do something about this
+
 3825: 
+
 3826:     # walk the two SparseVectors, adding matched locations...
+
+3827:     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;
+
+3828:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3829:             # use y fill value
+
+3830:             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);
+
+3831:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3832: 
+
 3833:             # advance x location
+
+3834:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3835:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3836:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3837:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+3838:             continue
+
      goto __pyx_L3_continue;
+
 3839: 
+
+3840:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 3841:             # use x fill value
+
+3842:             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]) ))));
+
+3843:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3844: 
+
 3845:             # advance y location
+
+3846:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3847:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3848:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3849:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+3850:             continue
+
      goto __pyx_L3_continue;
+
 3851: 
+
+3852:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+3853:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 3854: 
+
 3855:         # each index in the out_index had to come from either x, y, or both
+
+3856:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+3857:             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]) ))));
+
+3858:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3859:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3860: 
+
 3861:             # advance both locations
+
+3862:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3863:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3864:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3865:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3866: 
+
+3867:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3868:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3869:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3870:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3871: 
+
+3872:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 3873:             # use y fill value
+
+3874:             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);
+
+3875:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3876: 
+
 3877:             # advance x location
+
+3878:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+3879:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+3880:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+3881:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 3882:         else:
+
 3883:             # use x fill value
+
+3884:             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]) ))));
+
+3885:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 3886: 
+
 3887:             # advance y location
+
+3888:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+3889:             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:;
+  }
+
+3890:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+3891:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 3892: 
+
+3893:     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, 3893, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3893, __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;
+
 3894: 
+
 3895: 
+
 3896: @cython.wraparound(False)
+
 3897: @cython.boundscheck(False)
+
+3898: 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;
+}
+
 3899:                                               IntIndex xindex,
+
 3900:                                               int64_t xfill,
+
 3901:                                               int64_t[:] y_,
+
 3902:                                               IntIndex yindex,
+
 3903:                                               int64_t yfill):
+
 3904:     cdef:
+
 3905:         IntIndex out_index
+
+3906:         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;
+
 3907:         int32_t xloc, yloc
+
 3908:         int32_t[:] xindices, yindices, out_indices
+
 3909:         int64_t[:] x, y
+
 3910:         ndarray[uint8_t, ndim=1] out
+
 3911: 
+
 3912:     # suppress Cython compiler warnings due to inlining
+
+3913:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3914:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3915: 
+
 3916:     # need to do this first to know size of result array
+
+3917:     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, 3917, __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;
+
+3918:     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, 3918, __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, 3918, __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, 3918, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3918, __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, 3918, __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, 3918, __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, 3918, __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, 3918, __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, 3918, __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, 3918, __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, 3918, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 3919: 
+
+3920:     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, 3920, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3921:     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, 3921, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+3922:     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, 3922, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 3923: 
+
 3924:     # walk the two SparseVectors, adding matched locations...
+
+3925:     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;
+
+3926:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3927:             # use x fill value
+
+3928:             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]) ))));
+
+3929:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3930:             continue
+
      goto __pyx_L3_continue;
+
 3931: 
+
+3932:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 3933:             # use y fill value
+
+3934:             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);
+
+3935:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3936:             continue
+
      goto __pyx_L3_continue;
+
 3937: 
+
+3938:         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]) )));
+
+3939:         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]) )));
+
 3940: 
+
 3941:         # each index in the out_index had to come from either x, y, or both
+
+3942:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+3943:             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]) ))));
+
+3944:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+3945:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+3946:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 3947:             # use y fill value
+
+3948:             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);
+
+3949:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 3950:         else:
+
 3951:             # use x fill value
+
+3952:             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]) ))));
+
+3953:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 3954: 
+
+3955:     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, 3955, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3955, __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;
+
 3956: 
+
 3957: 
+
+3958: cpdef sparse_lt_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_45sparse_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_45sparse_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_45sparse_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, 3958, __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, 3958, __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, 3958, __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, 3958, __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, 3958, __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, 3958, __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, 3958, __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, 3959, __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, 3960, __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, 3961, __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, 3958, __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, 3959, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3961, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_44sparse_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_44sparse_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, 3958, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3958, __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, 3958, __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;
+}
+
 3959:                                   SparseIndex xindex, int64_t xfill,
+
 3960:                                   int64_t[:] y,
+
 3961:                                   SparseIndex yindex, int64_t yfill):
+
 3962: 
+
+3963:     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) {
+/* … */
+  }
+
+3964:         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, 3964, __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, 3964, __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, 3964, __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, 3964, __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;
+
+3965:                                              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, 3965, __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, 3965, __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, 3965, __pyx_L1_error)
+
+3966:     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)) {
+/* … */
+  }
+
+3967:         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, 3967, __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, 3967, __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, 3967, __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, 3967, __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;
+
+3968:                                            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, 3968, __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, 3968, __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, 3968, __pyx_L1_error)
+
 3969:     else:
+
+3970:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 3970, __pyx_L1_error)
+  }
+
 3971: 
+
 3972: 
+
 3973: @cython.wraparound(False)
+
 3974: @cython.boundscheck(False)
+
+3975: 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;
+}
+
 3976:                                                 BlockIndex xindex,
+
 3977:                                                 float64_t xfill,
+
 3978:                                                 float64_t[:] y_,
+
 3979:                                                 BlockIndex yindex,
+
 3980:                                                 float64_t yfill):
+
 3981:     '''
+
 3982:     Binary operator on BlockIndex objects with fill values
+
 3983:     '''
+
 3984: 
+
 3985:     cdef:
+
 3986:         BlockIndex out_index
+
+3987:         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;
+
+3988:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 3989:         int32_t xloc, yloc
+
+3990:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 3991: 
+
 3992:         float64_t[:] x, y
+
 3993:         ndarray[uint8_t, ndim=1] out
+
 3994: 
+
 3995:     # to suppress Cython warning
+
+3996:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+3997:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 3998: 
+
+3999:     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, 3999, __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;
+
+4000:     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, 4000, __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, 4000, __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, 4000, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4000, __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, 4000, __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, 4000, __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, 4000, __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, 4000, __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, 4000, __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, 4000, __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, 4000, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4001: 
+
 4002:     # Wow, what a hack job. Need to do something about this
+
 4003: 
+
 4004:     # walk the two SparseVectors, adding matched locations...
+
+4005:     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;
+
+4006:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4007:             # use y fill value
+
+4008:             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);
+
+4009:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4010: 
+
 4011:             # advance x location
+
+4012:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4013:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4014:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4015:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+4016:             continue
+
      goto __pyx_L3_continue;
+
 4017: 
+
+4018:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4019:             # use x fill value
+
+4020:             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]) ))));
+
+4021:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4022: 
+
 4023:             # advance y location
+
+4024:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4025:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4026:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4027:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+4028:             continue
+
      goto __pyx_L3_continue;
+
 4029: 
+
+4030:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+4031:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 4032: 
+
 4033:         # each index in the out_index had to come from either x, y, or both
+
+4034:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+4035:             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]) ))));
+
+4036:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4037:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4038: 
+
 4039:             # advance both locations
+
+4040:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4041:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4042:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4043:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4044: 
+
+4045:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4046:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4047:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4048:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4049: 
+
+4050:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 4051:             # use y fill value
+
+4052:             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);
+
+4053:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4054: 
+
 4055:             # advance x location
+
+4056:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4057:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4058:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4059:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4060:         else:
+
 4061:             # use x fill value
+
+4062:             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]) ))));
+
+4063:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4064: 
+
 4065:             # advance y location
+
+4066:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4067:             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:;
+  }
+
+4068:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4069:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4070: 
+
+4071:     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, 4071, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4071, __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;
+
 4072: 
+
 4073: 
+
 4074: @cython.wraparound(False)
+
 4075: @cython.boundscheck(False)
+
+4076: 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;
+}
+
 4077:                                               IntIndex xindex,
+
 4078:                                               float64_t xfill,
+
 4079:                                               float64_t[:] y_,
+
 4080:                                               IntIndex yindex,
+
 4081:                                               float64_t yfill):
+
 4082:     cdef:
+
 4083:         IntIndex out_index
+
+4084:         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;
+
 4085:         int32_t xloc, yloc
+
 4086:         int32_t[:] xindices, yindices, out_indices
+
 4087:         float64_t[:] x, y
+
 4088:         ndarray[uint8_t, ndim=1] out
+
 4089: 
+
 4090:     # suppress Cython compiler warnings due to inlining
+
+4091:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4092:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4093: 
+
 4094:     # need to do this first to know size of result array
+
+4095:     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, 4095, __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;
+
+4096:     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, 4096, __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, 4096, __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, 4096, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4096, __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, 4096, __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, 4096, __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, 4096, __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, 4096, __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, 4096, __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, 4096, __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, 4096, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4097: 
+
+4098:     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, 4098, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4099:     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, 4099, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4100:     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, 4100, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 4101: 
+
 4102:     # walk the two SparseVectors, adding matched locations...
+
+4103:     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;
+
+4104:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4105:             # use x fill value
+
+4106:             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]) ))));
+
+4107:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4108:             continue
+
      goto __pyx_L3_continue;
+
 4109: 
+
+4110:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4111:             # use y fill value
+
+4112:             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);
+
+4113:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4114:             continue
+
      goto __pyx_L3_continue;
+
 4115: 
+
+4116:         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]) )));
+
+4117:         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]) )));
+
 4118: 
+
 4119:         # each index in the out_index had to come from either x, y, or both
+
+4120:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+4121:             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]) ))));
+
+4122:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4123:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4124:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 4125:             # use y fill value
+
+4126:             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);
+
+4127:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4128:         else:
+
 4129:             # use x fill value
+
+4130:             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]) ))));
+
+4131:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 4132: 
+
+4133:     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, 4133, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4133, __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;
+
 4134: 
+
 4135: 
+
+4136: cpdef sparse_gt_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_47sparse_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_47sparse_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_47sparse_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, 4136, __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, 4136, __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, 4136, __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, 4136, __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, 4136, __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, 4136, __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, 4136, __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, 4137, __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, 4138, __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, 4139, __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, 4136, __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, 4137, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4139, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_46sparse_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_46sparse_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, 4136, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4136, __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, 4136, __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;
+}
+
 4137:                                   SparseIndex xindex, float64_t xfill,
+
 4138:                                   float64_t[:] y,
+
 4139:                                   SparseIndex yindex, float64_t yfill):
+
 4140: 
+
+4141:     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) {
+/* … */
+  }
+
+4142:         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, 4142, __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, 4142, __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, 4142, __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, 4142, __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;
+
+4143:                                              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, 4143, __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, 4143, __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, 4143, __pyx_L1_error)
+
+4144:     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)) {
+/* … */
+  }
+
+4145:         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, 4145, __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, 4145, __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, 4145, __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, 4145, __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;
+
+4146:                                            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, 4146, __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, 4146, __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, 4146, __pyx_L1_error)
+
 4147:     else:
+
+4148:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 4148, __pyx_L1_error)
+  }
+
 4149: 
+
 4150: 
+
 4151: @cython.wraparound(False)
+
 4152: @cython.boundscheck(False)
+
+4153: 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;
+}
+
 4154:                                                 BlockIndex xindex,
+
 4155:                                                 int64_t xfill,
+
 4156:                                                 int64_t[:] y_,
+
 4157:                                                 BlockIndex yindex,
+
 4158:                                                 int64_t yfill):
+
 4159:     '''
+
 4160:     Binary operator on BlockIndex objects with fill values
+
 4161:     '''
+
 4162: 
+
 4163:     cdef:
+
 4164:         BlockIndex out_index
+
+4165:         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;
+
+4166:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 4167:         int32_t xloc, yloc
+
+4168:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 4169: 
+
 4170:         int64_t[:] x, y
+
 4171:         ndarray[uint8_t, ndim=1] out
+
 4172: 
+
 4173:     # to suppress Cython warning
+
+4174:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4175:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4176: 
+
+4177:     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, 4177, __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;
+
+4178:     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, 4178, __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, 4178, __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, 4178, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4178, __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, 4178, __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, 4178, __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, 4178, __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, 4178, __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, 4178, __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, 4178, __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, 4178, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4179: 
+
 4180:     # Wow, what a hack job. Need to do something about this
+
 4181: 
+
 4182:     # walk the two SparseVectors, adding matched locations...
+
+4183:     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;
+
+4184:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4185:             # use y fill value
+
+4186:             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);
+
+4187:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4188: 
+
 4189:             # advance x location
+
+4190:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4191:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4192:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4193:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+4194:             continue
+
      goto __pyx_L3_continue;
+
 4195: 
+
+4196:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4197:             # use x fill value
+
+4198:             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]) ))));
+
+4199:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4200: 
+
 4201:             # advance y location
+
+4202:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4203:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4204:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4205:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+4206:             continue
+
      goto __pyx_L3_continue;
+
 4207: 
+
+4208:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+4209:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 4210: 
+
 4211:         # each index in the out_index had to come from either x, y, or both
+
+4212:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+4213:             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]) ))));
+
+4214:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4215:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4216: 
+
 4217:             # advance both locations
+
+4218:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4219:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4220:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4221:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4222: 
+
+4223:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4224:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4225:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4226:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4227: 
+
+4228:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 4229:             # use y fill value
+
+4230:             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);
+
+4231:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4232: 
+
 4233:             # advance x location
+
+4234:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4235:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4236:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4237:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4238:         else:
+
 4239:             # use x fill value
+
+4240:             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]) ))));
+
+4241:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4242: 
+
 4243:             # advance y location
+
+4244:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4245:             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:;
+  }
+
+4246:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4247:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4248: 
+
+4249:     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, 4249, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4249, __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;
+
 4250: 
+
 4251: 
+
 4252: @cython.wraparound(False)
+
 4253: @cython.boundscheck(False)
+
+4254: 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;
+}
+
 4255:                                               IntIndex xindex,
+
 4256:                                               int64_t xfill,
+
 4257:                                               int64_t[:] y_,
+
 4258:                                               IntIndex yindex,
+
 4259:                                               int64_t yfill):
+
 4260:     cdef:
+
 4261:         IntIndex out_index
+
+4262:         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;
+
 4263:         int32_t xloc, yloc
+
 4264:         int32_t[:] xindices, yindices, out_indices
+
 4265:         int64_t[:] x, y
+
 4266:         ndarray[uint8_t, ndim=1] out
+
 4267: 
+
 4268:     # suppress Cython compiler warnings due to inlining
+
+4269:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4270:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4271: 
+
 4272:     # need to do this first to know size of result array
+
+4273:     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, 4273, __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;
+
+4274:     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, 4274, __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, 4274, __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, 4274, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4274, __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, 4274, __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, 4274, __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, 4274, __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, 4274, __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, 4274, __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, 4274, __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, 4274, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4275: 
+
+4276:     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, 4276, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4277:     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, 4277, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4278:     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, 4278, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 4279: 
+
 4280:     # walk the two SparseVectors, adding matched locations...
+
+4281:     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;
+
+4282:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4283:             # use x fill value
+
+4284:             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]) ))));
+
+4285:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4286:             continue
+
      goto __pyx_L3_continue;
+
 4287: 
+
+4288:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4289:             # use y fill value
+
+4290:             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);
+
+4291:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4292:             continue
+
      goto __pyx_L3_continue;
+
 4293: 
+
+4294:         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]) )));
+
+4295:         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]) )));
+
 4296: 
+
 4297:         # each index in the out_index had to come from either x, y, or both
+
+4298:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+4299:             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]) ))));
+
+4300:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4301:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4302:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 4303:             # use y fill value
+
+4304:             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);
+
+4305:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4306:         else:
+
 4307:             # use x fill value
+
+4308:             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]) ))));
+
+4309:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 4310: 
+
+4311:     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, 4311, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4311, __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;
+
 4312: 
+
 4313: 
+
+4314: cpdef sparse_gt_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_49sparse_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_49sparse_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_49sparse_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, 4314, __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, 4314, __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, 4314, __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, 4314, __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, 4314, __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, 4314, __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, 4314, __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, 4315, __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, 4316, __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, 4317, __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, 4314, __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, 4315, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4317, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_48sparse_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_48sparse_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, 4314, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4314, __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, 4314, __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;
+}
+
 4315:                                   SparseIndex xindex, int64_t xfill,
+
 4316:                                   int64_t[:] y,
+
 4317:                                   SparseIndex yindex, int64_t yfill):
+
 4318: 
+
+4319:     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) {
+/* … */
+  }
+
+4320:         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, 4320, __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, 4320, __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, 4320, __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, 4320, __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;
+
+4321:                                              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, 4321, __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, 4321, __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, 4321, __pyx_L1_error)
+
+4322:     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)) {
+/* … */
+  }
+
+4323:         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, 4323, __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, 4323, __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, 4323, __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, 4323, __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;
+
+4324:                                            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, 4324, __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, 4324, __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, 4324, __pyx_L1_error)
+
 4325:     else:
+
+4326:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 4326, __pyx_L1_error)
+  }
+
 4327: 
+
 4328: 
+
 4329: @cython.wraparound(False)
+
 4330: @cython.boundscheck(False)
+
+4331: 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;
+}
+
 4332:                                                 BlockIndex xindex,
+
 4333:                                                 float64_t xfill,
+
 4334:                                                 float64_t[:] y_,
+
 4335:                                                 BlockIndex yindex,
+
 4336:                                                 float64_t yfill):
+
 4337:     '''
+
 4338:     Binary operator on BlockIndex objects with fill values
+
 4339:     '''
+
 4340: 
+
 4341:     cdef:
+
 4342:         BlockIndex out_index
+
+4343:         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;
+
+4344:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 4345:         int32_t xloc, yloc
+
+4346:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 4347: 
+
 4348:         float64_t[:] x, y
+
 4349:         ndarray[uint8_t, ndim=1] out
+
 4350: 
+
 4351:     # to suppress Cython warning
+
+4352:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4353:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4354: 
+
+4355:     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, 4355, __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;
+
+4356:     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, 4356, __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, 4356, __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, 4356, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4356, __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, 4356, __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, 4356, __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, 4356, __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, 4356, __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, 4356, __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, 4356, __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, 4356, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4357: 
+
 4358:     # Wow, what a hack job. Need to do something about this
+
 4359: 
+
 4360:     # walk the two SparseVectors, adding matched locations...
+
+4361:     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;
+
+4362:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4363:             # use y fill value
+
+4364:             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);
+
+4365:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4366: 
+
 4367:             # advance x location
+
+4368:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4369:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4370:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4371:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+4372:             continue
+
      goto __pyx_L3_continue;
+
 4373: 
+
+4374:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4375:             # use x fill value
+
+4376:             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]) ))));
+
+4377:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4378: 
+
 4379:             # advance y location
+
+4380:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4381:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4382:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4383:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+4384:             continue
+
      goto __pyx_L3_continue;
+
 4385: 
+
+4386:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+4387:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 4388: 
+
 4389:         # each index in the out_index had to come from either x, y, or both
+
+4390:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+4391:             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]) ))));
+
+4392:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4393:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4394: 
+
 4395:             # advance both locations
+
+4396:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4397:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4398:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4399:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4400: 
+
+4401:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4402:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4403:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4404:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4405: 
+
+4406:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 4407:             # use y fill value
+
+4408:             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);
+
+4409:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4410: 
+
 4411:             # advance x location
+
+4412:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4413:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4414:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4415:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4416:         else:
+
 4417:             # use x fill value
+
+4418:             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]) ))));
+
+4419:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4420: 
+
 4421:             # advance y location
+
+4422:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4423:             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:;
+  }
+
+4424:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4425:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4426: 
+
+4427:     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, 4427, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4427, __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;
+
 4428: 
+
 4429: 
+
 4430: @cython.wraparound(False)
+
 4431: @cython.boundscheck(False)
+
+4432: 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;
+}
+
 4433:                                               IntIndex xindex,
+
 4434:                                               float64_t xfill,
+
 4435:                                               float64_t[:] y_,
+
 4436:                                               IntIndex yindex,
+
 4437:                                               float64_t yfill):
+
 4438:     cdef:
+
 4439:         IntIndex out_index
+
+4440:         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;
+
 4441:         int32_t xloc, yloc
+
 4442:         int32_t[:] xindices, yindices, out_indices
+
 4443:         float64_t[:] x, y
+
 4444:         ndarray[uint8_t, ndim=1] out
+
 4445: 
+
 4446:     # suppress Cython compiler warnings due to inlining
+
+4447:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4448:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4449: 
+
 4450:     # need to do this first to know size of result array
+
+4451:     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, 4451, __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;
+
+4452:     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, 4452, __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, 4452, __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, 4452, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4452, __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, 4452, __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, 4452, __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, 4452, __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, 4452, __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, 4452, __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, 4452, __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, 4452, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4453: 
+
+4454:     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, 4454, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4455:     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, 4455, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4456:     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, 4456, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 4457: 
+
 4458:     # walk the two SparseVectors, adding matched locations...
+
+4459:     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;
+
+4460:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4461:             # use x fill value
+
+4462:             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]) ))));
+
+4463:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4464:             continue
+
      goto __pyx_L3_continue;
+
 4465: 
+
+4466:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4467:             # use y fill value
+
+4468:             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);
+
+4469:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4470:             continue
+
      goto __pyx_L3_continue;
+
 4471: 
+
+4472:         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]) )));
+
+4473:         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]) )));
+
 4474: 
+
 4475:         # each index in the out_index had to come from either x, y, or both
+
+4476:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+4477:             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]) ))));
+
+4478:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4479:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4480:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 4481:             # use y fill value
+
+4482:             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);
+
+4483:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4484:         else:
+
 4485:             # use x fill value
+
+4486:             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]) ))));
+
+4487:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 4488: 
+
+4489:     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, 4489, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4489, __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;
+
 4490: 
+
 4491: 
+
+4492: cpdef sparse_le_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_51sparse_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_51sparse_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_51sparse_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, 4492, __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, 4492, __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, 4492, __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, 4492, __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, 4492, __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, 4492, __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, 4492, __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, 4493, __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, 4494, __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, 4495, __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, 4492, __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, 4493, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4495, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_50sparse_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_50sparse_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, 4492, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4492, __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, 4492, __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;
+}
+
 4493:                                   SparseIndex xindex, float64_t xfill,
+
 4494:                                   float64_t[:] y,
+
 4495:                                   SparseIndex yindex, float64_t yfill):
+
 4496: 
+
+4497:     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) {
+/* … */
+  }
+
+4498:         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, 4498, __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, 4498, __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, 4498, __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, 4498, __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;
+
+4499:                                              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, 4499, __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, 4499, __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, 4499, __pyx_L1_error)
+
+4500:     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)) {
+/* … */
+  }
+
+4501:         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, 4501, __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, 4501, __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, 4501, __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, 4501, __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;
+
+4502:                                            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, 4502, __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, 4502, __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, 4502, __pyx_L1_error)
+
 4503:     else:
+
+4504:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 4504, __pyx_L1_error)
+  }
+
 4505: 
+
 4506: 
+
 4507: @cython.wraparound(False)
+
 4508: @cython.boundscheck(False)
+
+4509: 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;
+}
+
 4510:                                                 BlockIndex xindex,
+
 4511:                                                 int64_t xfill,
+
 4512:                                                 int64_t[:] y_,
+
 4513:                                                 BlockIndex yindex,
+
 4514:                                                 int64_t yfill):
+
 4515:     '''
+
 4516:     Binary operator on BlockIndex objects with fill values
+
 4517:     '''
+
 4518: 
+
 4519:     cdef:
+
 4520:         BlockIndex out_index
+
+4521:         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;
+
+4522:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 4523:         int32_t xloc, yloc
+
+4524:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 4525: 
+
 4526:         int64_t[:] x, y
+
 4527:         ndarray[uint8_t, ndim=1] out
+
 4528: 
+
 4529:     # to suppress Cython warning
+
+4530:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4531:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4532: 
+
+4533:     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, 4533, __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;
+
+4534:     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, 4534, __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, 4534, __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, 4534, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4534, __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, 4534, __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, 4534, __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, 4534, __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, 4534, __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, 4534, __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, 4534, __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, 4534, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4535: 
+
 4536:     # Wow, what a hack job. Need to do something about this
+
 4537: 
+
 4538:     # walk the two SparseVectors, adding matched locations...
+
+4539:     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;
+
+4540:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4541:             # use y fill value
+
+4542:             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);
+
+4543:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4544: 
+
 4545:             # advance x location
+
+4546:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4547:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4548:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4549:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+4550:             continue
+
      goto __pyx_L3_continue;
+
 4551: 
+
+4552:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4553:             # use x fill value
+
+4554:             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]) ))));
+
+4555:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4556: 
+
 4557:             # advance y location
+
+4558:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4559:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4560:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4561:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+4562:             continue
+
      goto __pyx_L3_continue;
+
 4563: 
+
+4564:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+4565:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 4566: 
+
 4567:         # each index in the out_index had to come from either x, y, or both
+
+4568:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+4569:             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]) ))));
+
+4570:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4571:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4572: 
+
 4573:             # advance both locations
+
+4574:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4575:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4576:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4577:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4578: 
+
+4579:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4580:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4581:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4582:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4583: 
+
+4584:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 4585:             # use y fill value
+
+4586:             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);
+
+4587:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4588: 
+
 4589:             # advance x location
+
+4590:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4591:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4592:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4593:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4594:         else:
+
 4595:             # use x fill value
+
+4596:             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]) ))));
+
+4597:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4598: 
+
 4599:             # advance y location
+
+4600:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4601:             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:;
+  }
+
+4602:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4603:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4604: 
+
+4605:     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, 4605, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4605, __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;
+
 4606: 
+
 4607: 
+
 4608: @cython.wraparound(False)
+
 4609: @cython.boundscheck(False)
+
+4610: 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;
+}
+
 4611:                                               IntIndex xindex,
+
 4612:                                               int64_t xfill,
+
 4613:                                               int64_t[:] y_,
+
 4614:                                               IntIndex yindex,
+
 4615:                                               int64_t yfill):
+
 4616:     cdef:
+
 4617:         IntIndex out_index
+
+4618:         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;
+
 4619:         int32_t xloc, yloc
+
 4620:         int32_t[:] xindices, yindices, out_indices
+
 4621:         int64_t[:] x, y
+
 4622:         ndarray[uint8_t, ndim=1] out
+
 4623: 
+
 4624:     # suppress Cython compiler warnings due to inlining
+
+4625:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4626:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4627: 
+
 4628:     # need to do this first to know size of result array
+
+4629:     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, 4629, __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;
+
+4630:     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, 4630, __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, 4630, __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, 4630, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4630, __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, 4630, __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, 4630, __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, 4630, __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, 4630, __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, 4630, __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, 4630, __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, 4630, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4631: 
+
+4632:     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, 4632, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4633:     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, 4633, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4634:     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, 4634, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 4635: 
+
 4636:     # walk the two SparseVectors, adding matched locations...
+
+4637:     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;
+
+4638:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4639:             # use x fill value
+
+4640:             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]) ))));
+
+4641:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4642:             continue
+
      goto __pyx_L3_continue;
+
 4643: 
+
+4644:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4645:             # use y fill value
+
+4646:             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);
+
+4647:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4648:             continue
+
      goto __pyx_L3_continue;
+
 4649: 
+
+4650:         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]) )));
+
+4651:         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]) )));
+
 4652: 
+
 4653:         # each index in the out_index had to come from either x, y, or both
+
+4654:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+4655:             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]) ))));
+
+4656:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4657:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4658:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 4659:             # use y fill value
+
+4660:             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);
+
+4661:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4662:         else:
+
 4663:             # use x fill value
+
+4664:             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]) ))));
+
+4665:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 4666: 
+
+4667:     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, 4667, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4667, __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;
+
 4668: 
+
 4669: 
+
+4670: cpdef sparse_le_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_53sparse_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_53sparse_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_53sparse_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, 4670, __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, 4670, __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, 4670, __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, 4670, __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, 4670, __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, 4670, __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, 4670, __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, 4671, __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, 4672, __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, 4673, __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, 4670, __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, 4671, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4673, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_52sparse_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_52sparse_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, 4670, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4670, __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, 4670, __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;
+}
+
 4671:                                   SparseIndex xindex, int64_t xfill,
+
 4672:                                   int64_t[:] y,
+
 4673:                                   SparseIndex yindex, int64_t yfill):
+
 4674: 
+
+4675:     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) {
+/* … */
+  }
+
+4676:         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, 4676, __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, 4676, __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, 4676, __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, 4676, __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;
+
+4677:                                              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, 4677, __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, 4677, __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, 4677, __pyx_L1_error)
+
+4678:     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)) {
+/* … */
+  }
+
+4679:         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, 4679, __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, 4679, __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, 4679, __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, 4679, __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;
+
+4680:                                            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, 4680, __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, 4680, __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, 4680, __pyx_L1_error)
+
 4681:     else:
+
+4682:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 4682, __pyx_L1_error)
+  }
+
 4683: 
+
 4684: 
+
 4685: @cython.wraparound(False)
+
 4686: @cython.boundscheck(False)
+
+4687: 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;
+}
+
 4688:                                                 BlockIndex xindex,
+
 4689:                                                 float64_t xfill,
+
 4690:                                                 float64_t[:] y_,
+
 4691:                                                 BlockIndex yindex,
+
 4692:                                                 float64_t yfill):
+
 4693:     '''
+
 4694:     Binary operator on BlockIndex objects with fill values
+
 4695:     '''
+
 4696: 
+
 4697:     cdef:
+
 4698:         BlockIndex out_index
+
+4699:         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;
+
+4700:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 4701:         int32_t xloc, yloc
+
+4702:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 4703: 
+
 4704:         float64_t[:] x, y
+
 4705:         ndarray[uint8_t, ndim=1] out
+
 4706: 
+
 4707:     # to suppress Cython warning
+
+4708:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4709:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4710: 
+
+4711:     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, 4711, __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;
+
+4712:     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, 4712, __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, 4712, __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, 4712, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4712, __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, 4712, __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, 4712, __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, 4712, __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, 4712, __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, 4712, __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, 4712, __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, 4712, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4713: 
+
 4714:     # Wow, what a hack job. Need to do something about this
+
 4715: 
+
 4716:     # walk the two SparseVectors, adding matched locations...
+
+4717:     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;
+
+4718:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4719:             # use y fill value
+
+4720:             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);
+
+4721:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4722: 
+
 4723:             # advance x location
+
+4724:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4725:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4726:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4727:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+4728:             continue
+
      goto __pyx_L3_continue;
+
 4729: 
+
+4730:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4731:             # use x fill value
+
+4732:             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]) ))));
+
+4733:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4734: 
+
 4735:             # advance y location
+
+4736:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4737:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4738:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4739:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+4740:             continue
+
      goto __pyx_L3_continue;
+
 4741: 
+
+4742:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+4743:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 4744: 
+
 4745:         # each index in the out_index had to come from either x, y, or both
+
+4746:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+4747:             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]) ))));
+
+4748:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4749:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4750: 
+
 4751:             # advance both locations
+
+4752:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4753:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4754:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4755:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4756: 
+
+4757:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4758:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4759:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4760:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4761: 
+
+4762:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 4763:             # use y fill value
+
+4764:             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);
+
+4765:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4766: 
+
 4767:             # advance x location
+
+4768:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4769:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4770:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4771:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4772:         else:
+
 4773:             # use x fill value
+
+4774:             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]) ))));
+
+4775:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4776: 
+
 4777:             # advance y location
+
+4778:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4779:             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:;
+  }
+
+4780:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4781:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4782: 
+
+4783:     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, 4783, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4783, __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;
+
 4784: 
+
 4785: 
+
 4786: @cython.wraparound(False)
+
 4787: @cython.boundscheck(False)
+
+4788: 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;
+}
+
 4789:                                               IntIndex xindex,
+
 4790:                                               float64_t xfill,
+
 4791:                                               float64_t[:] y_,
+
 4792:                                               IntIndex yindex,
+
 4793:                                               float64_t yfill):
+
 4794:     cdef:
+
 4795:         IntIndex out_index
+
+4796:         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;
+
 4797:         int32_t xloc, yloc
+
 4798:         int32_t[:] xindices, yindices, out_indices
+
 4799:         float64_t[:] x, y
+
 4800:         ndarray[uint8_t, ndim=1] out
+
 4801: 
+
 4802:     # suppress Cython compiler warnings due to inlining
+
+4803:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4804:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4805: 
+
 4806:     # need to do this first to know size of result array
+
+4807:     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, 4807, __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;
+
+4808:     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, 4808, __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, 4808, __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, 4808, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4808, __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, 4808, __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, 4808, __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, 4808, __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, 4808, __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, 4808, __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, 4808, __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, 4808, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4809: 
+
+4810:     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, 4810, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4811:     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, 4811, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4812:     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, 4812, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 4813: 
+
 4814:     # walk the two SparseVectors, adding matched locations...
+
+4815:     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;
+
+4816:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4817:             # use x fill value
+
+4818:             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]) ))));
+
+4819:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4820:             continue
+
      goto __pyx_L3_continue;
+
 4821: 
+
+4822:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4823:             # use y fill value
+
+4824:             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);
+
+4825:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4826:             continue
+
      goto __pyx_L3_continue;
+
 4827: 
+
+4828:         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]) )));
+
+4829:         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]) )));
+
 4830: 
+
 4831:         # each index in the out_index had to come from either x, y, or both
+
+4832:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+4833:             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]) ))));
+
+4834:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4835:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4836:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 4837:             # use y fill value
+
+4838:             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);
+
+4839:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4840:         else:
+
 4841:             # use x fill value
+
+4842:             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]) ))));
+
+4843:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 4844: 
+
+4845:     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, 4845, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4845, __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;
+
 4846: 
+
 4847: 
+
+4848: cpdef sparse_ge_float64(float64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_55sparse_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_55sparse_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_55sparse_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, 4848, __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, 4848, __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, 4848, __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, 4848, __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, 4848, __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, 4848, __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, 4848, __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, 4849, __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, 4850, __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, 4851, __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, 4848, __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, 4849, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4851, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_54sparse_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_54sparse_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, 4848, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4848, __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, 4848, __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;
+}
+
 4849:                                   SparseIndex xindex, float64_t xfill,
+
 4850:                                   float64_t[:] y,
+
 4851:                                   SparseIndex yindex, float64_t yfill):
+
 4852: 
+
+4853:     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) {
+/* … */
+  }
+
+4854:         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, 4854, __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, 4854, __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, 4854, __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, 4854, __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;
+
+4855:                                              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, 4855, __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, 4855, __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, 4855, __pyx_L1_error)
+
+4856:     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)) {
+/* … */
+  }
+
+4857:         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, 4857, __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, 4857, __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, 4857, __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, 4857, __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;
+
+4858:                                            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, 4858, __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, 4858, __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, 4858, __pyx_L1_error)
+
 4859:     else:
+
+4860:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 4860, __pyx_L1_error)
+  }
+
 4861: 
+
 4862: 
+
 4863: @cython.wraparound(False)
+
 4864: @cython.boundscheck(False)
+
+4865: 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;
+}
+
 4866:                                                 BlockIndex xindex,
+
 4867:                                                 int64_t xfill,
+
 4868:                                                 int64_t[:] y_,
+
 4869:                                                 BlockIndex yindex,
+
 4870:                                                 int64_t yfill):
+
 4871:     '''
+
 4872:     Binary operator on BlockIndex objects with fill values
+
 4873:     '''
+
 4874: 
+
 4875:     cdef:
+
 4876:         BlockIndex out_index
+
+4877:         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;
+
+4878:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 4879:         int32_t xloc, yloc
+
+4880:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 4881: 
+
 4882:         int64_t[:] x, y
+
 4883:         ndarray[uint8_t, ndim=1] out
+
 4884: 
+
 4885:     # to suppress Cython warning
+
+4886:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4887:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4888: 
+
+4889:     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, 4889, __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;
+
+4890:     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, 4890, __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, 4890, __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, 4890, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4890, __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, 4890, __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, 4890, __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, 4890, __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, 4890, __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, 4890, __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, 4890, __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, 4890, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4891: 
+
 4892:     # Wow, what a hack job. Need to do something about this
+
 4893: 
+
 4894:     # walk the two SparseVectors, adding matched locations...
+
+4895:     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;
+
+4896:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4897:             # use y fill value
+
+4898:             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);
+
+4899:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4900: 
+
 4901:             # advance x location
+
+4902:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4903:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4904:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4905:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+4906:             continue
+
      goto __pyx_L3_continue;
+
 4907: 
+
+4908:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 4909:             # use x fill value
+
+4910:             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]) ))));
+
+4911:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4912: 
+
 4913:             # advance y location
+
+4914:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4915:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4916:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4917:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+4918:             continue
+
      goto __pyx_L3_continue;
+
 4919: 
+
+4920:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+4921:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 4922: 
+
 4923:         # each index in the out_index had to come from either x, y, or both
+
+4924:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+4925:             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]) ))));
+
+4926:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+4927:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4928: 
+
 4929:             # advance both locations
+
+4930:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4931:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4932:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4933:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4934: 
+
+4935:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4936:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4937:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4938:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4939: 
+
+4940:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 4941:             # use y fill value
+
+4942:             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);
+
+4943:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 4944: 
+
 4945:             # advance x location
+
+4946:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+4947:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+4948:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+4949:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 4950:         else:
+
 4951:             # use x fill value
+
+4952:             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]) ))));
+
+4953:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 4954: 
+
 4955:             # advance y location
+
+4956:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+4957:             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:;
+  }
+
+4958:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+4959:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 4960: 
+
+4961:     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, 4961, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4961, __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;
+
 4962: 
+
 4963: 
+
 4964: @cython.wraparound(False)
+
 4965: @cython.boundscheck(False)
+
+4966: 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;
+}
+
 4967:                                               IntIndex xindex,
+
 4968:                                               int64_t xfill,
+
 4969:                                               int64_t[:] y_,
+
 4970:                                               IntIndex yindex,
+
 4971:                                               int64_t yfill):
+
 4972:     cdef:
+
 4973:         IntIndex out_index
+
+4974:         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;
+
 4975:         int32_t xloc, yloc
+
 4976:         int32_t[:] xindices, yindices, out_indices
+
 4977:         int64_t[:] x, y
+
 4978:         ndarray[uint8_t, ndim=1] out
+
 4979: 
+
 4980:     # suppress Cython compiler warnings due to inlining
+
+4981:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+4982:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 4983: 
+
 4984:     # need to do this first to know size of result array
+
+4985:     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, 4985, __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;
+
+4986:     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, 4986, __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, 4986, __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, 4986, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4986, __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, 4986, __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, 4986, __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, 4986, __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, 4986, __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, 4986, __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, 4986, __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, 4986, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 4987: 
+
+4988:     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, 4988, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4989:     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, 4989, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+4990:     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, 4990, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 4991: 
+
 4992:     # walk the two SparseVectors, adding matched locations...
+
+4993:     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;
+
+4994:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 4995:             # use x fill value
+
+4996:             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]) ))));
+
+4997:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+4998:             continue
+
      goto __pyx_L3_continue;
+
 4999: 
+
+5000:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5001:             # use y fill value
+
+5002:             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);
+
+5003:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5004:             continue
+
      goto __pyx_L3_continue;
+
 5005: 
+
+5006:         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]) )));
+
+5007:         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]) )));
+
 5008: 
+
 5009:         # each index in the out_index had to come from either x, y, or both
+
+5010:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+5011:             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]) ))));
+
+5012:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5013:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5014:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 5015:             # use y fill value
+
+5016:             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);
+
+5017:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5018:         else:
+
 5019:             # use x fill value
+
+5020:             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]) ))));
+
+5021:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 5022: 
+
+5023:     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, 5023, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5023, __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;
+
 5024: 
+
 5025: 
+
+5026: cpdef sparse_ge_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_57sparse_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_57sparse_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_57sparse_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, 5026, __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, 5026, __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, 5026, __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, 5026, __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, 5026, __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, 5026, __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, 5026, __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, 5027, __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, 5028, __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, 5029, __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, 5026, __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, 5027, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5029, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_56sparse_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_56sparse_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, 5026, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5026, __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, 5026, __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;
+}
+
 5027:                                   SparseIndex xindex, int64_t xfill,
+
 5028:                                   int64_t[:] y,
+
 5029:                                   SparseIndex yindex, int64_t yfill):
+
 5030: 
+
+5031:     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) {
+/* … */
+  }
+
+5032:         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, 5032, __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, 5032, __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, 5032, __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, 5032, __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;
+
+5033:                                              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, 5033, __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, 5033, __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, 5033, __pyx_L1_error)
+
+5034:     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)) {
+/* … */
+  }
+
+5035:         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, 5035, __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, 5035, __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, 5035, __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, 5035, __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;
+
+5036:                                            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, 5036, __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, 5036, __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, 5036, __pyx_L1_error)
+
 5037:     else:
+
+5038:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 5038, __pyx_L1_error)
+  }
+
 5039: 
+
 5040: 
+
 5041: @cython.wraparound(False)
+
 5042: @cython.boundscheck(False)
+
+5043: 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;
+}
+
 5044:                                                 BlockIndex xindex,
+
 5045:                                                 int64_t xfill,
+
 5046:                                                 int64_t[:] y_,
+
 5047:                                                 BlockIndex yindex,
+
 5048:                                                 int64_t yfill):
+
 5049:     '''
+
 5050:     Binary operator on BlockIndex objects with fill values
+
 5051:     '''
+
 5052: 
+
 5053:     cdef:
+
 5054:         BlockIndex out_index
+
+5055:         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;
+
+5056:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 5057:         int32_t xloc, yloc
+
+5058:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 5059: 
+
 5060:         int64_t[:] x, y
+
 5061:         ndarray[uint8_t, ndim=1] out
+
 5062: 
+
 5063:     # to suppress Cython warning
+
+5064:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5065:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5066: 
+
+5067:     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, 5067, __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;
+
+5068:     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, 5068, __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, 5068, __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, 5068, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5068, __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, 5068, __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, 5068, __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, 5068, __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, 5068, __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, 5068, __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, 5068, __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, 5068, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5069: 
+
 5070:     # Wow, what a hack job. Need to do something about this
+
 5071: 
+
 5072:     # walk the two SparseVectors, adding matched locations...
+
+5073:     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;
+
+5074:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5075:             # use y fill value
+
+5076:             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);
+
+5077:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5078: 
+
 5079:             # advance x location
+
+5080:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5081:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5082:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5083:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+5084:             continue
+
      goto __pyx_L3_continue;
+
 5085: 
+
+5086:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5087:             # use x fill value
+
+5088:             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]) ))));
+
+5089:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5090: 
+
 5091:             # advance y location
+
+5092:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5093:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5094:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5095:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+5096:             continue
+
      goto __pyx_L3_continue;
+
 5097: 
+
+5098:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+5099:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 5100: 
+
 5101:         # each index in the out_index had to come from either x, y, or both
+
+5102:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+5103:             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]) ))));
+
+5104:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5105:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5106: 
+
 5107:             # advance both locations
+
+5108:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5109:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5110:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5111:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5112: 
+
+5113:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5114:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5115:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5116:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5117: 
+
+5118:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 5119:             # use y fill value
+
+5120:             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);
+
+5121:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5122: 
+
 5123:             # advance x location
+
+5124:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5125:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5126:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5127:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5128:         else:
+
 5129:             # use x fill value
+
+5130:             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]) ))));
+
+5131:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5132: 
+
 5133:             # advance y location
+
+5134:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5135:             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:;
+  }
+
+5136:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5137:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5138: 
+
+5139:     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, 5139, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5139, __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;
+
 5140: 
+
 5141: 
+
 5142: @cython.wraparound(False)
+
 5143: @cython.boundscheck(False)
+
+5144: 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;
+}
+
 5145:                                               IntIndex xindex,
+
 5146:                                               int64_t xfill,
+
 5147:                                               int64_t[:] y_,
+
 5148:                                               IntIndex yindex,
+
 5149:                                               int64_t yfill):
+
 5150:     cdef:
+
 5151:         IntIndex out_index
+
+5152:         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;
+
 5153:         int32_t xloc, yloc
+
 5154:         int32_t[:] xindices, yindices, out_indices
+
 5155:         int64_t[:] x, y
+
 5156:         ndarray[uint8_t, ndim=1] out
+
 5157: 
+
 5158:     # suppress Cython compiler warnings due to inlining
+
+5159:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5160:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5161: 
+
 5162:     # need to do this first to know size of result array
+
+5163:     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, 5163, __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;
+
+5164:     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, 5164, __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, 5164, __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, 5164, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5164, __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, 5164, __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, 5164, __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, 5164, __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, 5164, __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, 5164, __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, 5164, __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, 5164, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5165: 
+
+5166:     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, 5166, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5167:     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, 5167, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5168:     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, 5168, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 5169: 
+
 5170:     # walk the two SparseVectors, adding matched locations...
+
+5171:     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;
+
+5172:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5173:             # use x fill value
+
+5174:             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]) ))));
+
+5175:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5176:             continue
+
      goto __pyx_L3_continue;
+
 5177: 
+
+5178:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5179:             # use y fill value
+
+5180:             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);
+
+5181:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5182:             continue
+
      goto __pyx_L3_continue;
+
 5183: 
+
+5184:         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]) )));
+
+5185:         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]) )));
+
 5186: 
+
 5187:         # each index in the out_index had to come from either x, y, or both
+
+5188:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+5189:             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]) ))));
+
+5190:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5191:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5192:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 5193:             # use y fill value
+
+5194:             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);
+
+5195:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5196:         else:
+
 5197:             # use x fill value
+
+5198:             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]) ))));
+
+5199:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 5200: 
+
+5201:     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, 5201, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5201, __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;
+
 5202: 
+
 5203: 
+
+5204: cpdef sparse_and_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_59sparse_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_59sparse_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_59sparse_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, 5204, __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, 5204, __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, 5204, __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, 5204, __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, 5204, __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, 5204, __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, 5204, __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, 5205, __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, 5206, __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, 5207, __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, 5204, __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, 5205, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5207, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_58sparse_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_58sparse_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, 5204, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5204, __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, 5204, __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;
+}
+
 5205:                                   SparseIndex xindex, int64_t xfill,
+
 5206:                                   int64_t[:] y,
+
 5207:                                   SparseIndex yindex, int64_t yfill):
+
 5208: 
+
+5209:     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) {
+/* … */
+  }
+
+5210:         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, 5210, __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, 5210, __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, 5210, __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, 5210, __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;
+
+5211:                                              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, 5211, __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, 5211, __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, 5211, __pyx_L1_error)
+
+5212:     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)) {
+/* … */
+  }
+
+5213:         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, 5213, __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, 5213, __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, 5213, __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, 5213, __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;
+
+5214:                                            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, 5214, __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, 5214, __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, 5214, __pyx_L1_error)
+
 5215:     else:
+
+5216:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 5216, __pyx_L1_error)
+  }
+
 5217: 
+
 5218: 
+
 5219: @cython.wraparound(False)
+
 5220: @cython.boundscheck(False)
+
+5221: 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;
+}
+
 5222:                                                 BlockIndex xindex,
+
 5223:                                                 uint8_t xfill,
+
 5224:                                                 uint8_t[:] y_,
+
 5225:                                                 BlockIndex yindex,
+
 5226:                                                 uint8_t yfill):
+
 5227:     '''
+
 5228:     Binary operator on BlockIndex objects with fill values
+
 5229:     '''
+
 5230: 
+
 5231:     cdef:
+
 5232:         BlockIndex out_index
+
+5233:         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;
+
+5234:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 5235:         int32_t xloc, yloc
+
+5236:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 5237: 
+
 5238:         uint8_t[:] x, y
+
 5239:         ndarray[uint8_t, ndim=1] out
+
 5240: 
+
 5241:     # to suppress Cython warning
+
+5242:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5243:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5244: 
+
+5245:     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, 5245, __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;
+
+5246:     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, 5246, __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, 5246, __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, 5246, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5246, __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, 5246, __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, 5246, __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, 5246, __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, 5246, __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, 5246, __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, 5246, __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, 5246, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5247: 
+
 5248:     # Wow, what a hack job. Need to do something about this
+
 5249: 
+
 5250:     # walk the two SparseVectors, adding matched locations...
+
+5251:     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;
+
+5252:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5253:             # use y fill value
+
+5254:             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);
+
+5255:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5256: 
+
 5257:             # advance x location
+
+5258:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5259:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5260:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5261:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+5262:             continue
+
      goto __pyx_L3_continue;
+
 5263: 
+
+5264:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5265:             # use x fill value
+
+5266:             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]) ))));
+
+5267:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5268: 
+
 5269:             # advance y location
+
+5270:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5271:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5272:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5273:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+5274:             continue
+
      goto __pyx_L3_continue;
+
 5275: 
+
+5276:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+5277:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 5278: 
+
 5279:         # each index in the out_index had to come from either x, y, or both
+
+5280:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+5281:             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]) ))));
+
+5282:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5283:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5284: 
+
 5285:             # advance both locations
+
+5286:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5287:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5288:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5289:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5290: 
+
+5291:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5292:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5293:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5294:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5295: 
+
+5296:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 5297:             # use y fill value
+
+5298:             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);
+
+5299:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5300: 
+
 5301:             # advance x location
+
+5302:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5303:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5304:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5305:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5306:         else:
+
 5307:             # use x fill value
+
+5308:             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]) ))));
+
+5309:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5310: 
+
 5311:             # advance y location
+
+5312:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5313:             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:;
+  }
+
+5314:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5315:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5316: 
+
+5317:     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, 5317, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5317, __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;
+
 5318: 
+
 5319: 
+
 5320: @cython.wraparound(False)
+
 5321: @cython.boundscheck(False)
+
+5322: 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;
+}
+
 5323:                                               IntIndex xindex,
+
 5324:                                               uint8_t xfill,
+
 5325:                                               uint8_t[:] y_,
+
 5326:                                               IntIndex yindex,
+
 5327:                                               uint8_t yfill):
+
 5328:     cdef:
+
 5329:         IntIndex out_index
+
+5330:         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;
+
 5331:         int32_t xloc, yloc
+
 5332:         int32_t[:] xindices, yindices, out_indices
+
 5333:         uint8_t[:] x, y
+
 5334:         ndarray[uint8_t, ndim=1] out
+
 5335: 
+
 5336:     # suppress Cython compiler warnings due to inlining
+
+5337:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5338:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5339: 
+
 5340:     # need to do this first to know size of result array
+
+5341:     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, 5341, __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;
+
+5342:     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, 5342, __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, 5342, __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, 5342, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5342, __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, 5342, __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, 5342, __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, 5342, __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, 5342, __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, 5342, __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, 5342, __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, 5342, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5343: 
+
+5344:     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, 5344, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5345:     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, 5345, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5346:     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, 5346, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 5347: 
+
 5348:     # walk the two SparseVectors, adding matched locations...
+
+5349:     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;
+
+5350:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5351:             # use x fill value
+
+5352:             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]) ))));
+
+5353:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5354:             continue
+
      goto __pyx_L3_continue;
+
 5355: 
+
+5356:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5357:             # use y fill value
+
+5358:             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);
+
+5359:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5360:             continue
+
      goto __pyx_L3_continue;
+
 5361: 
+
+5362:         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]) )));
+
+5363:         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]) )));
+
 5364: 
+
 5365:         # each index in the out_index had to come from either x, y, or both
+
+5366:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+5367:             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]) ))));
+
+5368:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5369:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5370:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 5371:             # use y fill value
+
+5372:             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);
+
+5373:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5374:         else:
+
 5375:             # use x fill value
+
+5376:             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]) ))));
+
+5377:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 5378: 
+
+5379:     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, 5379, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5379, __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;
+
 5380: 
+
 5381: 
+
+5382: cpdef sparse_and_uint8(uint8_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_61sparse_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_61sparse_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_61sparse_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, 5382, __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, 5382, __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, 5382, __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, 5382, __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, 5382, __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, 5382, __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, 5382, __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, 5383, __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, 5384, __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, 5385, __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, 5382, __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, 5383, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5385, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_60sparse_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_60sparse_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, 5382, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5382, __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, 5382, __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;
+}
+
 5383:                                   SparseIndex xindex, uint8_t xfill,
+
 5384:                                   uint8_t[:] y,
+
 5385:                                   SparseIndex yindex, uint8_t yfill):
+
 5386: 
+
+5387:     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) {
+/* … */
+  }
+
+5388:         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, 5388, __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, 5388, __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, 5388, __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, 5388, __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;
+
+5389:                                              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, 5389, __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, 5389, __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, 5389, __pyx_L1_error)
+
+5390:     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)) {
+/* … */
+  }
+
+5391:         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, 5391, __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, 5391, __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, 5391, __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, 5391, __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;
+
+5392:                                            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, 5392, __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, 5392, __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, 5392, __pyx_L1_error)
+
 5393:     else:
+
+5394:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 5394, __pyx_L1_error)
+  }
+
 5395: 
+
 5396: 
+
 5397: @cython.wraparound(False)
+
 5398: @cython.boundscheck(False)
+
+5399: 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;
+}
+
 5400:                                                 BlockIndex xindex,
+
 5401:                                                 int64_t xfill,
+
 5402:                                                 int64_t[:] y_,
+
 5403:                                                 BlockIndex yindex,
+
 5404:                                                 int64_t yfill):
+
 5405:     '''
+
 5406:     Binary operator on BlockIndex objects with fill values
+
 5407:     '''
+
 5408: 
+
 5409:     cdef:
+
 5410:         BlockIndex out_index
+
+5411:         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;
+
+5412:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 5413:         int32_t xloc, yloc
+
+5414:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 5415: 
+
 5416:         int64_t[:] x, y
+
 5417:         ndarray[uint8_t, ndim=1] out
+
 5418: 
+
 5419:     # to suppress Cython warning
+
+5420:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5421:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5422: 
+
+5423:     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, 5423, __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;
+
+5424:     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, 5424, __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, 5424, __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, 5424, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5424, __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, 5424, __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, 5424, __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, 5424, __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, 5424, __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, 5424, __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, 5424, __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, 5424, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5425: 
+
 5426:     # Wow, what a hack job. Need to do something about this
+
 5427: 
+
 5428:     # walk the two SparseVectors, adding matched locations...
+
+5429:     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;
+
+5430:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5431:             # use y fill value
+
+5432:             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);
+
+5433:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5434: 
+
 5435:             # advance x location
+
+5436:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5437:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5438:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5439:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+5440:             continue
+
      goto __pyx_L3_continue;
+
 5441: 
+
+5442:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5443:             # use x fill value
+
+5444:             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]) ))));
+
+5445:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5446: 
+
 5447:             # advance y location
+
+5448:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5449:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5450:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5451:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+5452:             continue
+
      goto __pyx_L3_continue;
+
 5453: 
+
+5454:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+5455:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 5456: 
+
 5457:         # each index in the out_index had to come from either x, y, or both
+
+5458:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+5459:             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]) ))));
+
+5460:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5461:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5462: 
+
 5463:             # advance both locations
+
+5464:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5465:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5466:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5467:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5468: 
+
+5469:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5470:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5471:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5472:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5473: 
+
+5474:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 5475:             # use y fill value
+
+5476:             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);
+
+5477:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5478: 
+
 5479:             # advance x location
+
+5480:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5481:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5482:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5483:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5484:         else:
+
 5485:             # use x fill value
+
+5486:             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]) ))));
+
+5487:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5488: 
+
 5489:             # advance y location
+
+5490:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5491:             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:;
+  }
+
+5492:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5493:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5494: 
+
+5495:     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, 5495, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5495, __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;
+
 5496: 
+
 5497: 
+
 5498: @cython.wraparound(False)
+
 5499: @cython.boundscheck(False)
+
+5500: 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;
+}
+
 5501:                                               IntIndex xindex,
+
 5502:                                               int64_t xfill,
+
 5503:                                               int64_t[:] y_,
+
 5504:                                               IntIndex yindex,
+
 5505:                                               int64_t yfill):
+
 5506:     cdef:
+
 5507:         IntIndex out_index
+
+5508:         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;
+
 5509:         int32_t xloc, yloc
+
 5510:         int32_t[:] xindices, yindices, out_indices
+
 5511:         int64_t[:] x, y
+
 5512:         ndarray[uint8_t, ndim=1] out
+
 5513: 
+
 5514:     # suppress Cython compiler warnings due to inlining
+
+5515:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5516:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5517: 
+
 5518:     # need to do this first to know size of result array
+
+5519:     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, 5519, __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;
+
+5520:     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, 5520, __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, 5520, __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, 5520, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5520, __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, 5520, __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, 5520, __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, 5520, __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, 5520, __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, 5520, __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, 5520, __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, 5520, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5521: 
+
+5522:     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, 5522, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5523:     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, 5523, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5524:     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, 5524, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 5525: 
+
 5526:     # walk the two SparseVectors, adding matched locations...
+
+5527:     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;
+
+5528:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5529:             # use x fill value
+
+5530:             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]) ))));
+
+5531:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5532:             continue
+
      goto __pyx_L3_continue;
+
 5533: 
+
+5534:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5535:             # use y fill value
+
+5536:             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);
+
+5537:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5538:             continue
+
      goto __pyx_L3_continue;
+
 5539: 
+
+5540:         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]) )));
+
+5541:         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]) )));
+
 5542: 
+
 5543:         # each index in the out_index had to come from either x, y, or both
+
+5544:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+5545:             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]) ))));
+
+5546:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5547:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5548:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 5549:             # use y fill value
+
+5550:             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);
+
+5551:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5552:         else:
+
 5553:             # use x fill value
+
+5554:             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]) ))));
+
+5555:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 5556: 
+
+5557:     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, 5557, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5557, __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;
+
 5558: 
+
 5559: 
+
+5560: cpdef sparse_or_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_63sparse_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_63sparse_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_63sparse_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, 5560, __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, 5560, __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, 5560, __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, 5560, __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, 5560, __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, 5560, __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, 5560, __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, 5561, __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, 5562, __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, 5563, __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, 5560, __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, 5561, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5563, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_62sparse_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_62sparse_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, 5560, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5560, __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, 5560, __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;
+}
+
 5561:                                   SparseIndex xindex, int64_t xfill,
+
 5562:                                   int64_t[:] y,
+
 5563:                                   SparseIndex yindex, int64_t yfill):
+
 5564: 
+
+5565:     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) {
+/* … */
+  }
+
+5566:         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, 5566, __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, 5566, __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, 5566, __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, 5566, __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;
+
+5567:                                              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, 5567, __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, 5567, __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, 5567, __pyx_L1_error)
+
+5568:     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)) {
+/* … */
+  }
+
+5569:         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, 5569, __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, 5569, __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, 5569, __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, 5569, __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;
+
+5570:                                            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, 5570, __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, 5570, __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, 5570, __pyx_L1_error)
+
 5571:     else:
+
+5572:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 5572, __pyx_L1_error)
+  }
+
 5573: 
+
 5574: 
+
 5575: @cython.wraparound(False)
+
 5576: @cython.boundscheck(False)
+
+5577: 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;
+}
+
 5578:                                                 BlockIndex xindex,
+
 5579:                                                 uint8_t xfill,
+
 5580:                                                 uint8_t[:] y_,
+
 5581:                                                 BlockIndex yindex,
+
 5582:                                                 uint8_t yfill):
+
 5583:     '''
+
 5584:     Binary operator on BlockIndex objects with fill values
+
 5585:     '''
+
 5586: 
+
 5587:     cdef:
+
 5588:         BlockIndex out_index
+
+5589:         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;
+
+5590:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 5591:         int32_t xloc, yloc
+
+5592:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 5593: 
+
 5594:         uint8_t[:] x, y
+
 5595:         ndarray[uint8_t, ndim=1] out
+
 5596: 
+
 5597:     # to suppress Cython warning
+
+5598:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5599:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5600: 
+
+5601:     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, 5601, __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;
+
+5602:     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, 5602, __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, 5602, __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, 5602, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5602, __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, 5602, __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, 5602, __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, 5602, __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, 5602, __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, 5602, __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, 5602, __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, 5602, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5603: 
+
 5604:     # Wow, what a hack job. Need to do something about this
+
 5605: 
+
 5606:     # walk the two SparseVectors, adding matched locations...
+
+5607:     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;
+
+5608:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5609:             # use y fill value
+
+5610:             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);
+
+5611:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5612: 
+
 5613:             # advance x location
+
+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:             continue
+
      goto __pyx_L3_continue;
+
 5619: 
+
+5620:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5621:             # use x fill value
+
+5622:             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]) ))));
+
+5623:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5624: 
+
 5625:             # advance y location
+
+5626:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5627:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5628:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5629:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+5630:             continue
+
      goto __pyx_L3_continue;
+
 5631: 
+
+5632:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+5633:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 5634: 
+
 5635:         # each index in the out_index had to come from either x, y, or both
+
+5636:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+5637:             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]) ))));
+
+5638:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5639:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5640: 
+
 5641:             # advance both locations
+
+5642:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5643:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5644:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5645:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5646: 
+
+5647:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5648:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5649:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5650:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5651: 
+
+5652:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 5653:             # use y fill value
+
+5654:             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);
+
+5655:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5656: 
+
 5657:             # advance x location
+
+5658:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5659:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5660:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5661:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5662:         else:
+
 5663:             # use x fill value
+
+5664:             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]) ))));
+
+5665:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5666: 
+
 5667:             # advance y location
+
+5668:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5669:             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:;
+  }
+
+5670:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5671:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5672: 
+
+5673:     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, 5673, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5673, __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;
+
 5674: 
+
 5675: 
+
 5676: @cython.wraparound(False)
+
 5677: @cython.boundscheck(False)
+
+5678: 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;
+}
+
 5679:                                               IntIndex xindex,
+
 5680:                                               uint8_t xfill,
+
 5681:                                               uint8_t[:] y_,
+
 5682:                                               IntIndex yindex,
+
 5683:                                               uint8_t yfill):
+
 5684:     cdef:
+
 5685:         IntIndex out_index
+
+5686:         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;
+
 5687:         int32_t xloc, yloc
+
 5688:         int32_t[:] xindices, yindices, out_indices
+
 5689:         uint8_t[:] x, y
+
 5690:         ndarray[uint8_t, ndim=1] out
+
 5691: 
+
 5692:     # suppress Cython compiler warnings due to inlining
+
+5693:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5694:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5695: 
+
 5696:     # need to do this first to know size of result array
+
+5697:     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, 5697, __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;
+
+5698:     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, 5698, __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, 5698, __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, 5698, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5698, __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, 5698, __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, 5698, __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, 5698, __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, 5698, __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, 5698, __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, 5698, __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, 5698, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5699: 
+
+5700:     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, 5700, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5701:     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, 5701, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5702:     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, 5702, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 5703: 
+
 5704:     # walk the two SparseVectors, adding matched locations...
+
+5705:     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;
+
+5706:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5707:             # use x fill value
+
+5708:             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]) ))));
+
+5709:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5710:             continue
+
      goto __pyx_L3_continue;
+
 5711: 
+
+5712:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5713:             # use y fill value
+
+5714:             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);
+
+5715:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5716:             continue
+
      goto __pyx_L3_continue;
+
 5717: 
+
+5718:         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]) )));
+
+5719:         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]) )));
+
 5720: 
+
 5721:         # each index in the out_index had to come from either x, y, or both
+
+5722:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+5723:             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]) ))));
+
+5724:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5725:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5726:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 5727:             # use y fill value
+
+5728:             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);
+
+5729:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5730:         else:
+
 5731:             # use x fill value
+
+5732:             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]) ))));
+
+5733:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 5734: 
+
+5735:     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, 5735, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5735, __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;
+
 5736: 
+
 5737: 
+
+5738: cpdef sparse_or_uint8(uint8_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_65sparse_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_65sparse_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_65sparse_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, 5738, __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, 5738, __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, 5738, __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, 5738, __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, 5738, __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, 5738, __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, 5738, __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, 5739, __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, 5740, __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, 5741, __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, 5738, __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, 5739, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5741, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_64sparse_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_64sparse_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, 5738, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5738, __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, 5738, __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;
+}
+
 5739:                                   SparseIndex xindex, uint8_t xfill,
+
 5740:                                   uint8_t[:] y,
+
 5741:                                   SparseIndex yindex, uint8_t yfill):
+
 5742: 
+
+5743:     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) {
+/* … */
+  }
+
+5744:         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, 5744, __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, 5744, __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, 5744, __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, 5744, __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;
+
+5745:                                              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, 5745, __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, 5745, __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, 5745, __pyx_L1_error)
+
+5746:     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)) {
+/* … */
+  }
+
+5747:         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, 5747, __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, 5747, __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, 5747, __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, 5747, __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;
+
+5748:                                            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, 5748, __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, 5748, __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, 5748, __pyx_L1_error)
+
 5749:     else:
+
+5750:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 5750, __pyx_L1_error)
+  }
+
 5751: 
+
 5752: 
+
 5753: @cython.wraparound(False)
+
 5754: @cython.boundscheck(False)
+
+5755: 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;
+}
+
 5756:                                                 BlockIndex xindex,
+
 5757:                                                 int64_t xfill,
+
 5758:                                                 int64_t[:] y_,
+
 5759:                                                 BlockIndex yindex,
+
 5760:                                                 int64_t yfill):
+
 5761:     '''
+
 5762:     Binary operator on BlockIndex objects with fill values
+
 5763:     '''
+
 5764: 
+
 5765:     cdef:
+
 5766:         BlockIndex out_index
+
+5767:         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;
+
+5768:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 5769:         int32_t xloc, yloc
+
+5770:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 5771: 
+
 5772:         int64_t[:] x, y
+
 5773:         ndarray[uint8_t, ndim=1] out
+
 5774: 
+
 5775:     # to suppress Cython warning
+
+5776:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5777:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5778: 
+
+5779:     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, 5779, __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;
+
+5780:     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, 5780, __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, 5780, __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, 5780, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5780, __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, 5780, __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, 5780, __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, 5780, __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, 5780, __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, 5780, __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, 5780, __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, 5780, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5781: 
+
 5782:     # Wow, what a hack job. Need to do something about this
+
 5783: 
+
 5784:     # walk the two SparseVectors, adding matched locations...
+
+5785:     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;
+
+5786:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5787:             # use y fill value
+
+5788:             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);
+
+5789:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5790: 
+
 5791:             # advance x location
+
+5792:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5793:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5794:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5795:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+5796:             continue
+
      goto __pyx_L3_continue;
+
 5797: 
+
+5798:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5799:             # use x fill value
+
+5800:             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]) ))));
+
+5801:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5802: 
+
 5803:             # advance y location
+
+5804:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5805:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5806:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5807:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+5808:             continue
+
      goto __pyx_L3_continue;
+
 5809: 
+
+5810:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+5811:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 5812: 
+
 5813:         # each index in the out_index had to come from either x, y, or both
+
+5814:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+5815:             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]) ))));
+
+5816:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5817:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5818: 
+
 5819:             # advance both locations
+
+5820:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5821:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5822:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5823:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5824: 
+
+5825:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5826:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5827:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5828:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5829: 
+
+5830:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 5831:             # use y fill value
+
+5832:             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);
+
+5833:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5834: 
+
 5835:             # advance x location
+
+5836:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5837:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5838:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5839:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 5840:         else:
+
 5841:             # use x fill value
+
+5842:             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]) ))));
+
+5843:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5844: 
+
 5845:             # advance y location
+
+5846:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5847:             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:;
+  }
+
+5848:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5849:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 5850: 
+
+5851:     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, 5851, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5851, __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;
+
 5852: 
+
 5853: 
+
 5854: @cython.wraparound(False)
+
 5855: @cython.boundscheck(False)
+
+5856: 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;
+}
+
 5857:                                               IntIndex xindex,
+
 5858:                                               int64_t xfill,
+
 5859:                                               int64_t[:] y_,
+
 5860:                                               IntIndex yindex,
+
 5861:                                               int64_t yfill):
+
 5862:     cdef:
+
 5863:         IntIndex out_index
+
+5864:         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;
+
 5865:         int32_t xloc, yloc
+
 5866:         int32_t[:] xindices, yindices, out_indices
+
 5867:         int64_t[:] x, y
+
 5868:         ndarray[uint8_t, ndim=1] out
+
 5869: 
+
 5870:     # suppress Cython compiler warnings due to inlining
+
+5871:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5872:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5873: 
+
 5874:     # need to do this first to know size of result array
+
+5875:     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, 5875, __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;
+
+5876:     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, 5876, __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, 5876, __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, 5876, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5876, __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, 5876, __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, 5876, __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, 5876, __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, 5876, __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, 5876, __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, 5876, __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, 5876, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5877: 
+
+5878:     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, 5878, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5879:     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, 5879, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+5880:     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, 5880, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 5881: 
+
 5882:     # walk the two SparseVectors, adding matched locations...
+
+5883:     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;
+
+5884:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5885:             # use x fill value
+
+5886:             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]) ))));
+
+5887:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5888:             continue
+
      goto __pyx_L3_continue;
+
 5889: 
+
+5890:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 5891:             # use y fill value
+
+5892:             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);
+
+5893:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5894:             continue
+
      goto __pyx_L3_continue;
+
 5895: 
+
+5896:         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]) )));
+
+5897:         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]) )));
+
 5898: 
+
 5899:         # each index in the out_index had to come from either x, y, or both
+
+5900:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+5901:             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]) ))));
+
+5902:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5903:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+5904:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 5905:             # use y fill value
+
+5906:             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);
+
+5907:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5908:         else:
+
 5909:             # use x fill value
+
+5910:             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]) ))));
+
+5911:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 5912: 
+
+5913:     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, 5913, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5913, __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;
+
 5914: 
+
 5915: 
+
+5916: cpdef sparse_xor_int64(int64_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_67sparse_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_67sparse_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_67sparse_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, 5916, __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, 5916, __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, 5916, __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, 5916, __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, 5916, __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, 5916, __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, 5916, __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, 5917, __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, 5918, __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, 5919, __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, 5916, __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, 5917, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5919, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_66sparse_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_66sparse_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, 5916, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5916, __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, 5916, __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;
+}
+
 5917:                                   SparseIndex xindex, int64_t xfill,
+
 5918:                                   int64_t[:] y,
+
 5919:                                   SparseIndex yindex, int64_t yfill):
+
 5920: 
+
+5921:     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) {
+/* … */
+  }
+
+5922:         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, 5922, __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, 5922, __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, 5922, __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, 5922, __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;
+
+5923:                                              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, 5923, __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, 5923, __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, 5923, __pyx_L1_error)
+
+5924:     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)) {
+/* … */
+  }
+
+5925:         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, 5925, __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, 5925, __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, 5925, __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, 5925, __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;
+
+5926:                                            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, 5926, __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, 5926, __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, 5926, __pyx_L1_error)
+
 5927:     else:
+
+5928:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 5928, __pyx_L1_error)
+  }
+
 5929: 
+
 5930: 
+
 5931: @cython.wraparound(False)
+
 5932: @cython.boundscheck(False)
+
+5933: 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;
+}
+
 5934:                                                 BlockIndex xindex,
+
 5935:                                                 uint8_t xfill,
+
 5936:                                                 uint8_t[:] y_,
+
 5937:                                                 BlockIndex yindex,
+
 5938:                                                 uint8_t yfill):
+
 5939:     '''
+
 5940:     Binary operator on BlockIndex objects with fill values
+
 5941:     '''
+
 5942: 
+
 5943:     cdef:
+
 5944:         BlockIndex out_index
+
+5945:         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;
+
+5946:         int32_t xbp = 0, ybp = 0 # block positions
+
  __pyx_v_xbp = 0;
+  __pyx_v_ybp = 0;
+
 5947:         int32_t xloc, yloc
+
+5948:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
+
  __pyx_v_xblock = 0;
+  __pyx_v_yblock = 0;
+
 5949: 
+
 5950:         uint8_t[:] x, y
+
 5951:         ndarray[uint8_t, ndim=1] out
+
 5952: 
+
 5953:     # to suppress Cython warning
+
+5954:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+5955:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 5956: 
+
+5957:     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, 5957, __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;
+
+5958:     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, 5958, __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, 5958, __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, 5958, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5958, __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, 5958, __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, 5958, __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, 5958, __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, 5958, __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, 5958, __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, 5958, __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, 5958, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 5959: 
+
 5960:     # Wow, what a hack job. Need to do something about this
+
 5961: 
+
 5962:     # walk the two SparseVectors, adding matched locations...
+
+5963:     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;
+
+5964:         if yblock == yindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5965:             # use y fill value
+
+5966:             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);
+
+5967:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 5968: 
+
 5969:             # advance x location
+
+5970:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5971:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5972:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+5973:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
+5974:             continue
+
      goto __pyx_L3_continue;
+
 5975: 
+
+5976:         if xblock == xindex.nblocks:
+
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
+    if (__pyx_t_14) {
+/* … */
+    }
+
 5977:             # use x fill value
+
+5978:             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]) ))));
+
+5979:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5980: 
+
 5981:             # advance y location
+
+5982:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+5983:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+5984:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+5985:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
+5986:             continue
+
      goto __pyx_L3_continue;
+
 5987: 
+
+5988:         yloc = yindex.locbuf[yblock] + ybp
+
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
+
+5989:         xloc = xindex.locbuf[xblock] + xbp
+
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
+
 5990: 
+
 5991:         # each index in the out_index had to come from either x, y, or both
+
+5992:         if xloc == yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
+5993:             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]) ))));
+
+5994:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+5995:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 5996: 
+
 5997:             # advance both locations
+
+5998:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+5999:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+6000:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+6001:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 6002: 
+
+6003:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+6004:             if ybp == yindex.lenbuf[yblock]:
+
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+6005:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+6006:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 6007: 
+
+6008:         elif xloc < yloc:
+
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_14) {
+/* … */
+      goto __pyx_L9;
+    }
+
 6009:             # use y fill value
+
+6010:             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);
+
+6011:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 6012: 
+
 6013:             # advance x location
+
+6014:             xbp += 1
+
      __pyx_v_xbp = (__pyx_v_xbp + 1);
+
+6015:             if xbp == xindex.lenbuf[xblock]:
+
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
+      if (__pyx_t_14) {
+/* … */
+      }
+
+6016:                 xblock += 1
+
        __pyx_v_xblock = (__pyx_v_xblock + 1);
+
+6017:                 xbp = 0
+
        __pyx_v_xbp = 0;
+
 6018:         else:
+
 6019:             # use x fill value
+
+6020:             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]) ))));
+
+6021:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
 6022: 
+
 6023:             # advance y location
+
+6024:             ybp += 1
+
      __pyx_v_ybp = (__pyx_v_ybp + 1);
+
+6025:             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:;
+  }
+
+6026:                 yblock += 1
+
        __pyx_v_yblock = (__pyx_v_yblock + 1);
+
+6027:                 ybp = 0
+
        __pyx_v_ybp = 0;
+
 6028: 
+
+6029:     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, 6029, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6029, __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;
+
 6030: 
+
 6031: 
+
 6032: @cython.wraparound(False)
+
 6033: @cython.boundscheck(False)
+
+6034: 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;
+}
+
 6035:                                               IntIndex xindex,
+
 6036:                                               uint8_t xfill,
+
 6037:                                               uint8_t[:] y_,
+
 6038:                                               IntIndex yindex,
+
 6039:                                               uint8_t yfill):
+
 6040:     cdef:
+
 6041:         IntIndex out_index
+
+6042:         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;
+
 6043:         int32_t xloc, yloc
+
 6044:         int32_t[:] xindices, yindices, out_indices
+
 6045:         uint8_t[:] x, y
+
 6046:         ndarray[uint8_t, ndim=1] out
+
 6047: 
+
 6048:     # suppress Cython compiler warnings due to inlining
+
+6049:     x = x_
+
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
+  __pyx_v_x = __pyx_v_x_;
+
+6050:     y = y_
+
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
+  __pyx_v_y = __pyx_v_y_;
+
 6051: 
+
 6052:     # need to do this first to know size of result array
+
+6053:     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, 6053, __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;
+
+6054:     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, 6054, __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, 6054, __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, 6054, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_1);
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6054, __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, 6054, __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, 6054, __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, 6054, __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, 6054, __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, 6054, __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, 6054, __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, 6054, __pyx_L1_error)
+  }
+  __pyx_t_6 = 0;
+  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
+  __pyx_t_5 = 0;
+
 6055: 
+
+6056:     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, 6056, __pyx_L1_error)
+  __pyx_v_xindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+6057:     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, 6057, __pyx_L1_error)
+  __pyx_v_yindices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
+6058:     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, 6058, __pyx_L1_error)
+  __pyx_v_out_indices = __pyx_t_11;
+  __pyx_t_11.memview = NULL;
+  __pyx_t_11.data = NULL;
+
 6059: 
+
 6060:     # walk the two SparseVectors, adding matched locations...
+
+6061:     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;
+
+6062:         if xi == xindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 6063:             # use x fill value
+
+6064:             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]) ))));
+
+6065:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+6066:             continue
+
      goto __pyx_L3_continue;
+
 6067: 
+
+6068:         if yi == yindex.npoints:
+
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
+    if (__pyx_t_15) {
+/* … */
+    }
+
 6069:             # use y fill value
+
+6070:             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);
+
+6071:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+6072:             continue
+
      goto __pyx_L3_continue;
+
 6073: 
+
+6074:         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]) )));
+
+6075:         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]) )));
+
 6076: 
+
 6077:         # each index in the out_index had to come from either x, y, or both
+
+6078:         if xloc == yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
+6079:             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]) ))));
+
+6080:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
+6081:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+
+6082:         elif xloc < yloc:
+
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
+    if (__pyx_t_15) {
+/* … */
+      goto __pyx_L7;
+    }
+
 6083:             # use y fill value
+
+6084:             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);
+
+6085:             xi += 1
+
      __pyx_v_xi = (__pyx_v_xi + 1);
+
 6086:         else:
+
 6087:             # use x fill value
+
+6088:             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]) ))));
+
+6089:             yi += 1
+
      __pyx_v_yi = (__pyx_v_yi + 1);
+    }
+    __pyx_L7:;
+    __pyx_L3_continue:;
+  }
+
 6090: 
+
+6091:     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, 6091, __pyx_L1_error)
+  __Pyx_GOTREF(__pyx_t_5);
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6091, __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;
+
 6092: 
+
 6093: 
+
+6094: cpdef sparse_xor_uint8(uint8_t[:] x,
+
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_69sparse_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_69sparse_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
+static PyObject *__pyx_pw_6pandas_5_libs_6sparse_69sparse_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, 6094, __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, 6094, __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, 6094, __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, 6094, __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, 6094, __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, 6094, __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, 6094, __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, 6095, __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, 6096, __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, 6097, __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, 6094, __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, 6095, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 6097, __pyx_L1_error)
+  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_68sparse_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_68sparse_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, 6094, __pyx_L1_error) }
+  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 6094, __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, 6094, __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;
+}
+
 6095:                                   SparseIndex xindex, uint8_t xfill,
+
 6096:                                   uint8_t[:] y,
+
 6097:                                   SparseIndex yindex, uint8_t yfill):
+
 6098: 
+
+6099:     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) {
+/* … */
+  }
+
+6100:         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, 6100, __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, 6100, __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, 6100, __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, 6100, __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;
+
+6101:                                              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, 6101, __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, 6101, __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, 6101, __pyx_L1_error)
+
+6102:     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)) {
+/* … */
+  }
+
+6103:         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, 6103, __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, 6103, __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, 6103, __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, 6103, __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;
+
+6104:                                            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, 6104, __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, 6104, __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, 6104, __pyx_L1_error)
+
 6105:     else:
+
+6106:         raise NotImplementedError
+
  /*else*/ {
+    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
+    __PYX_ERR(2, 6106, __pyx_L1_error)
+  }
+
From aeb2ee53104480fe6230d8c326443189c8f00cf4 Mon Sep 17 00:00:00 2001 From: Matthew Zeitlin Date: Fri, 17 Sep 2021 17:03:07 -0400 Subject: [PATCH 2/4] Remove accidentally added file --- pandas/_libs/sparse.html | 10324 --------- pandas/_libs/sparse_op_helper.html | 30036 --------------------------- 2 files changed, 40360 deletions(-) delete mode 100644 pandas/_libs/sparse.html delete mode 100644 pandas/_libs/sparse_op_helper.html diff --git a/pandas/_libs/sparse.html b/pandas/_libs/sparse.html deleted file mode 100644 index 4c6e1b9ae3134..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, -1); 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_s_IntIndex);
-  __pyx_v_output = __pyx_n_s_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 = PyNumber_InPlaceAdd(__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, __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_s_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_s_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_s_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_s_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_s_BlockIndex);
-  __pyx_v_output = __pyx_n_s_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 = PyNumber_InPlaceAdd(__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, __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 = PyNumber_InPlaceAdd(__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, __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_s_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_s_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_s_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_71make_mask_object_ndarray(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyMethodDef __pyx_mdef_6pandas_5_libs_6sparse_71make_mask_object_ndarray = {"make_mask_object_ndarray", (PyCFunction)(void*)(PyCFunctionWithKeywords)__pyx_pw_6pandas_5_libs_6sparse_71make_mask_object_ndarray, METH_VARARGS|METH_KEYWORDS, 0};
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_71make_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_70make_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_70make_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_71make_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 8dd11b1b0bb8b..0000000000000 --- a/pandas/_libs/sparse_op_helper.html +++ /dev/null @@ -1,30036 +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 = (((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) / __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: @cython.wraparound(False)
-
 0236: @cython.boundscheck(False)
-
+0237: 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;
-}
-
 0238:                                                 BlockIndex xindex,
-
 0239:                                                 int64_t xfill,
-
 0240:                                                 int64_t[:] y_,
-
 0241:                                                 BlockIndex yindex,
-
 0242:                                                 int64_t yfill):
-
 0243:     '''
-
 0244:     Binary operator on BlockIndex objects with fill values
-
 0245:     '''
-
 0246: 
-
 0247:     cdef:
-
 0248:         BlockIndex out_index
-
+0249:         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;
-
+0250:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 0251:         int32_t xloc, yloc
-
+0252:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 0253: 
-
 0254:         int64_t[:] x, y
-
 0255:         ndarray[int64_t, ndim=1] out
-
 0256: 
-
 0257:     # to suppress Cython warning
-
+0258:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0259:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0260: 
-
+0261:     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, 261, __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;
-
+0262:     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, 262, __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, 262, __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, 262, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 262, __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, 262, __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, 262, __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, 262, __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, 262, __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, 262, __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, 262, __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, 262, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0263: 
-
 0264:     # Wow, what a hack job. Need to do something about this
-
 0265: 
-
 0266:     # walk the two SparseVectors, adding matched locations...
-
+0267:     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;
-
+0268:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0269:             # use y fill value
-
+0270:             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);
-
+0271:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0272: 
-
 0273:             # advance x location
-
+0274:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0275:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0276:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0277:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+0278:             continue
-
      goto __pyx_L3_continue;
-
 0279: 
-
+0280:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0281:             # use x fill value
-
+0282:             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]) ))));
-
+0283:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0284: 
-
 0285:             # advance y location
-
+0286:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0287:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0288:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0289:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+0290:             continue
-
      goto __pyx_L3_continue;
-
 0291: 
-
+0292:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+0293:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 0294: 
-
 0295:         # each index in the out_index had to come from either x, y, or both
-
+0296:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+0297:             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]) ))));
-
+0298:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0299:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0300: 
-
 0301:             # advance both locations
-
+0302:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0303:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0304:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0305:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0306: 
-
+0307:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0308:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0309:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0310:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0311: 
-
+0312:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 0313:             # use y fill value
-
+0314:             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);
-
+0315:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0316: 
-
 0317:             # advance x location
-
+0318:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0319:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0320:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0321:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0322:         else:
-
 0323:             # use x fill value
-
+0324:             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]) ))));
-
+0325:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0326: 
-
 0327:             # advance y location
-
+0328:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0329:             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:;
-  }
-
+0330:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0331:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0332: 
-
+0333:     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, 333, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 333, __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;
-
 0334: 
-
 0335: 
-
 0336: @cython.wraparound(False)
-
 0337: @cython.boundscheck(False)
-
+0338: 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;
-}
-
 0339:                                               IntIndex xindex,
-
 0340:                                               int64_t xfill,
-
 0341:                                               int64_t[:] y_,
-
 0342:                                               IntIndex yindex,
-
 0343:                                               int64_t yfill):
-
 0344:     cdef:
-
 0345:         IntIndex out_index
-
+0346:         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;
-
 0347:         int32_t xloc, yloc
-
 0348:         int32_t[:] xindices, yindices, out_indices
-
 0349:         int64_t[:] x, y
-
 0350:         ndarray[int64_t, ndim=1] out
-
 0351: 
-
 0352:     # suppress Cython compiler warnings due to inlining
-
+0353:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0354:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0355: 
-
 0356:     # need to do this first to know size of result array
-
+0357:     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, 357, __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;
-
+0358:     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, 358, __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, 358, __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, 358, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 358, __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, 358, __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, 358, __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, 358, __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, 358, __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, 358, __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, 358, __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, 358, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0359: 
-
+0360:     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, 360, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0361:     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, 361, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0362:     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, 362, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 0363: 
-
 0364:     # walk the two SparseVectors, adding matched locations...
-
+0365:     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;
-
+0366:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0367:             # use x fill value
-
+0368:             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]) ))));
-
+0369:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0370:             continue
-
      goto __pyx_L3_continue;
-
 0371: 
-
+0372:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0373:             # use y fill value
-
+0374:             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);
-
+0375:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0376:             continue
-
      goto __pyx_L3_continue;
-
 0377: 
-
+0378:         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]) )));
-
+0379:         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]) )));
-
 0380: 
-
 0381:         # each index in the out_index had to come from either x, y, or both
-
+0382:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+0383:             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]) ))));
-
+0384:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0385:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0386:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 0387:             # use y fill value
-
+0388:             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);
-
+0389:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0390:         else:
-
 0391:             # use x fill value
-
+0392:             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]) ))));
-
+0393:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 0394: 
-
+0395:     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, 395, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 395, __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;
-
 0396: 
-
 0397: 
-
+0398: cpdef sparse_add_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_5sparse_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_5sparse_add_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_5sparse_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, 398, __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, 398, __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, 398, __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, 398, __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, 398, __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, 398, __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, 398, __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, 399, __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, 400, __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, 401, __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, 398, __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, 399, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 401, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_4sparse_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_4sparse_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, 398, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 398, __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, 398, __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;
-}
-
 0399:                                   SparseIndex xindex, int64_t xfill,
-
 0400:                                   int64_t[:] y,
-
 0401:                                   SparseIndex yindex, int64_t yfill):
-
 0402: 
-
+0403:     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) {
-/* … */
-  }
-
+0404:         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, 404, __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, 404, __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, 404, __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, 404, __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;
-
+0405:                                              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, 405, __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, 405, __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, 405, __pyx_L1_error)
-
+0406:     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)) {
-/* … */
-  }
-
+0407:         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, 407, __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, 407, __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, 407, __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, 407, __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;
-
+0408:                                            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, 408, __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, 408, __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, 408, __pyx_L1_error)
-
 0409:     else:
-
+0410:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 410, __pyx_L1_error)
-  }
-
 0411: 
-
 0412: 
-
 0413: @cython.wraparound(False)
-
 0414: @cython.boundscheck(False)
-
+0415: 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;
-}
-
 0416:                                                 BlockIndex xindex,
-
 0417:                                                 float64_t xfill,
-
 0418:                                                 float64_t[:] y_,
-
 0419:                                                 BlockIndex yindex,
-
 0420:                                                 float64_t yfill):
-
 0421:     '''
-
 0422:     Binary operator on BlockIndex objects with fill values
-
 0423:     '''
-
 0424: 
-
 0425:     cdef:
-
 0426:         BlockIndex out_index
-
+0427:         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;
-
+0428:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 0429:         int32_t xloc, yloc
-
+0430:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 0431: 
-
 0432:         float64_t[:] x, y
-
 0433:         ndarray[float64_t, ndim=1] out
-
 0434: 
-
 0435:     # to suppress Cython warning
-
+0436:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0437:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0438: 
-
+0439:     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, 439, __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;
-
+0440:     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, 440, __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, 440, __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, 440, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 440, __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, 440, __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, 440, __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, 440, __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, 440, __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, 440, __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, 440, __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, 440, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0441: 
-
 0442:     # Wow, what a hack job. Need to do something about this
-
 0443: 
-
 0444:     # walk the two SparseVectors, adding matched locations...
-
+0445:     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;
-
+0446:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0447:             # use y fill value
-
+0448:             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);
-
+0449:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0450: 
-
 0451:             # advance x location
-
+0452:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0453:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0454:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0455:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+0456:             continue
-
      goto __pyx_L3_continue;
-
 0457: 
-
+0458:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0459:             # use x fill value
-
+0460:             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]) ))));
-
+0461:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0462: 
-
 0463:             # advance y location
-
+0464:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0465:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0466:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0467:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+0468:             continue
-
      goto __pyx_L3_continue;
-
 0469: 
-
+0470:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+0471:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 0472: 
-
 0473:         # each index in the out_index had to come from either x, y, or both
-
+0474:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+0475:             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]) ))));
-
+0476:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0477:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0478: 
-
 0479:             # advance both locations
-
+0480:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0481:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0482:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0483:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0484: 
-
+0485:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0486:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0487:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0488:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0489: 
-
+0490:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 0491:             # use y fill value
-
+0492:             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);
-
+0493:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0494: 
-
 0495:             # advance x location
-
+0496:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0497:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0498:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0499:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0500:         else:
-
 0501:             # use x fill value
-
+0502:             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]) ))));
-
+0503:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0504: 
-
 0505:             # advance y location
-
+0506:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0507:             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:;
-  }
-
+0508:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0509:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0510: 
-
+0511:     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, 511, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 511, __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;
-
 0512: 
-
 0513: 
-
 0514: @cython.wraparound(False)
-
 0515: @cython.boundscheck(False)
-
+0516: 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;
-}
-
 0517:                                               IntIndex xindex,
-
 0518:                                               float64_t xfill,
-
 0519:                                               float64_t[:] y_,
-
 0520:                                               IntIndex yindex,
-
 0521:                                               float64_t yfill):
-
 0522:     cdef:
-
 0523:         IntIndex out_index
-
+0524:         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;
-
 0525:         int32_t xloc, yloc
-
 0526:         int32_t[:] xindices, yindices, out_indices
-
 0527:         float64_t[:] x, y
-
 0528:         ndarray[float64_t, ndim=1] out
-
 0529: 
-
 0530:     # suppress Cython compiler warnings due to inlining
-
+0531:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0532:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0533: 
-
 0534:     # need to do this first to know size of result array
-
+0535:     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, 535, __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;
-
+0536:     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, 536, __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, 536, __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, 536, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 536, __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, 536, __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, 536, __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, 536, __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, 536, __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, 536, __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, 536, __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, 536, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0537: 
-
+0538:     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, 538, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0539:     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, 539, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0540:     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, 540, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 0541: 
-
 0542:     # walk the two SparseVectors, adding matched locations...
-
+0543:     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;
-
+0544:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0545:             # use x fill value
-
+0546:             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]) ))));
-
+0547:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0548:             continue
-
      goto __pyx_L3_continue;
-
 0549: 
-
+0550:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0551:             # use y fill value
-
+0552:             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);
-
+0553:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0554:             continue
-
      goto __pyx_L3_continue;
-
 0555: 
-
+0556:         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]) )));
-
+0557:         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]) )));
-
 0558: 
-
 0559:         # each index in the out_index had to come from either x, y, or both
-
+0560:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+0561:             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]) ))));
-
+0562:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0563:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0564:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 0565:             # use y fill value
-
+0566:             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);
-
+0567:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0568:         else:
-
 0569:             # use x fill value
-
+0570:             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]) ))));
-
+0571:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 0572: 
-
+0573:     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, 573, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 573, __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;
-
 0574: 
-
 0575: 
-
+0576: cpdef sparse_sub_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_7sparse_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_7sparse_sub_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_7sparse_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, 576, __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, 576, __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, 576, __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, 576, __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, 576, __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, 576, __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, 576, __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, 577, __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, 578, __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, 579, __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, 576, __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, 577, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 579, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_6sparse_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_6sparse_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, 576, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 576, __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, 576, __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;
-}
-
 0577:                                   SparseIndex xindex, float64_t xfill,
-
 0578:                                   float64_t[:] y,
-
 0579:                                   SparseIndex yindex, float64_t yfill):
-
 0580: 
-
+0581:     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) {
-/* … */
-  }
-
+0582:         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, 582, __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, 582, __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, 582, __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, 582, __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;
-
+0583:                                              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, 583, __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, 583, __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, 583, __pyx_L1_error)
-
+0584:     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)) {
-/* … */
-  }
-
+0585:         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, 585, __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, 585, __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, 585, __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, 585, __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;
-
+0586:                                            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, 586, __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, 586, __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, 586, __pyx_L1_error)
-
 0587:     else:
-
+0588:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 588, __pyx_L1_error)
-  }
-
 0589: 
-
 0590: 
-
 0591: @cython.wraparound(False)
-
 0592: @cython.boundscheck(False)
-
+0593: 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;
-}
-
 0594:                                                 BlockIndex xindex,
-
 0595:                                                 int64_t xfill,
-
 0596:                                                 int64_t[:] y_,
-
 0597:                                                 BlockIndex yindex,
-
 0598:                                                 int64_t yfill):
-
 0599:     '''
-
 0600:     Binary operator on BlockIndex objects with fill values
-
 0601:     '''
-
 0602: 
-
 0603:     cdef:
-
 0604:         BlockIndex out_index
-
+0605:         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;
-
+0606:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 0607:         int32_t xloc, yloc
-
+0608:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 0609: 
-
 0610:         int64_t[:] x, y
-
 0611:         ndarray[int64_t, ndim=1] out
-
 0612: 
-
 0613:     # to suppress Cython warning
-
+0614:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0615:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0616: 
-
+0617:     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, 617, __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;
-
+0618:     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, 618, __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, 618, __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, 618, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 618, __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, 618, __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, 618, __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, 618, __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, 618, __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, 618, __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, 618, __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, 618, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0619: 
-
 0620:     # Wow, what a hack job. Need to do something about this
-
 0621: 
-
 0622:     # walk the two SparseVectors, adding matched locations...
-
+0623:     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;
-
+0624:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0625:             # use y fill value
-
+0626:             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);
-
+0627:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0628: 
-
 0629:             # advance x location
-
+0630:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0631:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0632:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0633:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+0634:             continue
-
      goto __pyx_L3_continue;
-
 0635: 
-
+0636:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0637:             # use x fill value
-
+0638:             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]) ))));
-
+0639:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0640: 
-
 0641:             # advance y location
-
+0642:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0643:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0644:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0645:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+0646:             continue
-
      goto __pyx_L3_continue;
-
 0647: 
-
+0648:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+0649:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 0650: 
-
 0651:         # each index in the out_index had to come from either x, y, or both
-
+0652:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+0653:             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]) ))));
-
+0654:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0655:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0656: 
-
 0657:             # advance both locations
-
+0658:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0659:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0660:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0661:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0662: 
-
+0663:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0664:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0665:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0666:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0667: 
-
+0668:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 0669:             # use y fill value
-
+0670:             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);
-
+0671:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0672: 
-
 0673:             # advance x location
-
+0674:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0675:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0676:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0677:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0678:         else:
-
 0679:             # use x fill value
-
+0680:             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]) ))));
-
+0681:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0682: 
-
 0683:             # advance y location
-
+0684:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0685:             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:;
-  }
-
+0686:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0687:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0688: 
-
+0689:     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, 689, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 689, __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;
-
 0690: 
-
 0691: 
-
 0692: @cython.wraparound(False)
-
 0693: @cython.boundscheck(False)
-
+0694: 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;
-}
-
 0695:                                               IntIndex xindex,
-
 0696:                                               int64_t xfill,
-
 0697:                                               int64_t[:] y_,
-
 0698:                                               IntIndex yindex,
-
 0699:                                               int64_t yfill):
-
 0700:     cdef:
-
 0701:         IntIndex out_index
-
+0702:         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;
-
 0703:         int32_t xloc, yloc
-
 0704:         int32_t[:] xindices, yindices, out_indices
-
 0705:         int64_t[:] x, y
-
 0706:         ndarray[int64_t, ndim=1] out
-
 0707: 
-
 0708:     # suppress Cython compiler warnings due to inlining
-
+0709:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0710:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0711: 
-
 0712:     # need to do this first to know size of result array
-
+0713:     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, 713, __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;
-
+0714:     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, 714, __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, 714, __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, 714, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 714, __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, 714, __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, 714, __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, 714, __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, 714, __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, 714, __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, 714, __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, 714, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0715: 
-
+0716:     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, 716, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0717:     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, 717, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0718:     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, 718, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 0719: 
-
 0720:     # walk the two SparseVectors, adding matched locations...
-
+0721:     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;
-
+0722:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0723:             # use x fill value
-
+0724:             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]) ))));
-
+0725:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0726:             continue
-
      goto __pyx_L3_continue;
-
 0727: 
-
+0728:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0729:             # use y fill value
-
+0730:             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);
-
+0731:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0732:             continue
-
      goto __pyx_L3_continue;
-
 0733: 
-
+0734:         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]) )));
-
+0735:         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]) )));
-
 0736: 
-
 0737:         # each index in the out_index had to come from either x, y, or both
-
+0738:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+0739:             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]) ))));
-
+0740:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0741:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0742:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 0743:             # use y fill value
-
+0744:             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);
-
+0745:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0746:         else:
-
 0747:             # use x fill value
-
+0748:             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]) ))));
-
+0749:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 0750: 
-
+0751:     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, 751, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 751, __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;
-
 0752: 
-
 0753: 
-
+0754: cpdef sparse_sub_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_9sparse_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_9sparse_sub_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_9sparse_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, 754, __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, 754, __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, 754, __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, 754, __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, 754, __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, 754, __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, 754, __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, 755, __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, 756, __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, 757, __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, 754, __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, 755, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 757, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_8sparse_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_8sparse_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, 754, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 754, __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, 754, __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;
-}
-
 0755:                                   SparseIndex xindex, int64_t xfill,
-
 0756:                                   int64_t[:] y,
-
 0757:                                   SparseIndex yindex, int64_t yfill):
-
 0758: 
-
+0759:     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) {
-/* … */
-  }
-
+0760:         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, 760, __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, 760, __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, 760, __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, 760, __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;
-
+0761:                                              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, 761, __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, 761, __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, 761, __pyx_L1_error)
-
+0762:     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)) {
-/* … */
-  }
-
+0763:         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, 763, __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, 763, __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, 763, __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, 763, __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;
-
+0764:                                            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, 764, __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, 764, __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, 764, __pyx_L1_error)
-
 0765:     else:
-
+0766:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 766, __pyx_L1_error)
-  }
-
 0767: 
-
 0768: 
-
 0769: @cython.wraparound(False)
-
 0770: @cython.boundscheck(False)
-
+0771: 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;
-}
-
 0772:                                                 BlockIndex xindex,
-
 0773:                                                 float64_t xfill,
-
 0774:                                                 float64_t[:] y_,
-
 0775:                                                 BlockIndex yindex,
-
 0776:                                                 float64_t yfill):
-
 0777:     '''
-
 0778:     Binary operator on BlockIndex objects with fill values
-
 0779:     '''
-
 0780: 
-
 0781:     cdef:
-
 0782:         BlockIndex out_index
-
+0783:         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;
-
+0784:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 0785:         int32_t xloc, yloc
-
+0786:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 0787: 
-
 0788:         float64_t[:] x, y
-
 0789:         ndarray[float64_t, ndim=1] out
-
 0790: 
-
 0791:     # to suppress Cython warning
-
+0792:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0793:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0794: 
-
+0795:     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, 795, __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;
-
+0796:     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, 796, __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, 796, __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, 796, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 796, __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, 796, __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, 796, __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, 796, __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, 796, __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, 796, __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, 796, __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, 796, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0797: 
-
 0798:     # Wow, what a hack job. Need to do something about this
-
 0799: 
-
 0800:     # walk the two SparseVectors, adding matched locations...
-
+0801:     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;
-
+0802:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0803:             # use y fill value
-
+0804:             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);
-
+0805:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0806: 
-
 0807:             # advance x location
-
+0808:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0809:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0810:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0811:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+0812:             continue
-
      goto __pyx_L3_continue;
-
 0813: 
-
+0814:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0815:             # use x fill value
-
+0816:             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]) ))));
-
+0817:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0818: 
-
 0819:             # advance y location
-
+0820:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0821:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0822:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0823:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+0824:             continue
-
      goto __pyx_L3_continue;
-
 0825: 
-
+0826:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+0827:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 0828: 
-
 0829:         # each index in the out_index had to come from either x, y, or both
-
+0830:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+0831:             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]) ))));
-
+0832:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0833:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0834: 
-
 0835:             # advance both locations
-
+0836:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0837:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0838:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0839:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0840: 
-
+0841:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0842:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0843:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0844:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0845: 
-
+0846:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 0847:             # use y fill value
-
+0848:             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);
-
+0849:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0850: 
-
 0851:             # advance x location
-
+0852:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0853:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0854:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0855:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 0856:         else:
-
 0857:             # use x fill value
-
+0858:             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]) ))));
-
+0859:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0860: 
-
 0861:             # advance y location
-
+0862:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0863:             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:;
-  }
-
+0864:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+0865:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 0866: 
-
+0867:     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, 867, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 867, __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;
-
 0868: 
-
 0869: 
-
 0870: @cython.wraparound(False)
-
 0871: @cython.boundscheck(False)
-
+0872: 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;
-}
-
 0873:                                               IntIndex xindex,
-
 0874:                                               float64_t xfill,
-
 0875:                                               float64_t[:] y_,
-
 0876:                                               IntIndex yindex,
-
 0877:                                               float64_t yfill):
-
 0878:     cdef:
-
 0879:         IntIndex out_index
-
+0880:         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;
-
 0881:         int32_t xloc, yloc
-
 0882:         int32_t[:] xindices, yindices, out_indices
-
 0883:         float64_t[:] x, y
-
 0884:         ndarray[float64_t, ndim=1] out
-
 0885: 
-
 0886:     # suppress Cython compiler warnings due to inlining
-
+0887:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0888:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0889: 
-
 0890:     # need to do this first to know size of result array
-
+0891:     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, 891, __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;
-
+0892:     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, 892, __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, 892, __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, 892, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 892, __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, 892, __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, 892, __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, 892, __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, 892, __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, 892, __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, 892, __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, 892, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0893: 
-
+0894:     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, 894, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0895:     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, 895, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+0896:     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, 896, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 0897: 
-
 0898:     # walk the two SparseVectors, adding matched locations...
-
+0899:     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;
-
+0900:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0901:             # use x fill value
-
+0902:             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]) ))));
-
+0903:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0904:             continue
-
      goto __pyx_L3_continue;
-
 0905: 
-
+0906:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 0907:             # use y fill value
-
+0908:             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);
-
+0909:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0910:             continue
-
      goto __pyx_L3_continue;
-
 0911: 
-
+0912:         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]) )));
-
+0913:         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]) )));
-
 0914: 
-
 0915:         # each index in the out_index had to come from either x, y, or both
-
+0916:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+0917:             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]) ))));
-
+0918:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+0919:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+0920:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 0921:             # use y fill value
-
+0922:             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);
-
+0923:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0924:         else:
-
 0925:             # use x fill value
-
+0926:             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]) ))));
-
+0927:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 0928: 
-
+0929:     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, 929, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 929, __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;
-
 0930: 
-
 0931: 
-
+0932: cpdef sparse_mul_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_11sparse_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_11sparse_mul_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_11sparse_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, 932, __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, 932, __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, 932, __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, 932, __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, 932, __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, 932, __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, 932, __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, 933, __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, 934, __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, 935, __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, 932, __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, 933, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 935, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_10sparse_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_10sparse_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, 932, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 932, __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, 932, __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;
-}
-
 0933:                                   SparseIndex xindex, float64_t xfill,
-
 0934:                                   float64_t[:] y,
-
 0935:                                   SparseIndex yindex, float64_t yfill):
-
 0936: 
-
+0937:     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) {
-/* … */
-  }
-
+0938:         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, 938, __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, 938, __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, 938, __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, 938, __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;
-
+0939:                                              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, 939, __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, 939, __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, 939, __pyx_L1_error)
-
+0940:     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)) {
-/* … */
-  }
-
+0941:         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, 941, __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, 941, __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, 941, __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, 941, __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;
-
+0942:                                            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, 942, __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, 942, __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, 942, __pyx_L1_error)
-
 0943:     else:
-
+0944:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 944, __pyx_L1_error)
-  }
-
 0945: 
-
 0946: 
-
 0947: @cython.wraparound(False)
-
 0948: @cython.boundscheck(False)
-
+0949: 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;
-}
-
 0950:                                                 BlockIndex xindex,
-
 0951:                                                 int64_t xfill,
-
 0952:                                                 int64_t[:] y_,
-
 0953:                                                 BlockIndex yindex,
-
 0954:                                                 int64_t yfill):
-
 0955:     '''
-
 0956:     Binary operator on BlockIndex objects with fill values
-
 0957:     '''
-
 0958: 
-
 0959:     cdef:
-
 0960:         BlockIndex out_index
-
+0961:         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;
-
+0962:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 0963:         int32_t xloc, yloc
-
+0964:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 0965: 
-
 0966:         int64_t[:] x, y
-
 0967:         ndarray[int64_t, ndim=1] out
-
 0968: 
-
 0969:     # to suppress Cython warning
-
+0970:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+0971:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 0972: 
-
+0973:     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, 973, __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;
-
+0974:     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, 974, __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, 974, __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, 974, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 974, __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, 974, __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, 974, __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, 974, __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, 974, __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, 974, __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, 974, __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, 974, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 0975: 
-
 0976:     # Wow, what a hack job. Need to do something about this
-
 0977: 
-
 0978:     # walk the two SparseVectors, adding matched locations...
-
+0979:     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;
-
+0980:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0981:             # use y fill value
-
+0982:             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);
-
+0983:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 0984: 
-
 0985:             # advance x location
-
+0986:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+0987:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+0988:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+0989:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+0990:             continue
-
      goto __pyx_L3_continue;
-
 0991: 
-
+0992:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 0993:             # use x fill value
-
+0994:             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]) ))));
-
+0995:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 0996: 
-
 0997:             # advance y location
-
+0998:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+0999:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1000:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1001:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+1002:             continue
-
      goto __pyx_L3_continue;
-
 1003: 
-
+1004:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+1005:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 1006: 
-
 1007:         # each index in the out_index had to come from either x, y, or both
-
+1008:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+1009:             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]) ))));
-
+1010:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1011:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1012: 
-
 1013:             # advance both locations
-
+1014:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1015:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1016:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1017:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1018: 
-
+1019:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1020:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1021:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1022:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1023: 
-
+1024:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 1025:             # use y fill value
-
+1026:             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);
-
+1027:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1028: 
-
 1029:             # advance x location
-
+1030:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1031:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1032:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1033:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1034:         else:
-
 1035:             # use x fill value
-
+1036:             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]) ))));
-
+1037:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1038: 
-
 1039:             # advance y location
-
+1040:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1041:             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:;
-  }
-
+1042:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1043:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1044: 
-
+1045:     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, 1045, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1045, __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;
-
 1046: 
-
 1047: 
-
 1048: @cython.wraparound(False)
-
 1049: @cython.boundscheck(False)
-
+1050: 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;
-}
-
 1051:                                               IntIndex xindex,
-
 1052:                                               int64_t xfill,
-
 1053:                                               int64_t[:] y_,
-
 1054:                                               IntIndex yindex,
-
 1055:                                               int64_t yfill):
-
 1056:     cdef:
-
 1057:         IntIndex out_index
-
+1058:         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;
-
 1059:         int32_t xloc, yloc
-
 1060:         int32_t[:] xindices, yindices, out_indices
-
 1061:         int64_t[:] x, y
-
 1062:         ndarray[int64_t, ndim=1] out
-
 1063: 
-
 1064:     # suppress Cython compiler warnings due to inlining
-
+1065:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1066:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1067: 
-
 1068:     # need to do this first to know size of result array
-
+1069:     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, 1069, __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;
-
+1070:     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, 1070, __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, 1070, __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, 1070, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1070, __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, 1070, __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, 1070, __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, 1070, __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, 1070, __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, 1070, __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, 1070, __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, 1070, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1071: 
-
+1072:     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, 1072, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1073:     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, 1073, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1074:     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, 1074, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 1075: 
-
 1076:     # walk the two SparseVectors, adding matched locations...
-
+1077:     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;
-
+1078:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1079:             # use x fill value
-
+1080:             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]) ))));
-
+1081:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1082:             continue
-
      goto __pyx_L3_continue;
-
 1083: 
-
+1084:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1085:             # use y fill value
-
+1086:             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);
-
+1087:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1088:             continue
-
      goto __pyx_L3_continue;
-
 1089: 
-
+1090:         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]) )));
-
+1091:         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]) )));
-
 1092: 
-
 1093:         # each index in the out_index had to come from either x, y, or both
-
+1094:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+1095:             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]) ))));
-
+1096:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1097:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1098:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 1099:             # use y fill value
-
+1100:             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);
-
+1101:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1102:         else:
-
 1103:             # use x fill value
-
+1104:             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]) ))));
-
+1105:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 1106: 
-
+1107:     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, 1107, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1107, __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;
-
 1108: 
-
 1109: 
-
+1110: cpdef sparse_mul_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_13sparse_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_13sparse_mul_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_13sparse_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, 1110, __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, 1110, __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, 1110, __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, 1110, __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, 1110, __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, 1110, __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, 1110, __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, 1111, __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, 1112, __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, 1113, __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, 1110, __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, 1111, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1113, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_12sparse_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_12sparse_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, 1110, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1110, __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, 1110, __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;
-}
-
 1111:                                   SparseIndex xindex, int64_t xfill,
-
 1112:                                   int64_t[:] y,
-
 1113:                                   SparseIndex yindex, int64_t yfill):
-
 1114: 
-
+1115:     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) {
-/* … */
-  }
-
+1116:         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, 1116, __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, 1116, __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, 1116, __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, 1116, __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;
-
+1117:                                              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, 1117, __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, 1117, __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, 1117, __pyx_L1_error)
-
+1118:     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)) {
-/* … */
-  }
-
+1119:         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, 1119, __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, 1119, __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, 1119, __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, 1119, __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;
-
+1120:                                            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, 1120, __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, 1120, __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, 1120, __pyx_L1_error)
-
 1121:     else:
-
+1122:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 1122, __pyx_L1_error)
-  }
-
 1123: 
-
 1124: 
-
 1125: @cython.wraparound(False)
-
 1126: @cython.boundscheck(False)
-
+1127: 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;
-}
-
 1128:                                                 BlockIndex xindex,
-
 1129:                                                 float64_t xfill,
-
 1130:                                                 float64_t[:] y_,
-
 1131:                                                 BlockIndex yindex,
-
 1132:                                                 float64_t yfill):
-
 1133:     '''
-
 1134:     Binary operator on BlockIndex objects with fill values
-
 1135:     '''
-
 1136: 
-
 1137:     cdef:
-
 1138:         BlockIndex out_index
-
+1139:         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;
-
+1140:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 1141:         int32_t xloc, yloc
-
+1142:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 1143: 
-
 1144:         float64_t[:] x, y
-
 1145:         ndarray[float64_t, ndim=1] out
-
 1146: 
-
 1147:     # to suppress Cython warning
-
+1148:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1149:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1150: 
-
+1151:     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, 1151, __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;
-
+1152:     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, 1152, __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, 1152, __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, 1152, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1152, __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, 1152, __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, 1152, __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, 1152, __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, 1152, __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, 1152, __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, 1152, __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, 1152, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1153: 
-
 1154:     # Wow, what a hack job. Need to do something about this
-
 1155: 
-
 1156:     # walk the two SparseVectors, adding matched locations...
-
+1157:     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;
-
+1158:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1159:             # use y fill value
-
+1160:             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);
-
+1161:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1162: 
-
 1163:             # advance x location
-
+1164:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1165:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1166:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1167:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+1168:             continue
-
      goto __pyx_L3_continue;
-
 1169: 
-
+1170:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1171:             # use x fill value
-
+1172:             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]) ))));
-
+1173:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1174: 
-
 1175:             # advance y location
-
+1176:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1177:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1178:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1179:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+1180:             continue
-
      goto __pyx_L3_continue;
-
 1181: 
-
+1182:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+1183:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 1184: 
-
 1185:         # each index in the out_index had to come from either x, y, or both
-
+1186:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+1187:             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]) ))));
-
+1188:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1189:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1190: 
-
 1191:             # advance both locations
-
+1192:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1193:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1194:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1195:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1196: 
-
+1197:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1198:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1199:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1200:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1201: 
-
+1202:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 1203:             # use y fill value
-
+1204:             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);
-
+1205:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1206: 
-
 1207:             # advance x location
-
+1208:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1209:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1210:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1211:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1212:         else:
-
 1213:             # use x fill value
-
+1214:             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]) ))));
-
+1215:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1216: 
-
 1217:             # advance y location
-
+1218:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1219:             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:;
-  }
-
+1220:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1221:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1222: 
-
+1223:     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, 1223, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1223, __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;
-
 1224: 
-
 1225: 
-
 1226: @cython.wraparound(False)
-
 1227: @cython.boundscheck(False)
-
+1228: 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;
-}
-
 1229:                                               IntIndex xindex,
-
 1230:                                               float64_t xfill,
-
 1231:                                               float64_t[:] y_,
-
 1232:                                               IntIndex yindex,
-
 1233:                                               float64_t yfill):
-
 1234:     cdef:
-
 1235:         IntIndex out_index
-
+1236:         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;
-
 1237:         int32_t xloc, yloc
-
 1238:         int32_t[:] xindices, yindices, out_indices
-
 1239:         float64_t[:] x, y
-
 1240:         ndarray[float64_t, ndim=1] out
-
 1241: 
-
 1242:     # suppress Cython compiler warnings due to inlining
-
+1243:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1244:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1245: 
-
 1246:     # need to do this first to know size of result array
-
+1247:     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, 1247, __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;
-
+1248:     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, 1248, __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, 1248, __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, 1248, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1248, __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, 1248, __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, 1248, __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, 1248, __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, 1248, __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, 1248, __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, 1248, __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, 1248, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1249: 
-
+1250:     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, 1250, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1251:     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, 1251, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1252:     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, 1252, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 1253: 
-
 1254:     # walk the two SparseVectors, adding matched locations...
-
+1255:     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;
-
+1256:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1257:             # use x fill value
-
+1258:             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]) ))));
-
+1259:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1260:             continue
-
      goto __pyx_L3_continue;
-
 1261: 
-
+1262:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1263:             # use y fill value
-
+1264:             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);
-
+1265:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1266:             continue
-
      goto __pyx_L3_continue;
-
 1267: 
-
+1268:         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]) )));
-
+1269:         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]) )));
-
 1270: 
-
 1271:         # each index in the out_index had to come from either x, y, or both
-
+1272:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+1273:             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]) ))));
-
+1274:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1275:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1276:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 1277:             # use y fill value
-
+1278:             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);
-
+1279:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1280:         else:
-
 1281:             # use x fill value
-
+1282:             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]) ))));
-
+1283:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 1284: 
-
+1285:     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, 1285, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1285, __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;
-
 1286: 
-
 1287: 
-
+1288: cpdef sparse_div_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_15sparse_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_15sparse_div_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_15sparse_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, 1288, __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, 1288, __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, 1288, __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, 1288, __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, 1288, __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, 1288, __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, 1288, __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, 1289, __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, 1290, __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, 1291, __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, 1288, __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, 1289, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1291, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_14sparse_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_14sparse_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, 1288, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1288, __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, 1288, __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;
-}
-
 1289:                                   SparseIndex xindex, float64_t xfill,
-
 1290:                                   float64_t[:] y,
-
 1291:                                   SparseIndex yindex, float64_t yfill):
-
 1292: 
-
+1293:     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) {
-/* … */
-  }
-
+1294:         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, 1294, __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, 1294, __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, 1294, __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, 1294, __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;
-
+1295:                                              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, 1295, __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, 1295, __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, 1295, __pyx_L1_error)
-
+1296:     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)) {
-/* … */
-  }
-
+1297:         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, 1297, __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, 1297, __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, 1297, __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, 1297, __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;
-
+1298:                                            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, 1298, __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, 1298, __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, 1298, __pyx_L1_error)
-
 1299:     else:
-
+1300:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 1300, __pyx_L1_error)
-  }
-
 1301: 
-
 1302: 
-
 1303: @cython.wraparound(False)
-
 1304: @cython.boundscheck(False)
-
+1305: 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;
-}
-
 1306:                                                 BlockIndex xindex,
-
 1307:                                                 int64_t xfill,
-
 1308:                                                 int64_t[:] y_,
-
 1309:                                                 BlockIndex yindex,
-
 1310:                                                 int64_t yfill):
-
 1311:     '''
-
 1312:     Binary operator on BlockIndex objects with fill values
-
 1313:     '''
-
 1314: 
-
 1315:     cdef:
-
 1316:         BlockIndex out_index
-
+1317:         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;
-
+1318:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 1319:         int32_t xloc, yloc
-
+1320:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 1321: 
-
 1322:         int64_t[:] x, y
-
 1323:         ndarray[float64_t, ndim=1] out
-
 1324: 
-
 1325:     # to suppress Cython warning
-
+1326:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1327:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1328: 
-
+1329:     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, 1329, __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;
-
+1330:     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, 1330, __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, 1330, __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, 1330, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1330, __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, 1330, __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, 1330, __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, 1330, __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, 1330, __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, 1330, __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, 1330, __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, 1330, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1331: 
-
 1332:     # Wow, what a hack job. Need to do something about this
-
 1333: 
-
 1334:     # walk the two SparseVectors, adding matched locations...
-
+1335:     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;
-
+1336:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1337:             # use y fill value
-
+1338:             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);
-
+1339:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1340: 
-
 1341:             # advance x location
-
+1342:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1343:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1344:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1345:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+1346:             continue
-
      goto __pyx_L3_continue;
-
 1347: 
-
+1348:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1349:             # use x fill value
-
+1350:             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]) ))));
-
+1351:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1352: 
-
 1353:             # advance y location
-
+1354:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1355:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1356:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1357:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+1358:             continue
-
      goto __pyx_L3_continue;
-
 1359: 
-
+1360:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+1361:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 1362: 
-
 1363:         # each index in the out_index had to come from either x, y, or both
-
+1364:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+1365:             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]) ))));
-
+1366:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1367:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1368: 
-
 1369:             # advance both locations
-
+1370:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1371:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1372:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1373:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1374: 
-
+1375:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1376:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1377:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1378:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1379: 
-
+1380:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 1381:             # use y fill value
-
+1382:             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);
-
+1383:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1384: 
-
 1385:             # advance x location
-
+1386:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1387:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1388:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1389:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1390:         else:
-
 1391:             # use x fill value
-
+1392:             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]) ))));
-
+1393:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1394: 
-
 1395:             # advance y location
-
+1396:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1397:             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:;
-  }
-
+1398:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1399:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1400: 
-
+1401:     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, 1401, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1401, __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;
-
 1402: 
-
 1403: 
-
 1404: @cython.wraparound(False)
-
 1405: @cython.boundscheck(False)
-
+1406: 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;
-}
-
 1407:                                               IntIndex xindex,
-
 1408:                                               int64_t xfill,
-
 1409:                                               int64_t[:] y_,
-
 1410:                                               IntIndex yindex,
-
 1411:                                               int64_t yfill):
-
 1412:     cdef:
-
 1413:         IntIndex out_index
-
+1414:         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;
-
 1415:         int32_t xloc, yloc
-
 1416:         int32_t[:] xindices, yindices, out_indices
-
 1417:         int64_t[:] x, y
-
 1418:         ndarray[float64_t, ndim=1] out
-
 1419: 
-
 1420:     # suppress Cython compiler warnings due to inlining
-
+1421:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1422:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1423: 
-
 1424:     # need to do this first to know size of result array
-
+1425:     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, 1425, __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;
-
+1426:     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, 1426, __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, 1426, __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, 1426, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1426, __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, 1426, __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, 1426, __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, 1426, __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, 1426, __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, 1426, __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, 1426, __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, 1426, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1427: 
-
+1428:     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, 1428, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1429:     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, 1429, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1430:     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, 1430, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 1431: 
-
 1432:     # walk the two SparseVectors, adding matched locations...
-
+1433:     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;
-
+1434:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1435:             # use x fill value
-
+1436:             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]) ))));
-
+1437:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1438:             continue
-
      goto __pyx_L3_continue;
-
 1439: 
-
+1440:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1441:             # use y fill value
-
+1442:             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);
-
+1443:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1444:             continue
-
      goto __pyx_L3_continue;
-
 1445: 
-
+1446:         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]) )));
-
+1447:         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]) )));
-
 1448: 
-
 1449:         # each index in the out_index had to come from either x, y, or both
-
+1450:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+1451:             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]) ))));
-
+1452:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1453:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1454:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 1455:             # use y fill value
-
+1456:             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);
-
+1457:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1458:         else:
-
 1459:             # use x fill value
-
+1460:             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]) ))));
-
+1461:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 1462: 
-
+1463:     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, 1463, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1463, __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;
-
 1464: 
-
 1465: 
-
+1466: cpdef sparse_div_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_17sparse_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_17sparse_div_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_17sparse_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, 1466, __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, 1466, __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, 1466, __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, 1466, __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, 1466, __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, 1466, __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, 1466, __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, 1467, __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, 1468, __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, 1469, __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, 1466, __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, 1467, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1469, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_16sparse_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_16sparse_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, 1466, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1466, __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, 1466, __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;
-}
-
 1467:                                   SparseIndex xindex, int64_t xfill,
-
 1468:                                   int64_t[:] y,
-
 1469:                                   SparseIndex yindex, int64_t yfill):
-
 1470: 
-
+1471:     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) {
-/* … */
-  }
-
+1472:         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, 1472, __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, 1472, __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, 1472, __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, 1472, __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;
-
+1473:                                              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, 1473, __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, 1473, __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, 1473, __pyx_L1_error)
-
+1474:     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)) {
-/* … */
-  }
-
+1475:         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, 1475, __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, 1475, __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, 1475, __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, 1475, __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;
-
+1476:                                            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, 1476, __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, 1476, __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, 1476, __pyx_L1_error)
-
 1477:     else:
-
+1478:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 1478, __pyx_L1_error)
-  }
-
 1479: 
-
 1480: 
-
 1481: @cython.wraparound(False)
-
 1482: @cython.boundscheck(False)
-
+1483: 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;
-}
-
 1484:                                                 BlockIndex xindex,
-
 1485:                                                 float64_t xfill,
-
 1486:                                                 float64_t[:] y_,
-
 1487:                                                 BlockIndex yindex,
-
 1488:                                                 float64_t yfill):
-
 1489:     '''
-
 1490:     Binary operator on BlockIndex objects with fill values
-
 1491:     '''
-
 1492: 
-
 1493:     cdef:
-
 1494:         BlockIndex out_index
-
+1495:         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;
-
+1496:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 1497:         int32_t xloc, yloc
-
+1498:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 1499: 
-
 1500:         float64_t[:] x, y
-
 1501:         ndarray[float64_t, ndim=1] out
-
 1502: 
-
 1503:     # to suppress Cython warning
-
+1504:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1505:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1506: 
-
+1507:     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, 1507, __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;
-
+1508:     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, 1508, __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, 1508, __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, 1508, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1508, __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, 1508, __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, 1508, __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, 1508, __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, 1508, __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, 1508, __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, 1508, __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, 1508, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1509: 
-
 1510:     # Wow, what a hack job. Need to do something about this
-
 1511: 
-
 1512:     # walk the two SparseVectors, adding matched locations...
-
+1513:     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;
-
+1514:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1515:             # use y fill value
-
+1516:             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);
-
+1517:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1518: 
-
 1519:             # advance x location
-
+1520:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1521:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1522:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1523:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+1524:             continue
-
      goto __pyx_L3_continue;
-
 1525: 
-
+1526:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1527:             # use x fill value
-
+1528:             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]) ))));
-
+1529:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1530: 
-
 1531:             # advance y location
-
+1532:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1533:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1534:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1535:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+1536:             continue
-
      goto __pyx_L3_continue;
-
 1537: 
-
+1538:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+1539:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 1540: 
-
 1541:         # each index in the out_index had to come from either x, y, or both
-
+1542:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+1543:             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]) ))));
-
+1544:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1545:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1546: 
-
 1547:             # advance both locations
-
+1548:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1549:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1550:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1551:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1552: 
-
+1553:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1554:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1555:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1556:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1557: 
-
+1558:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 1559:             # use y fill value
-
+1560:             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);
-
+1561:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1562: 
-
 1563:             # advance x location
-
+1564:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1565:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1566:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1567:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1568:         else:
-
 1569:             # use x fill value
-
+1570:             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]) ))));
-
+1571:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1572: 
-
 1573:             # advance y location
-
+1574:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1575:             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:;
-  }
-
+1576:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1577:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1578: 
-
+1579:     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, 1579, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1579, __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;
-
 1580: 
-
 1581: 
-
 1582: @cython.wraparound(False)
-
 1583: @cython.boundscheck(False)
-
+1584: 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;
-}
-
 1585:                                               IntIndex xindex,
-
 1586:                                               float64_t xfill,
-
 1587:                                               float64_t[:] y_,
-
 1588:                                               IntIndex yindex,
-
 1589:                                               float64_t yfill):
-
 1590:     cdef:
-
 1591:         IntIndex out_index
-
+1592:         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;
-
 1593:         int32_t xloc, yloc
-
 1594:         int32_t[:] xindices, yindices, out_indices
-
 1595:         float64_t[:] x, y
-
 1596:         ndarray[float64_t, ndim=1] out
-
 1597: 
-
 1598:     # suppress Cython compiler warnings due to inlining
-
+1599:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1600:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1601: 
-
 1602:     # need to do this first to know size of result array
-
+1603:     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, 1603, __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;
-
+1604:     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, 1604, __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, 1604, __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, 1604, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1604, __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, 1604, __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, 1604, __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, 1604, __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, 1604, __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, 1604, __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, 1604, __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, 1604, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1605: 
-
+1606:     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, 1606, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1607:     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, 1607, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1608:     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, 1608, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 1609: 
-
 1610:     # walk the two SparseVectors, adding matched locations...
-
+1611:     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;
-
+1612:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1613:             # use x fill value
-
+1614:             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]) ))));
-
+1615:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1616:             continue
-
      goto __pyx_L3_continue;
-
 1617: 
-
+1618:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1619:             # use y fill value
-
+1620:             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);
-
+1621:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1622:             continue
-
      goto __pyx_L3_continue;
-
 1623: 
-
+1624:         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]) )));
-
+1625:         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]) )));
-
 1626: 
-
 1627:         # each index in the out_index had to come from either x, y, or both
-
+1628:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+1629:             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]) ))));
-
+1630:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1631:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1632:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 1633:             # use y fill value
-
+1634:             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);
-
+1635:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1636:         else:
-
 1637:             # use x fill value
-
+1638:             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]) ))));
-
+1639:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 1640: 
-
+1641:     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, 1641, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1641, __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;
-
 1642: 
-
 1643: 
-
+1644: cpdef sparse_mod_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_19sparse_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_19sparse_mod_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_19sparse_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, 1644, __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, 1644, __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, 1644, __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, 1644, __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, 1644, __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, 1644, __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, 1644, __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, 1645, __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, 1646, __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, 1647, __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, 1644, __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, 1645, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1647, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_18sparse_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_18sparse_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, 1644, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1644, __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, 1644, __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;
-}
-
 1645:                                   SparseIndex xindex, float64_t xfill,
-
 1646:                                   float64_t[:] y,
-
 1647:                                   SparseIndex yindex, float64_t yfill):
-
 1648: 
-
+1649:     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) {
-/* … */
-  }
-
+1650:         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, 1650, __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, 1650, __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, 1650, __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, 1650, __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;
-
+1651:                                              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, 1651, __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, 1651, __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, 1651, __pyx_L1_error)
-
+1652:     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)) {
-/* … */
-  }
-
+1653:         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, 1653, __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, 1653, __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, 1653, __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, 1653, __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;
-
+1654:                                            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, 1654, __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, 1654, __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, 1654, __pyx_L1_error)
-
 1655:     else:
-
+1656:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 1656, __pyx_L1_error)
-  }
-
 1657: 
-
 1658: 
-
 1659: @cython.wraparound(False)
-
 1660: @cython.boundscheck(False)
-
+1661: 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;
-}
-
 1662:                                                 BlockIndex xindex,
-
 1663:                                                 int64_t xfill,
-
 1664:                                                 int64_t[:] y_,
-
 1665:                                                 BlockIndex yindex,
-
 1666:                                                 int64_t yfill):
-
 1667:     '''
-
 1668:     Binary operator on BlockIndex objects with fill values
-
 1669:     '''
-
 1670: 
-
 1671:     cdef:
-
 1672:         BlockIndex out_index
-
+1673:         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;
-
+1674:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 1675:         int32_t xloc, yloc
-
+1676:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 1677: 
-
 1678:         int64_t[:] x, y
-
 1679:         ndarray[int64_t, ndim=1] out
-
 1680: 
-
 1681:     # to suppress Cython warning
-
+1682:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1683:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1684: 
-
+1685:     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, 1685, __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;
-
+1686:     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, 1686, __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, 1686, __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, 1686, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1686, __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, 1686, __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, 1686, __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, 1686, __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, 1686, __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, 1686, __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, 1686, __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, 1686, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1687: 
-
 1688:     # Wow, what a hack job. Need to do something about this
-
 1689: 
-
 1690:     # walk the two SparseVectors, adding matched locations...
-
+1691:     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;
-
+1692:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1693:             # use y fill value
-
+1694:             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);
-
+1695:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1696: 
-
 1697:             # advance x location
-
+1698:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1699:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1700:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1701:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+1702:             continue
-
      goto __pyx_L3_continue;
-
 1703: 
-
+1704:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1705:             # use x fill value
-
+1706:             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]) ))));
-
+1707:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1708: 
-
 1709:             # advance y location
-
+1710:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1711:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1712:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1713:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+1714:             continue
-
      goto __pyx_L3_continue;
-
 1715: 
-
+1716:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+1717:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 1718: 
-
 1719:         # each index in the out_index had to come from either x, y, or both
-
+1720:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+1721:             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]) ))));
-
+1722:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1723:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1724: 
-
 1725:             # advance both locations
-
+1726:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1727:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1728:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1729:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1730: 
-
+1731:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1732:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1733:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1734:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1735: 
-
+1736:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 1737:             # use y fill value
-
+1738:             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);
-
+1739:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1740: 
-
 1741:             # advance x location
-
+1742:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1743:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1744:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1745:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1746:         else:
-
 1747:             # use x fill value
-
+1748:             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]) ))));
-
+1749:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1750: 
-
 1751:             # advance y location
-
+1752:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1753:             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:;
-  }
-
+1754:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1755:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1756: 
-
+1757:     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, 1757, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1757, __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;
-
 1758: 
-
 1759: 
-
 1760: @cython.wraparound(False)
-
 1761: @cython.boundscheck(False)
-
+1762: 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;
-}
-
 1763:                                               IntIndex xindex,
-
 1764:                                               int64_t xfill,
-
 1765:                                               int64_t[:] y_,
-
 1766:                                               IntIndex yindex,
-
 1767:                                               int64_t yfill):
-
 1768:     cdef:
-
 1769:         IntIndex out_index
-
+1770:         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;
-
 1771:         int32_t xloc, yloc
-
 1772:         int32_t[:] xindices, yindices, out_indices
-
 1773:         int64_t[:] x, y
-
 1774:         ndarray[int64_t, ndim=1] out
-
 1775: 
-
 1776:     # suppress Cython compiler warnings due to inlining
-
+1777:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1778:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1779: 
-
 1780:     # need to do this first to know size of result array
-
+1781:     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, 1781, __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;
-
+1782:     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, 1782, __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, 1782, __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, 1782, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1782, __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, 1782, __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, 1782, __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, 1782, __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, 1782, __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, 1782, __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, 1782, __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, 1782, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1783: 
-
+1784:     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, 1784, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1785:     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, 1785, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1786:     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, 1786, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 1787: 
-
 1788:     # walk the two SparseVectors, adding matched locations...
-
+1789:     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;
-
+1790:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1791:             # use x fill value
-
+1792:             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]) ))));
-
+1793:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1794:             continue
-
      goto __pyx_L3_continue;
-
 1795: 
-
+1796:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1797:             # use y fill value
-
+1798:             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);
-
+1799:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1800:             continue
-
      goto __pyx_L3_continue;
-
 1801: 
-
+1802:         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]) )));
-
+1803:         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]) )));
-
 1804: 
-
 1805:         # each index in the out_index had to come from either x, y, or both
-
+1806:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+1807:             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]) ))));
-
+1808:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1809:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1810:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 1811:             # use y fill value
-
+1812:             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);
-
+1813:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1814:         else:
-
 1815:             # use x fill value
-
+1816:             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]) ))));
-
+1817:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 1818: 
-
+1819:     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, 1819, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1819, __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;
-
 1820: 
-
 1821: 
-
+1822: cpdef sparse_mod_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_21sparse_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_21sparse_mod_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_21sparse_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, 1822, __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, 1822, __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, 1822, __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, 1822, __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, 1822, __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, 1822, __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, 1822, __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, 1823, __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, 1824, __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, 1825, __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, 1822, __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, 1823, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 1825, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_20sparse_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_20sparse_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, 1822, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 1822, __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, 1822, __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;
-}
-
 1823:                                   SparseIndex xindex, int64_t xfill,
-
 1824:                                   int64_t[:] y,
-
 1825:                                   SparseIndex yindex, int64_t yfill):
-
 1826: 
-
+1827:     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) {
-/* … */
-  }
-
+1828:         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, 1828, __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, 1828, __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, 1828, __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, 1828, __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;
-
+1829:                                              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, 1829, __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, 1829, __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, 1829, __pyx_L1_error)
-
+1830:     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)) {
-/* … */
-  }
-
+1831:         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, 1831, __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, 1831, __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, 1831, __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, 1831, __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;
-
+1832:                                            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, 1832, __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, 1832, __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, 1832, __pyx_L1_error)
-
 1833:     else:
-
+1834:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 1834, __pyx_L1_error)
-  }
-
 1835: 
-
 1836: 
-
 1837: @cython.wraparound(False)
-
 1838: @cython.boundscheck(False)
-
+1839: 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;
-}
-
 1840:                                                 BlockIndex xindex,
-
 1841:                                                 float64_t xfill,
-
 1842:                                                 float64_t[:] y_,
-
 1843:                                                 BlockIndex yindex,
-
 1844:                                                 float64_t yfill):
-
 1845:     '''
-
 1846:     Binary operator on BlockIndex objects with fill values
-
 1847:     '''
-
 1848: 
-
 1849:     cdef:
-
 1850:         BlockIndex out_index
-
+1851:         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;
-
+1852:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 1853:         int32_t xloc, yloc
-
+1854:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 1855: 
-
 1856:         float64_t[:] x, y
-
 1857:         ndarray[float64_t, ndim=1] out
-
 1858: 
-
 1859:     # to suppress Cython warning
-
+1860:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1861:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1862: 
-
+1863:     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, 1863, __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;
-
+1864:     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, 1864, __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, 1864, __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, 1864, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1864, __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, 1864, __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, 1864, __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, 1864, __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, 1864, __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, 1864, __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, 1864, __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, 1864, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1865: 
-
 1866:     # Wow, what a hack job. Need to do something about this
-
 1867: 
-
 1868:     # walk the two SparseVectors, adding matched locations...
-
+1869:     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;
-
+1870:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1871:             # use y fill value
-
+1872:             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);
-
+1873:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1874: 
-
 1875:             # advance x location
-
+1876:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1877:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1878:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1879:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+1880:             continue
-
      goto __pyx_L3_continue;
-
 1881: 
-
+1882:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 1883:             # use x fill value
-
+1884:             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]) ))));
-
+1885:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1886: 
-
 1887:             # advance y location
-
+1888:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1889:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1890:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1891:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+1892:             continue
-
      goto __pyx_L3_continue;
-
 1893: 
-
+1894:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+1895:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 1896: 
-
 1897:         # each index in the out_index had to come from either x, y, or both
-
+1898:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+1899:             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]) ))));
-
+1900:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1901:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1902: 
-
 1903:             # advance both locations
-
+1904:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1905:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1906:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1907:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1908: 
-
+1909:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1910:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1911:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1912:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1913: 
-
+1914:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 1915:             # use y fill value
-
+1916:             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);
-
+1917:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1918: 
-
 1919:             # advance x location
-
+1920:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+1921:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+1922:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+1923:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 1924:         else:
-
 1925:             # use x fill value
-
+1926:             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]) ))));
-
+1927:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 1928: 
-
 1929:             # advance y location
-
+1930:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+1931:             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:;
-  }
-
+1932:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+1933:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 1934: 
-
+1935:     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, 1935, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1935, __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;
-
 1936: 
-
 1937: 
-
 1938: @cython.wraparound(False)
-
 1939: @cython.boundscheck(False)
-
+1940: 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;
-}
-
 1941:                                               IntIndex xindex,
-
 1942:                                               float64_t xfill,
-
 1943:                                               float64_t[:] y_,
-
 1944:                                               IntIndex yindex,
-
 1945:                                               float64_t yfill):
-
 1946:     cdef:
-
 1947:         IntIndex out_index
-
+1948:         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;
-
 1949:         int32_t xloc, yloc
-
 1950:         int32_t[:] xindices, yindices, out_indices
-
 1951:         float64_t[:] x, y
-
 1952:         ndarray[float64_t, ndim=1] out
-
 1953: 
-
 1954:     # suppress Cython compiler warnings due to inlining
-
+1955:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+1956:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 1957: 
-
 1958:     # need to do this first to know size of result array
-
+1959:     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, 1959, __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;
-
+1960:     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, 1960, __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, 1960, __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, 1960, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 1960, __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, 1960, __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, 1960, __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, 1960, __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, 1960, __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, 1960, __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, 1960, __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, 1960, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 1961: 
-
+1962:     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, 1962, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1963:     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, 1963, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+1964:     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, 1964, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 1965: 
-
 1966:     # walk the two SparseVectors, adding matched locations...
-
+1967:     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;
-
+1968:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1969:             # use x fill value
-
+1970:             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]) ))));
-
+1971:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1972:             continue
-
      goto __pyx_L3_continue;
-
 1973: 
-
+1974:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 1975:             # use y fill value
-
+1976:             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);
-
+1977:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1978:             continue
-
      goto __pyx_L3_continue;
-
 1979: 
-
+1980:         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]) )));
-
+1981:         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]) )));
-
 1982: 
-
 1983:         # each index in the out_index had to come from either x, y, or both
-
+1984:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+1985:             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]) ))));
-
+1986:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+1987:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+1988:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 1989:             # use y fill value
-
+1990:             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);
-
+1991:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 1992:         else:
-
 1993:             # use x fill value
-
+1994:             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]) ))));
-
+1995:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 1996: 
-
+1997:     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, 1997, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 1997, __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;
-
 1998: 
-
 1999: 
-
+2000: cpdef sparse_truediv_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_23sparse_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_23sparse_truediv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_23sparse_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, 2000, __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, 2000, __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, 2000, __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, 2000, __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, 2000, __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, 2000, __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, 2000, __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, 2001, __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, 2002, __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, 2003, __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, 2000, __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, 2001, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2003, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_22sparse_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_22sparse_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, 2000, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2000, __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, 2000, __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;
-}
-
 2001:                                   SparseIndex xindex, float64_t xfill,
-
 2002:                                   float64_t[:] y,
-
 2003:                                   SparseIndex yindex, float64_t yfill):
-
 2004: 
-
+2005:     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) {
-/* … */
-  }
-
+2006:         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, 2006, __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, 2006, __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, 2006, __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, 2006, __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;
-
+2007:                                              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, 2007, __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, 2007, __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, 2007, __pyx_L1_error)
-
+2008:     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)) {
-/* … */
-  }
-
+2009:         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, 2009, __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, 2009, __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, 2009, __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, 2009, __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;
-
+2010:                                            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, 2010, __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, 2010, __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, 2010, __pyx_L1_error)
-
 2011:     else:
-
+2012:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 2012, __pyx_L1_error)
-  }
-
 2013: 
-
 2014: 
-
 2015: @cython.wraparound(False)
-
 2016: @cython.boundscheck(False)
-
+2017: 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;
-}
-
 2018:                                                 BlockIndex xindex,
-
 2019:                                                 int64_t xfill,
-
 2020:                                                 int64_t[:] y_,
-
 2021:                                                 BlockIndex yindex,
-
 2022:                                                 int64_t yfill):
-
 2023:     '''
-
 2024:     Binary operator on BlockIndex objects with fill values
-
 2025:     '''
-
 2026: 
-
 2027:     cdef:
-
 2028:         BlockIndex out_index
-
+2029:         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;
-
+2030:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 2031:         int32_t xloc, yloc
-
+2032:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 2033: 
-
 2034:         int64_t[:] x, y
-
 2035:         ndarray[float64_t, ndim=1] out
-
 2036: 
-
 2037:     # to suppress Cython warning
-
+2038:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2039:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2040: 
-
+2041:     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, 2041, __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;
-
+2042:     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, 2042, __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, 2042, __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, 2042, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2042, __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, 2042, __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, 2042, __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, 2042, __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, 2042, __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, 2042, __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, 2042, __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, 2042, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2043: 
-
 2044:     # Wow, what a hack job. Need to do something about this
-
 2045: 
-
 2046:     # walk the two SparseVectors, adding matched locations...
-
+2047:     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;
-
+2048:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2049:             # use y fill value
-
+2050:             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);
-
+2051:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2052: 
-
 2053:             # advance x location
-
+2054:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2055:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2056:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2057:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+2058:             continue
-
      goto __pyx_L3_continue;
-
 2059: 
-
+2060:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2061:             # use x fill value
-
+2062:             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]) ))));
-
+2063:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2064: 
-
 2065:             # advance y location
-
+2066:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2067:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2068:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2069:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+2070:             continue
-
      goto __pyx_L3_continue;
-
 2071: 
-
+2072:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+2073:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 2074: 
-
 2075:         # each index in the out_index had to come from either x, y, or both
-
+2076:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+2077:             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]) ))));
-
+2078:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2079:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2080: 
-
 2081:             # advance both locations
-
+2082:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2083:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2084:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2085:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2086: 
-
+2087:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2088:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2089:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2090:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2091: 
-
+2092:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 2093:             # use y fill value
-
+2094:             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);
-
+2095:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2096: 
-
 2097:             # advance x location
-
+2098:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2099:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2100:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2101:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2102:         else:
-
 2103:             # use x fill value
-
+2104:             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]) ))));
-
+2105:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2106: 
-
 2107:             # advance y location
-
+2108:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2109:             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:;
-  }
-
+2110:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2111:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2112: 
-
+2113:     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, 2113, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2113, __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;
-
 2114: 
-
 2115: 
-
 2116: @cython.wraparound(False)
-
 2117: @cython.boundscheck(False)
-
+2118: 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;
-}
-
 2119:                                               IntIndex xindex,
-
 2120:                                               int64_t xfill,
-
 2121:                                               int64_t[:] y_,
-
 2122:                                               IntIndex yindex,
-
 2123:                                               int64_t yfill):
-
 2124:     cdef:
-
 2125:         IntIndex out_index
-
+2126:         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;
-
 2127:         int32_t xloc, yloc
-
 2128:         int32_t[:] xindices, yindices, out_indices
-
 2129:         int64_t[:] x, y
-
 2130:         ndarray[float64_t, ndim=1] out
-
 2131: 
-
 2132:     # suppress Cython compiler warnings due to inlining
-
+2133:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2134:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2135: 
-
 2136:     # need to do this first to know size of result array
-
+2137:     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, 2137, __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;
-
+2138:     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, 2138, __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, 2138, __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, 2138, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2138, __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, 2138, __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, 2138, __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, 2138, __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, 2138, __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, 2138, __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, 2138, __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, 2138, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2139: 
-
+2140:     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, 2140, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2141:     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, 2141, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2142:     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, 2142, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 2143: 
-
 2144:     # walk the two SparseVectors, adding matched locations...
-
+2145:     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;
-
+2146:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2147:             # use x fill value
-
+2148:             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]) ))));
-
+2149:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2150:             continue
-
      goto __pyx_L3_continue;
-
 2151: 
-
+2152:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2153:             # use y fill value
-
+2154:             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);
-
+2155:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2156:             continue
-
      goto __pyx_L3_continue;
-
 2157: 
-
+2158:         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]) )));
-
+2159:         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]) )));
-
 2160: 
-
 2161:         # each index in the out_index had to come from either x, y, or both
-
+2162:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+2163:             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]) ))));
-
+2164:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2165:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2166:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 2167:             # use y fill value
-
+2168:             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);
-
+2169:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2170:         else:
-
 2171:             # use x fill value
-
+2172:             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]) ))));
-
+2173:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 2174: 
-
+2175:     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, 2175, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2175, __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;
-
 2176: 
-
 2177: 
-
+2178: cpdef sparse_truediv_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_25sparse_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_25sparse_truediv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_25sparse_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, 2178, __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, 2178, __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, 2178, __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, 2178, __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, 2178, __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, 2178, __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, 2178, __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, 2179, __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, 2180, __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, 2181, __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, 2178, __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, 2179, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2181, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_24sparse_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_24sparse_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, 2178, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2178, __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, 2178, __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;
-}
-
 2179:                                   SparseIndex xindex, int64_t xfill,
-
 2180:                                   int64_t[:] y,
-
 2181:                                   SparseIndex yindex, int64_t yfill):
-
 2182: 
-
+2183:     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) {
-/* … */
-  }
-
+2184:         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, 2184, __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, 2184, __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, 2184, __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, 2184, __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;
-
+2185:                                              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, 2185, __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, 2185, __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, 2185, __pyx_L1_error)
-
+2186:     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)) {
-/* … */
-  }
-
+2187:         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, 2187, __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, 2187, __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, 2187, __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, 2187, __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;
-
+2188:                                            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, 2188, __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, 2188, __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, 2188, __pyx_L1_error)
-
 2189:     else:
-
+2190:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 2190, __pyx_L1_error)
-  }
-
 2191: 
-
 2192: 
-
 2193: @cython.wraparound(False)
-
 2194: @cython.boundscheck(False)
-
+2195: 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;
-}
-
 2196:                                                 BlockIndex xindex,
-
 2197:                                                 float64_t xfill,
-
 2198:                                                 float64_t[:] y_,
-
 2199:                                                 BlockIndex yindex,
-
 2200:                                                 float64_t yfill):
-
 2201:     '''
-
 2202:     Binary operator on BlockIndex objects with fill values
-
 2203:     '''
-
 2204: 
-
 2205:     cdef:
-
 2206:         BlockIndex out_index
-
+2207:         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;
-
+2208:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 2209:         int32_t xloc, yloc
-
+2210:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 2211: 
-
 2212:         float64_t[:] x, y
-
 2213:         ndarray[float64_t, ndim=1] out
-
 2214: 
-
 2215:     # to suppress Cython warning
-
+2216:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2217:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2218: 
-
+2219:     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, 2219, __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;
-
+2220:     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, 2220, __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, 2220, __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, 2220, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2220, __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, 2220, __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, 2220, __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, 2220, __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, 2220, __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, 2220, __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, 2220, __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, 2220, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2221: 
-
 2222:     # Wow, what a hack job. Need to do something about this
-
 2223: 
-
 2224:     # walk the two SparseVectors, adding matched locations...
-
+2225:     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;
-
+2226:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2227:             # use y fill value
-
+2228:             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);
-
+2229:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2230: 
-
 2231:             # advance x location
-
+2232:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2233:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2234:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2235:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+2236:             continue
-
      goto __pyx_L3_continue;
-
 2237: 
-
+2238:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2239:             # use x fill value
-
+2240:             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]) ))));
-
+2241:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2242: 
-
 2243:             # advance y location
-
+2244:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2245:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2246:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2247:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+2248:             continue
-
      goto __pyx_L3_continue;
-
 2249: 
-
+2250:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+2251:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 2252: 
-
 2253:         # each index in the out_index had to come from either x, y, or both
-
+2254:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+2255:             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]) ))));
-
+2256:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2257:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2258: 
-
 2259:             # advance both locations
-
+2260:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2261:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2262:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2263:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2264: 
-
+2265:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2266:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2267:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2268:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2269: 
-
+2270:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 2271:             # use y fill value
-
+2272:             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);
-
+2273:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2274: 
-
 2275:             # advance x location
-
+2276:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2277:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2278:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2279:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2280:         else:
-
 2281:             # use x fill value
-
+2282:             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]) ))));
-
+2283:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2284: 
-
 2285:             # advance y location
-
+2286:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2287:             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:;
-  }
-
+2288:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2289:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2290: 
-
+2291:     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, 2291, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2291, __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;
-
 2292: 
-
 2293: 
-
 2294: @cython.wraparound(False)
-
 2295: @cython.boundscheck(False)
-
+2296: 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;
-}
-
 2297:                                               IntIndex xindex,
-
 2298:                                               float64_t xfill,
-
 2299:                                               float64_t[:] y_,
-
 2300:                                               IntIndex yindex,
-
 2301:                                               float64_t yfill):
-
 2302:     cdef:
-
 2303:         IntIndex out_index
-
+2304:         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;
-
 2305:         int32_t xloc, yloc
-
 2306:         int32_t[:] xindices, yindices, out_indices
-
 2307:         float64_t[:] x, y
-
 2308:         ndarray[float64_t, ndim=1] out
-
 2309: 
-
 2310:     # suppress Cython compiler warnings due to inlining
-
+2311:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2312:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2313: 
-
 2314:     # need to do this first to know size of result array
-
+2315:     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, 2315, __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;
-
+2316:     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, 2316, __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, 2316, __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, 2316, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2316, __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, 2316, __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, 2316, __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, 2316, __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, 2316, __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, 2316, __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, 2316, __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, 2316, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2317: 
-
+2318:     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, 2318, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2319:     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, 2319, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2320:     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, 2320, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 2321: 
-
 2322:     # walk the two SparseVectors, adding matched locations...
-
+2323:     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;
-
+2324:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2325:             # use x fill value
-
+2326:             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]) ))));
-
+2327:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2328:             continue
-
      goto __pyx_L3_continue;
-
 2329: 
-
+2330:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2331:             # use y fill value
-
+2332:             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);
-
+2333:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2334:             continue
-
      goto __pyx_L3_continue;
-
 2335: 
-
+2336:         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]) )));
-
+2337:         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]) )));
-
 2338: 
-
 2339:         # each index in the out_index had to come from either x, y, or both
-
+2340:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+2341:             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]) ))));
-
+2342:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2343:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2344:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 2345:             # use y fill value
-
+2346:             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);
-
+2347:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2348:         else:
-
 2349:             # use x fill value
-
+2350:             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]) ))));
-
+2351:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 2352: 
-
+2353:     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, 2353, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2353, __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;
-
 2354: 
-
 2355: 
-
+2356: cpdef sparse_floordiv_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_27sparse_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_27sparse_floordiv_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_27sparse_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, 2356, __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, 2356, __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, 2356, __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, 2356, __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, 2356, __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, 2356, __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, 2356, __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, 2357, __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, 2358, __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, 2359, __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, 2356, __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, 2357, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2359, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_26sparse_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_26sparse_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, 2356, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2356, __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, 2356, __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;
-}
-
 2357:                                   SparseIndex xindex, float64_t xfill,
-
 2358:                                   float64_t[:] y,
-
 2359:                                   SparseIndex yindex, float64_t yfill):
-
 2360: 
-
+2361:     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) {
-/* … */
-  }
-
+2362:         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, 2362, __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, 2362, __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, 2362, __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, 2362, __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;
-
+2363:                                              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, 2363, __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, 2363, __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, 2363, __pyx_L1_error)
-
+2364:     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)) {
-/* … */
-  }
-
+2365:         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, 2365, __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, 2365, __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, 2365, __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, 2365, __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;
-
+2366:                                            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, 2366, __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, 2366, __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, 2366, __pyx_L1_error)
-
 2367:     else:
-
+2368:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 2368, __pyx_L1_error)
-  }
-
 2369: 
-
 2370: 
-
 2371: @cython.wraparound(False)
-
 2372: @cython.boundscheck(False)
-
+2373: 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;
-}
-
 2374:                                                 BlockIndex xindex,
-
 2375:                                                 int64_t xfill,
-
 2376:                                                 int64_t[:] y_,
-
 2377:                                                 BlockIndex yindex,
-
 2378:                                                 int64_t yfill):
-
 2379:     '''
-
 2380:     Binary operator on BlockIndex objects with fill values
-
 2381:     '''
-
 2382: 
-
 2383:     cdef:
-
 2384:         BlockIndex out_index
-
+2385:         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;
-
+2386:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 2387:         int32_t xloc, yloc
-
+2388:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 2389: 
-
 2390:         int64_t[:] x, y
-
 2391:         ndarray[int64_t, ndim=1] out
-
 2392: 
-
 2393:     # to suppress Cython warning
-
+2394:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2395:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2396: 
-
+2397:     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, 2397, __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;
-
+2398:     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, 2398, __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, 2398, __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, 2398, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2398, __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, 2398, __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, 2398, __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, 2398, __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, 2398, __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, 2398, __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, 2398, __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, 2398, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2399: 
-
 2400:     # Wow, what a hack job. Need to do something about this
-
 2401: 
-
 2402:     # walk the two SparseVectors, adding matched locations...
-
+2403:     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;
-
+2404:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2405:             # use y fill value
-
+2406:             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);
-
+2407:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2408: 
-
 2409:             # advance x location
-
+2410:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2411:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2412:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2413:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+2414:             continue
-
      goto __pyx_L3_continue;
-
 2415: 
-
+2416:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2417:             # use x fill value
-
+2418:             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]) ))));
-
+2419:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2420: 
-
 2421:             # advance y location
-
+2422:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2423:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2424:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2425:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+2426:             continue
-
      goto __pyx_L3_continue;
-
 2427: 
-
+2428:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+2429:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 2430: 
-
 2431:         # each index in the out_index had to come from either x, y, or both
-
+2432:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+2433:             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]) ))));
-
+2434:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2435:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2436: 
-
 2437:             # advance both locations
-
+2438:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2439:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2440:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2441:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2442: 
-
+2443:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2444:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2445:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2446:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2447: 
-
+2448:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 2449:             # use y fill value
-
+2450:             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);
-
+2451:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2452: 
-
 2453:             # advance x location
-
+2454:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2455:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2456:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2457:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2458:         else:
-
 2459:             # use x fill value
-
+2460:             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]) ))));
-
+2461:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2462: 
-
 2463:             # advance y location
-
+2464:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2465:             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:;
-  }
-
+2466:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2467:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2468: 
-
+2469:     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, 2469, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2469, __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;
-
 2470: 
-
 2471: 
-
 2472: @cython.wraparound(False)
-
 2473: @cython.boundscheck(False)
-
+2474: 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;
-}
-
 2475:                                               IntIndex xindex,
-
 2476:                                               int64_t xfill,
-
 2477:                                               int64_t[:] y_,
-
 2478:                                               IntIndex yindex,
-
 2479:                                               int64_t yfill):
-
 2480:     cdef:
-
 2481:         IntIndex out_index
-
+2482:         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;
-
 2483:         int32_t xloc, yloc
-
 2484:         int32_t[:] xindices, yindices, out_indices
-
 2485:         int64_t[:] x, y
-
 2486:         ndarray[int64_t, ndim=1] out
-
 2487: 
-
 2488:     # suppress Cython compiler warnings due to inlining
-
+2489:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2490:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2491: 
-
 2492:     # need to do this first to know size of result array
-
+2493:     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, 2493, __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;
-
+2494:     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, 2494, __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, 2494, __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, 2494, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2494, __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, 2494, __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, 2494, __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, 2494, __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, 2494, __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, 2494, __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, 2494, __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, 2494, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2495: 
-
+2496:     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, 2496, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2497:     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, 2497, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2498:     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, 2498, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 2499: 
-
 2500:     # walk the two SparseVectors, adding matched locations...
-
+2501:     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;
-
+2502:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2503:             # use x fill value
-
+2504:             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]) ))));
-
+2505:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2506:             continue
-
      goto __pyx_L3_continue;
-
 2507: 
-
+2508:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2509:             # use y fill value
-
+2510:             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);
-
+2511:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2512:             continue
-
      goto __pyx_L3_continue;
-
 2513: 
-
+2514:         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]) )));
-
+2515:         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]) )));
-
 2516: 
-
 2517:         # each index in the out_index had to come from either x, y, or both
-
+2518:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+2519:             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]) ))));
-
+2520:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2521:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2522:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 2523:             # use y fill value
-
+2524:             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);
-
+2525:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2526:         else:
-
 2527:             # use x fill value
-
+2528:             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]) ))));
-
+2529:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 2530: 
-
+2531:     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, 2531, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2531, __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;
-
 2532: 
-
 2533: 
-
+2534: cpdef sparse_floordiv_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_29sparse_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_29sparse_floordiv_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_29sparse_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, 2534, __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, 2534, __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, 2534, __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, 2534, __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, 2534, __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, 2534, __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, 2534, __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, 2535, __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, 2536, __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, 2537, __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, 2534, __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, 2535, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2537, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_28sparse_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_28sparse_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, 2534, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2534, __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, 2534, __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;
-}
-
 2535:                                   SparseIndex xindex, int64_t xfill,
-
 2536:                                   int64_t[:] y,
-
 2537:                                   SparseIndex yindex, int64_t yfill):
-
 2538: 
-
+2539:     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) {
-/* … */
-  }
-
+2540:         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, 2540, __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, 2540, __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, 2540, __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, 2540, __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;
-
+2541:                                              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, 2541, __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, 2541, __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, 2541, __pyx_L1_error)
-
+2542:     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)) {
-/* … */
-  }
-
+2543:         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, 2543, __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, 2543, __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, 2543, __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, 2543, __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;
-
+2544:                                            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, 2544, __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, 2544, __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, 2544, __pyx_L1_error)
-
 2545:     else:
-
+2546:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 2546, __pyx_L1_error)
-  }
-
 2547: 
-
 2548: 
-
 2549: @cython.wraparound(False)
-
 2550: @cython.boundscheck(False)
-
+2551: 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;
-}
-
 2552:                                                 BlockIndex xindex,
-
 2553:                                                 float64_t xfill,
-
 2554:                                                 float64_t[:] y_,
-
 2555:                                                 BlockIndex yindex,
-
 2556:                                                 float64_t yfill):
-
 2557:     '''
-
 2558:     Binary operator on BlockIndex objects with fill values
-
 2559:     '''
-
 2560: 
-
 2561:     cdef:
-
 2562:         BlockIndex out_index
-
+2563:         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;
-
+2564:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 2565:         int32_t xloc, yloc
-
+2566:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 2567: 
-
 2568:         float64_t[:] x, y
-
 2569:         ndarray[float64_t, ndim=1] out
-
 2570: 
-
 2571:     # to suppress Cython warning
-
+2572:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2573:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2574: 
-
+2575:     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, 2575, __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;
-
+2576:     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, 2576, __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, 2576, __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, 2576, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2576, __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, 2576, __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, 2576, __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, 2576, __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, 2576, __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, 2576, __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, 2576, __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, 2576, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2577: 
-
 2578:     # Wow, what a hack job. Need to do something about this
-
 2579: 
-
 2580:     # walk the two SparseVectors, adding matched locations...
-
+2581:     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;
-
+2582:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2583:             # use y fill value
-
+2584:             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);
-
+2585:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2586: 
-
 2587:             # advance x location
-
+2588:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2589:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2590:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2591:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+2592:             continue
-
      goto __pyx_L3_continue;
-
 2593: 
-
+2594:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2595:             # use x fill value
-
+2596:             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]) ))));
-
+2597:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2598: 
-
 2599:             # advance y location
-
+2600:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2601:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2602:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2603:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+2604:             continue
-
      goto __pyx_L3_continue;
-
 2605: 
-
+2606:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+2607:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 2608: 
-
 2609:         # each index in the out_index had to come from either x, y, or both
-
+2610:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+2611:             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]) ))));
-
+2612:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2613:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2614: 
-
 2615:             # advance both locations
-
+2616:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2617:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2618:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2619:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2620: 
-
+2621:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2622:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2623:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2624:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2625: 
-
+2626:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 2627:             # use y fill value
-
+2628:             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);
-
+2629:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2630: 
-
 2631:             # advance x location
-
+2632:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2633:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2634:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2635:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2636:         else:
-
 2637:             # use x fill value
-
+2638:             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]) ))));
-
+2639:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2640: 
-
 2641:             # advance y location
-
+2642:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2643:             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:;
-  }
-
+2644:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2645:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2646: 
-
+2647:     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, 2647, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2647, __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;
-
 2648: 
-
 2649: 
-
 2650: @cython.wraparound(False)
-
 2651: @cython.boundscheck(False)
-
+2652: 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;
-}
-
 2653:                                               IntIndex xindex,
-
 2654:                                               float64_t xfill,
-
 2655:                                               float64_t[:] y_,
-
 2656:                                               IntIndex yindex,
-
 2657:                                               float64_t yfill):
-
 2658:     cdef:
-
 2659:         IntIndex out_index
-
+2660:         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;
-
 2661:         int32_t xloc, yloc
-
 2662:         int32_t[:] xindices, yindices, out_indices
-
 2663:         float64_t[:] x, y
-
 2664:         ndarray[float64_t, ndim=1] out
-
 2665: 
-
 2666:     # suppress Cython compiler warnings due to inlining
-
+2667:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2668:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2669: 
-
 2670:     # need to do this first to know size of result array
-
+2671:     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, 2671, __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;
-
+2672:     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, 2672, __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, 2672, __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, 2672, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2672, __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, 2672, __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, 2672, __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, 2672, __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, 2672, __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, 2672, __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, 2672, __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, 2672, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2673: 
-
+2674:     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, 2674, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2675:     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, 2675, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2676:     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, 2676, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 2677: 
-
 2678:     # walk the two SparseVectors, adding matched locations...
-
+2679:     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;
-
+2680:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2681:             # use x fill value
-
+2682:             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]) ))));
-
+2683:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2684:             continue
-
      goto __pyx_L3_continue;
-
 2685: 
-
+2686:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2687:             # use y fill value
-
+2688:             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);
-
+2689:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2690:             continue
-
      goto __pyx_L3_continue;
-
 2691: 
-
+2692:         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]) )));
-
+2693:         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]) )));
-
 2694: 
-
 2695:         # each index in the out_index had to come from either x, y, or both
-
+2696:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+2697:             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]) ))));
-
+2698:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2699:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2700:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 2701:             # use y fill value
-
+2702:             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);
-
+2703:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2704:         else:
-
 2705:             # use x fill value
-
+2706:             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]) ))));
-
+2707:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 2708: 
-
+2709:     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, 2709, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2709, __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;
-
 2710: 
-
 2711: 
-
+2712: cpdef sparse_pow_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_31sparse_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_31sparse_pow_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_31sparse_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, 2712, __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, 2712, __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, 2712, __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, 2712, __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, 2712, __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, 2712, __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, 2712, __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, 2713, __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, 2714, __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, 2715, __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, 2712, __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, 2713, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2715, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_30sparse_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_30sparse_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, 2712, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2712, __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, 2712, __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;
-}
-
 2713:                                   SparseIndex xindex, float64_t xfill,
-
 2714:                                   float64_t[:] y,
-
 2715:                                   SparseIndex yindex, float64_t yfill):
-
 2716: 
-
+2717:     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) {
-/* … */
-  }
-
+2718:         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, 2718, __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, 2718, __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, 2718, __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, 2718, __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;
-
+2719:                                              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, 2719, __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, 2719, __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, 2719, __pyx_L1_error)
-
+2720:     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)) {
-/* … */
-  }
-
+2721:         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, 2721, __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, 2721, __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, 2721, __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, 2721, __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;
-
+2722:                                            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, 2722, __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, 2722, __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, 2722, __pyx_L1_error)
-
 2723:     else:
-
+2724:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 2724, __pyx_L1_error)
-  }
-
 2725: 
-
 2726: 
-
 2727: @cython.wraparound(False)
-
 2728: @cython.boundscheck(False)
-
+2729: 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;
-}
-
 2730:                                                 BlockIndex xindex,
-
 2731:                                                 int64_t xfill,
-
 2732:                                                 int64_t[:] y_,
-
 2733:                                                 BlockIndex yindex,
-
 2734:                                                 int64_t yfill):
-
 2735:     '''
-
 2736:     Binary operator on BlockIndex objects with fill values
-
 2737:     '''
-
 2738: 
-
 2739:     cdef:
-
 2740:         BlockIndex out_index
-
+2741:         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;
-
+2742:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 2743:         int32_t xloc, yloc
-
+2744:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 2745: 
-
 2746:         int64_t[:] x, y
-
 2747:         ndarray[int64_t, ndim=1] out
-
 2748: 
-
 2749:     # to suppress Cython warning
-
+2750:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2751:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2752: 
-
+2753:     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, 2753, __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;
-
+2754:     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, 2754, __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, 2754, __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, 2754, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2754, __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, 2754, __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, 2754, __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, 2754, __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, 2754, __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, 2754, __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, 2754, __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, 2754, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2755: 
-
 2756:     # Wow, what a hack job. Need to do something about this
-
 2757: 
-
 2758:     # walk the two SparseVectors, adding matched locations...
-
+2759:     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;
-
+2760:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2761:             # use y fill value
-
+2762:             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);
-
+2763:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2764: 
-
 2765:             # advance x location
-
+2766:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2767:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2768:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2769:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+2770:             continue
-
      goto __pyx_L3_continue;
-
 2771: 
-
+2772:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2773:             # use x fill value
-
+2774:             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]) ))));
-
+2775:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2776: 
-
 2777:             # advance y location
-
+2778:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2779:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2780:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2781:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+2782:             continue
-
      goto __pyx_L3_continue;
-
 2783: 
-
+2784:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+2785:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 2786: 
-
 2787:         # each index in the out_index had to come from either x, y, or both
-
+2788:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+2789:             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]) ))));
-
+2790:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2791:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2792: 
-
 2793:             # advance both locations
-
+2794:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2795:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2796:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2797:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2798: 
-
+2799:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2800:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2801:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2802:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2803: 
-
+2804:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 2805:             # use y fill value
-
+2806:             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);
-
+2807:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2808: 
-
 2809:             # advance x location
-
+2810:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2811:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2812:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2813:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2814:         else:
-
 2815:             # use x fill value
-
+2816:             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]) ))));
-
+2817:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2818: 
-
 2819:             # advance y location
-
+2820:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2821:             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:;
-  }
-
+2822:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2823:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2824: 
-
+2825:     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, 2825, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2825, __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;
-
 2826: 
-
 2827: 
-
 2828: @cython.wraparound(False)
-
 2829: @cython.boundscheck(False)
-
+2830: 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;
-}
-
 2831:                                               IntIndex xindex,
-
 2832:                                               int64_t xfill,
-
 2833:                                               int64_t[:] y_,
-
 2834:                                               IntIndex yindex,
-
 2835:                                               int64_t yfill):
-
 2836:     cdef:
-
 2837:         IntIndex out_index
-
+2838:         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;
-
 2839:         int32_t xloc, yloc
-
 2840:         int32_t[:] xindices, yindices, out_indices
-
 2841:         int64_t[:] x, y
-
 2842:         ndarray[int64_t, ndim=1] out
-
 2843: 
-
 2844:     # suppress Cython compiler warnings due to inlining
-
+2845:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2846:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2847: 
-
 2848:     # need to do this first to know size of result array
-
+2849:     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, 2849, __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;
-
+2850:     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, 2850, __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, 2850, __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, 2850, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2850, __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, 2850, __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, 2850, __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, 2850, __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, 2850, __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, 2850, __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, 2850, __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, 2850, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2851: 
-
+2852:     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, 2852, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2853:     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, 2853, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+2854:     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, 2854, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 2855: 
-
 2856:     # walk the two SparseVectors, adding matched locations...
-
+2857:     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;
-
+2858:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2859:             # use x fill value
-
+2860:             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]) ))));
-
+2861:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2862:             continue
-
      goto __pyx_L3_continue;
-
 2863: 
-
+2864:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 2865:             # use y fill value
-
+2866:             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);
-
+2867:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2868:             continue
-
      goto __pyx_L3_continue;
-
 2869: 
-
+2870:         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]) )));
-
+2871:         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]) )));
-
 2872: 
-
 2873:         # each index in the out_index had to come from either x, y, or both
-
+2874:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+2875:             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]) ))));
-
+2876:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2877:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+2878:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 2879:             # use y fill value
-
+2880:             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);
-
+2881:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2882:         else:
-
 2883:             # use x fill value
-
+2884:             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]) ))));
-
+2885:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 2886: 
-
+2887:     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, 2887, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 2887, __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;
-
 2888: 
-
 2889: 
-
+2890: cpdef sparse_pow_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_33sparse_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_33sparse_pow_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_33sparse_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, 2890, __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, 2890, __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, 2890, __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, 2890, __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, 2890, __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, 2890, __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, 2890, __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, 2891, __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, 2892, __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, 2893, __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, 2890, __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, 2891, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 2893, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_32sparse_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_32sparse_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, 2890, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 2890, __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, 2890, __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;
-}
-
 2891:                                   SparseIndex xindex, int64_t xfill,
-
 2892:                                   int64_t[:] y,
-
 2893:                                   SparseIndex yindex, int64_t yfill):
-
 2894: 
-
+2895:     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) {
-/* … */
-  }
-
+2896:         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, 2896, __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, 2896, __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, 2896, __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, 2896, __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;
-
+2897:                                              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, 2897, __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, 2897, __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, 2897, __pyx_L1_error)
-
+2898:     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)) {
-/* … */
-  }
-
+2899:         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, 2899, __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, 2899, __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, 2899, __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, 2899, __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;
-
+2900:                                            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, 2900, __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, 2900, __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, 2900, __pyx_L1_error)
-
 2901:     else:
-
+2902:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 2902, __pyx_L1_error)
-  }
-
 2903: 
-
 2904: 
-
 2905: @cython.wraparound(False)
-
 2906: @cython.boundscheck(False)
-
+2907: 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;
-}
-
 2908:                                                 BlockIndex xindex,
-
 2909:                                                 float64_t xfill,
-
 2910:                                                 float64_t[:] y_,
-
 2911:                                                 BlockIndex yindex,
-
 2912:                                                 float64_t yfill):
-
 2913:     '''
-
 2914:     Binary operator on BlockIndex objects with fill values
-
 2915:     '''
-
 2916: 
-
 2917:     cdef:
-
 2918:         BlockIndex out_index
-
+2919:         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;
-
+2920:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 2921:         int32_t xloc, yloc
-
+2922:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 2923: 
-
 2924:         float64_t[:] x, y
-
 2925:         ndarray[uint8_t, ndim=1] out
-
 2926: 
-
 2927:     # to suppress Cython warning
-
+2928:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+2929:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 2930: 
-
+2931:     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, 2931, __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;
-
+2932:     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, 2932, __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, 2932, __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, 2932, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 2932, __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, 2932, __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, 2932, __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, 2932, __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, 2932, __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, 2932, __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, 2932, __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, 2932, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 2933: 
-
 2934:     # Wow, what a hack job. Need to do something about this
-
 2935: 
-
 2936:     # walk the two SparseVectors, adding matched locations...
-
+2937:     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;
-
+2938:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2939:             # use y fill value
-
+2940:             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);
-
+2941:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2942: 
-
 2943:             # advance x location
-
+2944:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2945:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2946:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2947:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+2948:             continue
-
      goto __pyx_L3_continue;
-
 2949: 
-
+2950:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 2951:             # use x fill value
-
+2952:             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]) ))));
-
+2953:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2954: 
-
 2955:             # advance y location
-
+2956:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2957:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2958:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2959:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+2960:             continue
-
      goto __pyx_L3_continue;
-
 2961: 
-
+2962:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+2963:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 2964: 
-
 2965:         # each index in the out_index had to come from either x, y, or both
-
+2966:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+2967:             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]) ))));
-
+2968:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+2969:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2970: 
-
 2971:             # advance both locations
-
+2972:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2973:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2974:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2975:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2976: 
-
+2977:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2978:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2979:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+2980:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 2981: 
-
+2982:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 2983:             # use y fill value
-
+2984:             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);
-
+2985:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 2986: 
-
 2987:             # advance x location
-
+2988:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+2989:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+2990:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+2991:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 2992:         else:
-
 2993:             # use x fill value
-
+2994:             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]) ))));
-
+2995:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 2996: 
-
 2997:             # advance y location
-
+2998:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+2999:             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:;
-  }
-
+3000:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3001:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3002: 
-
+3003:     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, 3003, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3003, __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;
-
 3004: 
-
 3005: 
-
 3006: @cython.wraparound(False)
-
 3007: @cython.boundscheck(False)
-
+3008: 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;
-}
-
 3009:                                               IntIndex xindex,
-
 3010:                                               float64_t xfill,
-
 3011:                                               float64_t[:] y_,
-
 3012:                                               IntIndex yindex,
-
 3013:                                               float64_t yfill):
-
 3014:     cdef:
-
 3015:         IntIndex out_index
-
+3016:         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;
-
 3017:         int32_t xloc, yloc
-
 3018:         int32_t[:] xindices, yindices, out_indices
-
 3019:         float64_t[:] x, y
-
 3020:         ndarray[uint8_t, ndim=1] out
-
 3021: 
-
 3022:     # suppress Cython compiler warnings due to inlining
-
+3023:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3024:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3025: 
-
 3026:     # need to do this first to know size of result array
-
+3027:     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, 3027, __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;
-
+3028:     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, 3028, __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, 3028, __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, 3028, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3028, __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, 3028, __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, 3028, __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, 3028, __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, 3028, __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, 3028, __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, 3028, __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, 3028, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3029: 
-
+3030:     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, 3030, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3031:     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, 3031, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3032:     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, 3032, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 3033: 
-
 3034:     # walk the two SparseVectors, adding matched locations...
-
+3035:     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;
-
+3036:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3037:             # use x fill value
-
+3038:             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]) ))));
-
+3039:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3040:             continue
-
      goto __pyx_L3_continue;
-
 3041: 
-
+3042:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3043:             # use y fill value
-
+3044:             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);
-
+3045:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3046:             continue
-
      goto __pyx_L3_continue;
-
 3047: 
-
+3048:         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]) )));
-
+3049:         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]) )));
-
 3050: 
-
 3051:         # each index in the out_index had to come from either x, y, or both
-
+3052:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+3053:             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]) ))));
-
+3054:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3055:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3056:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 3057:             # use y fill value
-
+3058:             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);
-
+3059:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3060:         else:
-
 3061:             # use x fill value
-
+3062:             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]) ))));
-
+3063:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 3064: 
-
+3065:     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, 3065, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3065, __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;
-
 3066: 
-
 3067: 
-
+3068: cpdef sparse_eq_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_35sparse_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_35sparse_eq_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_35sparse_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, 3068, __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, 3068, __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, 3068, __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, 3068, __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, 3068, __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, 3068, __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, 3068, __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, 3069, __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, 3070, __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, 3071, __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, 3068, __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, 3069, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3071, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_34sparse_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_34sparse_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, 3068, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3068, __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, 3068, __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;
-}
-
 3069:                                   SparseIndex xindex, float64_t xfill,
-
 3070:                                   float64_t[:] y,
-
 3071:                                   SparseIndex yindex, float64_t yfill):
-
 3072: 
-
+3073:     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) {
-/* … */
-  }
-
+3074:         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, 3074, __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, 3074, __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, 3074, __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, 3074, __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;
-
+3075:                                              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, 3075, __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, 3075, __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, 3075, __pyx_L1_error)
-
+3076:     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)) {
-/* … */
-  }
-
+3077:         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, 3077, __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, 3077, __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, 3077, __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, 3077, __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;
-
+3078:                                            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, 3078, __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, 3078, __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, 3078, __pyx_L1_error)
-
 3079:     else:
-
+3080:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 3080, __pyx_L1_error)
-  }
-
 3081: 
-
 3082: 
-
 3083: @cython.wraparound(False)
-
 3084: @cython.boundscheck(False)
-
+3085: 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;
-}
-
 3086:                                                 BlockIndex xindex,
-
 3087:                                                 int64_t xfill,
-
 3088:                                                 int64_t[:] y_,
-
 3089:                                                 BlockIndex yindex,
-
 3090:                                                 int64_t yfill):
-
 3091:     '''
-
 3092:     Binary operator on BlockIndex objects with fill values
-
 3093:     '''
-
 3094: 
-
 3095:     cdef:
-
 3096:         BlockIndex out_index
-
+3097:         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;
-
+3098:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 3099:         int32_t xloc, yloc
-
+3100:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 3101: 
-
 3102:         int64_t[:] x, y
-
 3103:         ndarray[uint8_t, ndim=1] out
-
 3104: 
-
 3105:     # to suppress Cython warning
-
+3106:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3107:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3108: 
-
+3109:     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, 3109, __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;
-
+3110:     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, 3110, __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, 3110, __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, 3110, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3110, __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, 3110, __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, 3110, __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, 3110, __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, 3110, __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, 3110, __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, 3110, __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, 3110, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3111: 
-
 3112:     # Wow, what a hack job. Need to do something about this
-
 3113: 
-
 3114:     # walk the two SparseVectors, adding matched locations...
-
+3115:     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;
-
+3116:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3117:             # use y fill value
-
+3118:             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);
-
+3119:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3120: 
-
 3121:             # advance x location
-
+3122:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3123:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3124:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3125:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+3126:             continue
-
      goto __pyx_L3_continue;
-
 3127: 
-
+3128:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3129:             # use x fill value
-
+3130:             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]) ))));
-
+3131:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3132: 
-
 3133:             # advance y location
-
+3134:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3135:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3136:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3137:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+3138:             continue
-
      goto __pyx_L3_continue;
-
 3139: 
-
+3140:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+3141:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 3142: 
-
 3143:         # each index in the out_index had to come from either x, y, or both
-
+3144:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+3145:             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]) ))));
-
+3146:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3147:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3148: 
-
 3149:             # advance both locations
-
+3150:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3151:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3152:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3153:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3154: 
-
+3155:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3156:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3157:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3158:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3159: 
-
+3160:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 3161:             # use y fill value
-
+3162:             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);
-
+3163:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3164: 
-
 3165:             # advance x location
-
+3166:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3167:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3168:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3169:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3170:         else:
-
 3171:             # use x fill value
-
+3172:             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]) ))));
-
+3173:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3174: 
-
 3175:             # advance y location
-
+3176:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3177:             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:;
-  }
-
+3178:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3179:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3180: 
-
+3181:     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, 3181, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3181, __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;
-
 3182: 
-
 3183: 
-
 3184: @cython.wraparound(False)
-
 3185: @cython.boundscheck(False)
-
+3186: 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;
-}
-
 3187:                                               IntIndex xindex,
-
 3188:                                               int64_t xfill,
-
 3189:                                               int64_t[:] y_,
-
 3190:                                               IntIndex yindex,
-
 3191:                                               int64_t yfill):
-
 3192:     cdef:
-
 3193:         IntIndex out_index
-
+3194:         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;
-
 3195:         int32_t xloc, yloc
-
 3196:         int32_t[:] xindices, yindices, out_indices
-
 3197:         int64_t[:] x, y
-
 3198:         ndarray[uint8_t, ndim=1] out
-
 3199: 
-
 3200:     # suppress Cython compiler warnings due to inlining
-
+3201:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3202:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3203: 
-
 3204:     # need to do this first to know size of result array
-
+3205:     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, 3205, __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;
-
+3206:     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, 3206, __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, 3206, __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, 3206, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3206, __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, 3206, __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, 3206, __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, 3206, __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, 3206, __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, 3206, __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, 3206, __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, 3206, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3207: 
-
+3208:     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, 3208, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3209:     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, 3209, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3210:     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, 3210, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 3211: 
-
 3212:     # walk the two SparseVectors, adding matched locations...
-
+3213:     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;
-
+3214:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3215:             # use x fill value
-
+3216:             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]) ))));
-
+3217:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3218:             continue
-
      goto __pyx_L3_continue;
-
 3219: 
-
+3220:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3221:             # use y fill value
-
+3222:             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);
-
+3223:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3224:             continue
-
      goto __pyx_L3_continue;
-
 3225: 
-
+3226:         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]) )));
-
+3227:         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]) )));
-
 3228: 
-
 3229:         # each index in the out_index had to come from either x, y, or both
-
+3230:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+3231:             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]) ))));
-
+3232:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3233:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3234:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 3235:             # use y fill value
-
+3236:             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);
-
+3237:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3238:         else:
-
 3239:             # use x fill value
-
+3240:             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]) ))));
-
+3241:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 3242: 
-
+3243:     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, 3243, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3243, __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;
-
 3244: 
-
 3245: 
-
+3246: cpdef sparse_eq_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_37sparse_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_37sparse_eq_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_37sparse_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, 3246, __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, 3246, __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, 3246, __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, 3246, __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, 3246, __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, 3246, __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, 3246, __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, 3247, __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, 3248, __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, 3249, __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, 3246, __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, 3247, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3249, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_36sparse_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_36sparse_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, 3246, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3246, __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, 3246, __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;
-}
-
 3247:                                   SparseIndex xindex, int64_t xfill,
-
 3248:                                   int64_t[:] y,
-
 3249:                                   SparseIndex yindex, int64_t yfill):
-
 3250: 
-
+3251:     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) {
-/* … */
-  }
-
+3252:         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, 3252, __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, 3252, __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, 3252, __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, 3252, __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;
-
+3253:                                              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, 3253, __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, 3253, __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, 3253, __pyx_L1_error)
-
+3254:     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)) {
-/* … */
-  }
-
+3255:         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, 3255, __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, 3255, __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, 3255, __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, 3255, __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;
-
+3256:                                            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, 3256, __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, 3256, __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, 3256, __pyx_L1_error)
-
 3257:     else:
-
+3258:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 3258, __pyx_L1_error)
-  }
-
 3259: 
-
 3260: 
-
 3261: @cython.wraparound(False)
-
 3262: @cython.boundscheck(False)
-
+3263: 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;
-}
-
 3264:                                                 BlockIndex xindex,
-
 3265:                                                 float64_t xfill,
-
 3266:                                                 float64_t[:] y_,
-
 3267:                                                 BlockIndex yindex,
-
 3268:                                                 float64_t yfill):
-
 3269:     '''
-
 3270:     Binary operator on BlockIndex objects with fill values
-
 3271:     '''
-
 3272: 
-
 3273:     cdef:
-
 3274:         BlockIndex out_index
-
+3275:         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;
-
+3276:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 3277:         int32_t xloc, yloc
-
+3278:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 3279: 
-
 3280:         float64_t[:] x, y
-
 3281:         ndarray[uint8_t, ndim=1] out
-
 3282: 
-
 3283:     # to suppress Cython warning
-
+3284:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3285:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3286: 
-
+3287:     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, 3287, __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;
-
+3288:     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, 3288, __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, 3288, __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, 3288, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3288, __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, 3288, __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, 3288, __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, 3288, __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, 3288, __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, 3288, __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, 3288, __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, 3288, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3289: 
-
 3290:     # Wow, what a hack job. Need to do something about this
-
 3291: 
-
 3292:     # walk the two SparseVectors, adding matched locations...
-
+3293:     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;
-
+3294:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3295:             # use y fill value
-
+3296:             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);
-
+3297:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3298: 
-
 3299:             # advance x location
-
+3300:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3301:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3302:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3303:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+3304:             continue
-
      goto __pyx_L3_continue;
-
 3305: 
-
+3306:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3307:             # use x fill value
-
+3308:             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]) ))));
-
+3309:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3310: 
-
 3311:             # advance y location
-
+3312:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3313:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3314:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3315:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+3316:             continue
-
      goto __pyx_L3_continue;
-
 3317: 
-
+3318:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+3319:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 3320: 
-
 3321:         # each index in the out_index had to come from either x, y, or both
-
+3322:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+3323:             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]) ))));
-
+3324:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3325:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3326: 
-
 3327:             # advance both locations
-
+3328:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3329:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3330:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3331:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3332: 
-
+3333:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3334:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3335:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3336:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3337: 
-
+3338:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 3339:             # use y fill value
-
+3340:             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);
-
+3341:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3342: 
-
 3343:             # advance x location
-
+3344:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3345:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3346:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3347:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3348:         else:
-
 3349:             # use x fill value
-
+3350:             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]) ))));
-
+3351:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3352: 
-
 3353:             # advance y location
-
+3354:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3355:             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:;
-  }
-
+3356:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3357:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3358: 
-
+3359:     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, 3359, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3359, __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;
-
 3360: 
-
 3361: 
-
 3362: @cython.wraparound(False)
-
 3363: @cython.boundscheck(False)
-
+3364: 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;
-}
-
 3365:                                               IntIndex xindex,
-
 3366:                                               float64_t xfill,
-
 3367:                                               float64_t[:] y_,
-
 3368:                                               IntIndex yindex,
-
 3369:                                               float64_t yfill):
-
 3370:     cdef:
-
 3371:         IntIndex out_index
-
+3372:         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;
-
 3373:         int32_t xloc, yloc
-
 3374:         int32_t[:] xindices, yindices, out_indices
-
 3375:         float64_t[:] x, y
-
 3376:         ndarray[uint8_t, ndim=1] out
-
 3377: 
-
 3378:     # suppress Cython compiler warnings due to inlining
-
+3379:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3380:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3381: 
-
 3382:     # need to do this first to know size of result array
-
+3383:     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, 3383, __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;
-
+3384:     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, 3384, __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, 3384, __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, 3384, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3384, __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, 3384, __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, 3384, __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, 3384, __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, 3384, __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, 3384, __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, 3384, __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, 3384, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3385: 
-
+3386:     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, 3386, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3387:     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, 3387, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3388:     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, 3388, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 3389: 
-
 3390:     # walk the two SparseVectors, adding matched locations...
-
+3391:     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;
-
+3392:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3393:             # use x fill value
-
+3394:             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]) ))));
-
+3395:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3396:             continue
-
      goto __pyx_L3_continue;
-
 3397: 
-
+3398:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3399:             # use y fill value
-
+3400:             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);
-
+3401:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3402:             continue
-
      goto __pyx_L3_continue;
-
 3403: 
-
+3404:         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]) )));
-
+3405:         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]) )));
-
 3406: 
-
 3407:         # each index in the out_index had to come from either x, y, or both
-
+3408:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+3409:             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]) ))));
-
+3410:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3411:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3412:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 3413:             # use y fill value
-
+3414:             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);
-
+3415:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3416:         else:
-
 3417:             # use x fill value
-
+3418:             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]) ))));
-
+3419:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 3420: 
-
+3421:     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, 3421, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3421, __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;
-
 3422: 
-
 3423: 
-
+3424: cpdef sparse_ne_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_39sparse_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_39sparse_ne_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_39sparse_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, 3424, __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, 3424, __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, 3424, __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, 3424, __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, 3424, __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, 3424, __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, 3424, __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, 3425, __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, 3426, __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, 3427, __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, 3424, __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, 3425, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3427, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_38sparse_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_38sparse_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, 3424, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3424, __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, 3424, __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;
-}
-
 3425:                                   SparseIndex xindex, float64_t xfill,
-
 3426:                                   float64_t[:] y,
-
 3427:                                   SparseIndex yindex, float64_t yfill):
-
 3428: 
-
+3429:     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) {
-/* … */
-  }
-
+3430:         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, 3430, __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, 3430, __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, 3430, __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, 3430, __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;
-
+3431:                                              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, 3431, __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, 3431, __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, 3431, __pyx_L1_error)
-
+3432:     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)) {
-/* … */
-  }
-
+3433:         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, 3433, __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, 3433, __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, 3433, __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, 3433, __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;
-
+3434:                                            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, 3434, __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, 3434, __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, 3434, __pyx_L1_error)
-
 3435:     else:
-
+3436:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 3436, __pyx_L1_error)
-  }
-
 3437: 
-
 3438: 
-
 3439: @cython.wraparound(False)
-
 3440: @cython.boundscheck(False)
-
+3441: 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;
-}
-
 3442:                                                 BlockIndex xindex,
-
 3443:                                                 int64_t xfill,
-
 3444:                                                 int64_t[:] y_,
-
 3445:                                                 BlockIndex yindex,
-
 3446:                                                 int64_t yfill):
-
 3447:     '''
-
 3448:     Binary operator on BlockIndex objects with fill values
-
 3449:     '''
-
 3450: 
-
 3451:     cdef:
-
 3452:         BlockIndex out_index
-
+3453:         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;
-
+3454:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 3455:         int32_t xloc, yloc
-
+3456:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 3457: 
-
 3458:         int64_t[:] x, y
-
 3459:         ndarray[uint8_t, ndim=1] out
-
 3460: 
-
 3461:     # to suppress Cython warning
-
+3462:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3463:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3464: 
-
+3465:     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, 3465, __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;
-
+3466:     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, 3466, __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, 3466, __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, 3466, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3466, __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, 3466, __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, 3466, __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, 3466, __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, 3466, __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, 3466, __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, 3466, __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, 3466, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3467: 
-
 3468:     # Wow, what a hack job. Need to do something about this
-
 3469: 
-
 3470:     # walk the two SparseVectors, adding matched locations...
-
+3471:     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;
-
+3472:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3473:             # use y fill value
-
+3474:             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);
-
+3475:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3476: 
-
 3477:             # advance x location
-
+3478:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3479:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3480:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3481:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+3482:             continue
-
      goto __pyx_L3_continue;
-
 3483: 
-
+3484:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3485:             # use x fill value
-
+3486:             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]) ))));
-
+3487:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3488: 
-
 3489:             # advance y location
-
+3490:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3491:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3492:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3493:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+3494:             continue
-
      goto __pyx_L3_continue;
-
 3495: 
-
+3496:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+3497:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 3498: 
-
 3499:         # each index in the out_index had to come from either x, y, or both
-
+3500:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+3501:             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]) ))));
-
+3502:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3503:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3504: 
-
 3505:             # advance both locations
-
+3506:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3507:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3508:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3509:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3510: 
-
+3511:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3512:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3513:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3514:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3515: 
-
+3516:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 3517:             # use y fill value
-
+3518:             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);
-
+3519:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3520: 
-
 3521:             # advance x location
-
+3522:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3523:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3524:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3525:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3526:         else:
-
 3527:             # use x fill value
-
+3528:             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]) ))));
-
+3529:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3530: 
-
 3531:             # advance y location
-
+3532:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3533:             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:;
-  }
-
+3534:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3535:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3536: 
-
+3537:     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, 3537, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3537, __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;
-
 3538: 
-
 3539: 
-
 3540: @cython.wraparound(False)
-
 3541: @cython.boundscheck(False)
-
+3542: 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;
-}
-
 3543:                                               IntIndex xindex,
-
 3544:                                               int64_t xfill,
-
 3545:                                               int64_t[:] y_,
-
 3546:                                               IntIndex yindex,
-
 3547:                                               int64_t yfill):
-
 3548:     cdef:
-
 3549:         IntIndex out_index
-
+3550:         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;
-
 3551:         int32_t xloc, yloc
-
 3552:         int32_t[:] xindices, yindices, out_indices
-
 3553:         int64_t[:] x, y
-
 3554:         ndarray[uint8_t, ndim=1] out
-
 3555: 
-
 3556:     # suppress Cython compiler warnings due to inlining
-
+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:     # need to do this first to know size of result array
-
+3561:     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, 3561, __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;
-
+3562:     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, 3562, __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, 3562, __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, 3562, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3562, __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, 3562, __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, 3562, __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, 3562, __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, 3562, __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, 3562, __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, 3562, __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, 3562, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3563: 
-
+3564:     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, 3564, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3565:     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, 3565, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3566:     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, 3566, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 3567: 
-
 3568:     # walk the two SparseVectors, adding matched locations...
-
+3569:     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;
-
+3570:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3571:             # use x fill value
-
+3572:             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]) ))));
-
+3573:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3574:             continue
-
      goto __pyx_L3_continue;
-
 3575: 
-
+3576:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3577:             # use y fill value
-
+3578:             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);
-
+3579:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3580:             continue
-
      goto __pyx_L3_continue;
-
 3581: 
-
+3582:         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]) )));
-
+3583:         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]) )));
-
 3584: 
-
 3585:         # each index in the out_index had to come from either x, y, or both
-
+3586:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+3587:             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]) ))));
-
+3588:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3589:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3590:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 3591:             # use y fill value
-
+3592:             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);
-
+3593:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3594:         else:
-
 3595:             # use x fill value
-
+3596:             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]) ))));
-
+3597:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 3598: 
-
+3599:     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, 3599, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3599, __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;
-
 3600: 
-
 3601: 
-
+3602: cpdef sparse_ne_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_41sparse_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_41sparse_ne_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_41sparse_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, 3602, __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, 3602, __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, 3602, __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, 3602, __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, 3602, __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, 3602, __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, 3602, __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, 3603, __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, 3604, __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, 3605, __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, 3602, __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, 3603, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3605, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_40sparse_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_40sparse_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, 3602, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3602, __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, 3602, __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;
-}
-
 3603:                                   SparseIndex xindex, int64_t xfill,
-
 3604:                                   int64_t[:] y,
-
 3605:                                   SparseIndex yindex, int64_t yfill):
-
 3606: 
-
+3607:     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) {
-/* … */
-  }
-
+3608:         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, 3608, __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, 3608, __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, 3608, __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, 3608, __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;
-
+3609:                                              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, 3609, __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, 3609, __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, 3609, __pyx_L1_error)
-
+3610:     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)) {
-/* … */
-  }
-
+3611:         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, 3611, __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, 3611, __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, 3611, __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, 3611, __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;
-
+3612:                                            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, 3612, __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, 3612, __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, 3612, __pyx_L1_error)
-
 3613:     else:
-
+3614:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 3614, __pyx_L1_error)
-  }
-
 3615: 
-
 3616: 
-
 3617: @cython.wraparound(False)
-
 3618: @cython.boundscheck(False)
-
+3619: 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;
-}
-
 3620:                                                 BlockIndex xindex,
-
 3621:                                                 float64_t xfill,
-
 3622:                                                 float64_t[:] y_,
-
 3623:                                                 BlockIndex yindex,
-
 3624:                                                 float64_t yfill):
-
 3625:     '''
-
 3626:     Binary operator on BlockIndex objects with fill values
-
 3627:     '''
-
 3628: 
-
 3629:     cdef:
-
 3630:         BlockIndex out_index
-
+3631:         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;
-
+3632:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 3633:         int32_t xloc, yloc
-
+3634:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 3635: 
-
 3636:         float64_t[:] x, y
-
 3637:         ndarray[uint8_t, ndim=1] out
-
 3638: 
-
 3639:     # to suppress Cython warning
-
+3640:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3641:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3642: 
-
+3643:     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, 3643, __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;
-
+3644:     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, 3644, __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, 3644, __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, 3644, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3644, __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, 3644, __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, 3644, __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, 3644, __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, 3644, __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, 3644, __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, 3644, __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, 3644, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3645: 
-
 3646:     # Wow, what a hack job. Need to do something about this
-
 3647: 
-
 3648:     # walk the two SparseVectors, adding matched locations...
-
+3649:     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;
-
+3650:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3651:             # use y fill value
-
+3652:             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);
-
+3653:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3654: 
-
 3655:             # advance x location
-
+3656:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3657:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3658:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3659:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+3660:             continue
-
      goto __pyx_L3_continue;
-
 3661: 
-
+3662:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3663:             # use x fill value
-
+3664:             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]) ))));
-
+3665:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3666: 
-
 3667:             # advance y location
-
+3668:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3669:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3670:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3671:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+3672:             continue
-
      goto __pyx_L3_continue;
-
 3673: 
-
+3674:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+3675:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 3676: 
-
 3677:         # each index in the out_index had to come from either x, y, or both
-
+3678:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+3679:             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]) ))));
-
+3680:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3681:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3682: 
-
 3683:             # advance both locations
-
+3684:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3685:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3686:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3687:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3688: 
-
+3689:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3690:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3691:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3692:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3693: 
-
+3694:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 3695:             # use y fill value
-
+3696:             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);
-
+3697:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3698: 
-
 3699:             # advance x location
-
+3700:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3701:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3702:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3703:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3704:         else:
-
 3705:             # use x fill value
-
+3706:             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]) ))));
-
+3707:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3708: 
-
 3709:             # advance y location
-
+3710:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3711:             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:;
-  }
-
+3712:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3713:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3714: 
-
+3715:     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, 3715, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3715, __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;
-
 3716: 
-
 3717: 
-
 3718: @cython.wraparound(False)
-
 3719: @cython.boundscheck(False)
-
+3720: 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;
-}
-
 3721:                                               IntIndex xindex,
-
 3722:                                               float64_t xfill,
-
 3723:                                               float64_t[:] y_,
-
 3724:                                               IntIndex yindex,
-
 3725:                                               float64_t yfill):
-
 3726:     cdef:
-
 3727:         IntIndex out_index
-
+3728:         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;
-
 3729:         int32_t xloc, yloc
-
 3730:         int32_t[:] xindices, yindices, out_indices
-
 3731:         float64_t[:] x, y
-
 3732:         ndarray[uint8_t, ndim=1] out
-
 3733: 
-
 3734:     # suppress Cython compiler warnings due to inlining
-
+3735:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3736:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3737: 
-
 3738:     # need to do this first to know size of result array
-
+3739:     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, 3739, __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;
-
+3740:     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, 3740, __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, 3740, __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, 3740, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3740, __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, 3740, __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, 3740, __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, 3740, __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, 3740, __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, 3740, __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, 3740, __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, 3740, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3741: 
-
+3742:     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, 3742, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3743:     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, 3743, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3744:     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, 3744, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 3745: 
-
 3746:     # walk the two SparseVectors, adding matched locations...
-
+3747:     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;
-
+3748:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3749:             # use x fill value
-
+3750:             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]) ))));
-
+3751:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3752:             continue
-
      goto __pyx_L3_continue;
-
 3753: 
-
+3754:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3755:             # use y fill value
-
+3756:             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);
-
+3757:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3758:             continue
-
      goto __pyx_L3_continue;
-
 3759: 
-
+3760:         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]) )));
-
+3761:         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]) )));
-
 3762: 
-
 3763:         # each index in the out_index had to come from either x, y, or both
-
+3764:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+3765:             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]) ))));
-
+3766:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3767:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3768:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 3769:             # use y fill value
-
+3770:             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);
-
+3771:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3772:         else:
-
 3773:             # use x fill value
-
+3774:             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]) ))));
-
+3775:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 3776: 
-
+3777:     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, 3777, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3777, __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;
-
 3778: 
-
 3779: 
-
+3780: cpdef sparse_lt_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_43sparse_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_43sparse_lt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_43sparse_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, 3780, __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, 3780, __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, 3780, __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, 3780, __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, 3780, __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, 3780, __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, 3780, __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, 3781, __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, 3782, __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, 3783, __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, 3780, __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, 3781, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3783, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_42sparse_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_42sparse_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, 3780, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3780, __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, 3780, __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;
-}
-
 3781:                                   SparseIndex xindex, float64_t xfill,
-
 3782:                                   float64_t[:] y,
-
 3783:                                   SparseIndex yindex, float64_t yfill):
-
 3784: 
-
+3785:     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) {
-/* … */
-  }
-
+3786:         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, 3786, __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, 3786, __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, 3786, __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, 3786, __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;
-
+3787:                                              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, 3787, __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, 3787, __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, 3787, __pyx_L1_error)
-
+3788:     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)) {
-/* … */
-  }
-
+3789:         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, 3789, __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, 3789, __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, 3789, __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, 3789, __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;
-
+3790:                                            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, 3790, __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, 3790, __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, 3790, __pyx_L1_error)
-
 3791:     else:
-
+3792:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 3792, __pyx_L1_error)
-  }
-
 3793: 
-
 3794: 
-
 3795: @cython.wraparound(False)
-
 3796: @cython.boundscheck(False)
-
+3797: 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;
-}
-
 3798:                                                 BlockIndex xindex,
-
 3799:                                                 int64_t xfill,
-
 3800:                                                 int64_t[:] y_,
-
 3801:                                                 BlockIndex yindex,
-
 3802:                                                 int64_t yfill):
-
 3803:     '''
-
 3804:     Binary operator on BlockIndex objects with fill values
-
 3805:     '''
-
 3806: 
-
 3807:     cdef:
-
 3808:         BlockIndex out_index
-
+3809:         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;
-
+3810:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 3811:         int32_t xloc, yloc
-
+3812:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 3813: 
-
 3814:         int64_t[:] x, y
-
 3815:         ndarray[uint8_t, ndim=1] out
-
 3816: 
-
 3817:     # to suppress Cython warning
-
+3818:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3819:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3820: 
-
+3821:     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, 3821, __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;
-
+3822:     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, 3822, __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, 3822, __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, 3822, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3822, __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, 3822, __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, 3822, __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, 3822, __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, 3822, __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, 3822, __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, 3822, __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, 3822, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3823: 
-
 3824:     # Wow, what a hack job. Need to do something about this
-
 3825: 
-
 3826:     # walk the two SparseVectors, adding matched locations...
-
+3827:     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;
-
+3828:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3829:             # use y fill value
-
+3830:             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);
-
+3831:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3832: 
-
 3833:             # advance x location
-
+3834:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3835:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3836:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3837:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+3838:             continue
-
      goto __pyx_L3_continue;
-
 3839: 
-
+3840:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 3841:             # use x fill value
-
+3842:             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]) ))));
-
+3843:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3844: 
-
 3845:             # advance y location
-
+3846:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3847:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3848:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3849:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+3850:             continue
-
      goto __pyx_L3_continue;
-
 3851: 
-
+3852:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+3853:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 3854: 
-
 3855:         # each index in the out_index had to come from either x, y, or both
-
+3856:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+3857:             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]) ))));
-
+3858:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3859:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3860: 
-
 3861:             # advance both locations
-
+3862:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3863:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3864:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3865:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3866: 
-
+3867:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3868:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3869:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3870:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3871: 
-
+3872:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 3873:             # use y fill value
-
+3874:             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);
-
+3875:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3876: 
-
 3877:             # advance x location
-
+3878:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+3879:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+3880:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+3881:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 3882:         else:
-
 3883:             # use x fill value
-
+3884:             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]) ))));
-
+3885:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 3886: 
-
 3887:             # advance y location
-
+3888:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+3889:             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:;
-  }
-
+3890:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+3891:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 3892: 
-
+3893:     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, 3893, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3893, __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;
-
 3894: 
-
 3895: 
-
 3896: @cython.wraparound(False)
-
 3897: @cython.boundscheck(False)
-
+3898: 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;
-}
-
 3899:                                               IntIndex xindex,
-
 3900:                                               int64_t xfill,
-
 3901:                                               int64_t[:] y_,
-
 3902:                                               IntIndex yindex,
-
 3903:                                               int64_t yfill):
-
 3904:     cdef:
-
 3905:         IntIndex out_index
-
+3906:         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;
-
 3907:         int32_t xloc, yloc
-
 3908:         int32_t[:] xindices, yindices, out_indices
-
 3909:         int64_t[:] x, y
-
 3910:         ndarray[uint8_t, ndim=1] out
-
 3911: 
-
 3912:     # suppress Cython compiler warnings due to inlining
-
+3913:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3914:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3915: 
-
 3916:     # need to do this first to know size of result array
-
+3917:     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, 3917, __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;
-
+3918:     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, 3918, __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, 3918, __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, 3918, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 3918, __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, 3918, __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, 3918, __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, 3918, __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, 3918, __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, 3918, __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, 3918, __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, 3918, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 3919: 
-
+3920:     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, 3920, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3921:     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, 3921, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+3922:     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, 3922, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 3923: 
-
 3924:     # walk the two SparseVectors, adding matched locations...
-
+3925:     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;
-
+3926:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3927:             # use x fill value
-
+3928:             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]) ))));
-
+3929:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3930:             continue
-
      goto __pyx_L3_continue;
-
 3931: 
-
+3932:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 3933:             # use y fill value
-
+3934:             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);
-
+3935:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3936:             continue
-
      goto __pyx_L3_continue;
-
 3937: 
-
+3938:         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]) )));
-
+3939:         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]) )));
-
 3940: 
-
 3941:         # each index in the out_index had to come from either x, y, or both
-
+3942:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+3943:             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]) ))));
-
+3944:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+3945:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+3946:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 3947:             # use y fill value
-
+3948:             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);
-
+3949:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 3950:         else:
-
 3951:             # use x fill value
-
+3952:             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]) ))));
-
+3953:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 3954: 
-
+3955:     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, 3955, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 3955, __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;
-
 3956: 
-
 3957: 
-
+3958: cpdef sparse_lt_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_45sparse_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_45sparse_lt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_45sparse_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, 3958, __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, 3958, __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, 3958, __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, 3958, __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, 3958, __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, 3958, __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, 3958, __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, 3959, __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, 3960, __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, 3961, __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, 3958, __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, 3959, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 3961, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_44sparse_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_44sparse_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, 3958, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 3958, __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, 3958, __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;
-}
-
 3959:                                   SparseIndex xindex, int64_t xfill,
-
 3960:                                   int64_t[:] y,
-
 3961:                                   SparseIndex yindex, int64_t yfill):
-
 3962: 
-
+3963:     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) {
-/* … */
-  }
-
+3964:         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, 3964, __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, 3964, __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, 3964, __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, 3964, __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;
-
+3965:                                              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, 3965, __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, 3965, __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, 3965, __pyx_L1_error)
-
+3966:     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)) {
-/* … */
-  }
-
+3967:         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, 3967, __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, 3967, __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, 3967, __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, 3967, __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;
-
+3968:                                            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, 3968, __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, 3968, __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, 3968, __pyx_L1_error)
-
 3969:     else:
-
+3970:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 3970, __pyx_L1_error)
-  }
-
 3971: 
-
 3972: 
-
 3973: @cython.wraparound(False)
-
 3974: @cython.boundscheck(False)
-
+3975: 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;
-}
-
 3976:                                                 BlockIndex xindex,
-
 3977:                                                 float64_t xfill,
-
 3978:                                                 float64_t[:] y_,
-
 3979:                                                 BlockIndex yindex,
-
 3980:                                                 float64_t yfill):
-
 3981:     '''
-
 3982:     Binary operator on BlockIndex objects with fill values
-
 3983:     '''
-
 3984: 
-
 3985:     cdef:
-
 3986:         BlockIndex out_index
-
+3987:         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;
-
+3988:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 3989:         int32_t xloc, yloc
-
+3990:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 3991: 
-
 3992:         float64_t[:] x, y
-
 3993:         ndarray[uint8_t, ndim=1] out
-
 3994: 
-
 3995:     # to suppress Cython warning
-
+3996:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+3997:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 3998: 
-
+3999:     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, 3999, __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;
-
+4000:     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, 4000, __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, 4000, __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, 4000, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4000, __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, 4000, __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, 4000, __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, 4000, __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, 4000, __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, 4000, __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, 4000, __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, 4000, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4001: 
-
 4002:     # Wow, what a hack job. Need to do something about this
-
 4003: 
-
 4004:     # walk the two SparseVectors, adding matched locations...
-
+4005:     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;
-
+4006:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4007:             # use y fill value
-
+4008:             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);
-
+4009:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4010: 
-
 4011:             # advance x location
-
+4012:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4013:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4014:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4015:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+4016:             continue
-
      goto __pyx_L3_continue;
-
 4017: 
-
+4018:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4019:             # use x fill value
-
+4020:             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]) ))));
-
+4021:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4022: 
-
 4023:             # advance y location
-
+4024:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4025:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4026:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4027:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+4028:             continue
-
      goto __pyx_L3_continue;
-
 4029: 
-
+4030:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+4031:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 4032: 
-
 4033:         # each index in the out_index had to come from either x, y, or both
-
+4034:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+4035:             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]) ))));
-
+4036:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4037:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4038: 
-
 4039:             # advance both locations
-
+4040:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4041:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4042:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4043:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4044: 
-
+4045:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4046:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4047:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4048:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4049: 
-
+4050:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 4051:             # use y fill value
-
+4052:             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);
-
+4053:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4054: 
-
 4055:             # advance x location
-
+4056:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4057:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4058:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4059:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4060:         else:
-
 4061:             # use x fill value
-
+4062:             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]) ))));
-
+4063:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4064: 
-
 4065:             # advance y location
-
+4066:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4067:             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:;
-  }
-
+4068:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4069:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4070: 
-
+4071:     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, 4071, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4071, __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;
-
 4072: 
-
 4073: 
-
 4074: @cython.wraparound(False)
-
 4075: @cython.boundscheck(False)
-
+4076: 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;
-}
-
 4077:                                               IntIndex xindex,
-
 4078:                                               float64_t xfill,
-
 4079:                                               float64_t[:] y_,
-
 4080:                                               IntIndex yindex,
-
 4081:                                               float64_t yfill):
-
 4082:     cdef:
-
 4083:         IntIndex out_index
-
+4084:         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;
-
 4085:         int32_t xloc, yloc
-
 4086:         int32_t[:] xindices, yindices, out_indices
-
 4087:         float64_t[:] x, y
-
 4088:         ndarray[uint8_t, ndim=1] out
-
 4089: 
-
 4090:     # suppress Cython compiler warnings due to inlining
-
+4091:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4092:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4093: 
-
 4094:     # need to do this first to know size of result array
-
+4095:     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, 4095, __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;
-
+4096:     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, 4096, __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, 4096, __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, 4096, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4096, __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, 4096, __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, 4096, __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, 4096, __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, 4096, __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, 4096, __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, 4096, __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, 4096, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4097: 
-
+4098:     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, 4098, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4099:     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, 4099, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4100:     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, 4100, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 4101: 
-
 4102:     # walk the two SparseVectors, adding matched locations...
-
+4103:     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;
-
+4104:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4105:             # use x fill value
-
+4106:             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]) ))));
-
+4107:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4108:             continue
-
      goto __pyx_L3_continue;
-
 4109: 
-
+4110:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4111:             # use y fill value
-
+4112:             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);
-
+4113:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4114:             continue
-
      goto __pyx_L3_continue;
-
 4115: 
-
+4116:         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]) )));
-
+4117:         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]) )));
-
 4118: 
-
 4119:         # each index in the out_index had to come from either x, y, or both
-
+4120:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+4121:             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]) ))));
-
+4122:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4123:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4124:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 4125:             # use y fill value
-
+4126:             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);
-
+4127:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4128:         else:
-
 4129:             # use x fill value
-
+4130:             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]) ))));
-
+4131:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 4132: 
-
+4133:     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, 4133, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4133, __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;
-
 4134: 
-
 4135: 
-
+4136: cpdef sparse_gt_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_47sparse_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_47sparse_gt_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_47sparse_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, 4136, __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, 4136, __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, 4136, __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, 4136, __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, 4136, __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, 4136, __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, 4136, __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, 4137, __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, 4138, __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, 4139, __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, 4136, __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, 4137, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4139, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_46sparse_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_46sparse_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, 4136, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4136, __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, 4136, __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;
-}
-
 4137:                                   SparseIndex xindex, float64_t xfill,
-
 4138:                                   float64_t[:] y,
-
 4139:                                   SparseIndex yindex, float64_t yfill):
-
 4140: 
-
+4141:     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) {
-/* … */
-  }
-
+4142:         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, 4142, __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, 4142, __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, 4142, __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, 4142, __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;
-
+4143:                                              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, 4143, __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, 4143, __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, 4143, __pyx_L1_error)
-
+4144:     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)) {
-/* … */
-  }
-
+4145:         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, 4145, __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, 4145, __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, 4145, __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, 4145, __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;
-
+4146:                                            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, 4146, __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, 4146, __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, 4146, __pyx_L1_error)
-
 4147:     else:
-
+4148:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 4148, __pyx_L1_error)
-  }
-
 4149: 
-
 4150: 
-
 4151: @cython.wraparound(False)
-
 4152: @cython.boundscheck(False)
-
+4153: 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;
-}
-
 4154:                                                 BlockIndex xindex,
-
 4155:                                                 int64_t xfill,
-
 4156:                                                 int64_t[:] y_,
-
 4157:                                                 BlockIndex yindex,
-
 4158:                                                 int64_t yfill):
-
 4159:     '''
-
 4160:     Binary operator on BlockIndex objects with fill values
-
 4161:     '''
-
 4162: 
-
 4163:     cdef:
-
 4164:         BlockIndex out_index
-
+4165:         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;
-
+4166:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 4167:         int32_t xloc, yloc
-
+4168:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 4169: 
-
 4170:         int64_t[:] x, y
-
 4171:         ndarray[uint8_t, ndim=1] out
-
 4172: 
-
 4173:     # to suppress Cython warning
-
+4174:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4175:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4176: 
-
+4177:     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, 4177, __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;
-
+4178:     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, 4178, __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, 4178, __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, 4178, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4178, __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, 4178, __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, 4178, __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, 4178, __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, 4178, __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, 4178, __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, 4178, __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, 4178, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4179: 
-
 4180:     # Wow, what a hack job. Need to do something about this
-
 4181: 
-
 4182:     # walk the two SparseVectors, adding matched locations...
-
+4183:     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;
-
+4184:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4185:             # use y fill value
-
+4186:             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);
-
+4187:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4188: 
-
 4189:             # advance x location
-
+4190:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4191:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4192:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4193:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+4194:             continue
-
      goto __pyx_L3_continue;
-
 4195: 
-
+4196:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4197:             # use x fill value
-
+4198:             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]) ))));
-
+4199:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4200: 
-
 4201:             # advance y location
-
+4202:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4203:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4204:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4205:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+4206:             continue
-
      goto __pyx_L3_continue;
-
 4207: 
-
+4208:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+4209:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 4210: 
-
 4211:         # each index in the out_index had to come from either x, y, or both
-
+4212:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+4213:             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]) ))));
-
+4214:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4215:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4216: 
-
 4217:             # advance both locations
-
+4218:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4219:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4220:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4221:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4222: 
-
+4223:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4224:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4225:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4226:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4227: 
-
+4228:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 4229:             # use y fill value
-
+4230:             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);
-
+4231:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4232: 
-
 4233:             # advance x location
-
+4234:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4235:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4236:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4237:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4238:         else:
-
 4239:             # use x fill value
-
+4240:             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]) ))));
-
+4241:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4242: 
-
 4243:             # advance y location
-
+4244:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4245:             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:;
-  }
-
+4246:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4247:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4248: 
-
+4249:     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, 4249, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4249, __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;
-
 4250: 
-
 4251: 
-
 4252: @cython.wraparound(False)
-
 4253: @cython.boundscheck(False)
-
+4254: 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;
-}
-
 4255:                                               IntIndex xindex,
-
 4256:                                               int64_t xfill,
-
 4257:                                               int64_t[:] y_,
-
 4258:                                               IntIndex yindex,
-
 4259:                                               int64_t yfill):
-
 4260:     cdef:
-
 4261:         IntIndex out_index
-
+4262:         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;
-
 4263:         int32_t xloc, yloc
-
 4264:         int32_t[:] xindices, yindices, out_indices
-
 4265:         int64_t[:] x, y
-
 4266:         ndarray[uint8_t, ndim=1] out
-
 4267: 
-
 4268:     # suppress Cython compiler warnings due to inlining
-
+4269:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4270:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4271: 
-
 4272:     # need to do this first to know size of result array
-
+4273:     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, 4273, __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;
-
+4274:     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, 4274, __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, 4274, __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, 4274, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4274, __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, 4274, __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, 4274, __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, 4274, __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, 4274, __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, 4274, __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, 4274, __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, 4274, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4275: 
-
+4276:     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, 4276, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4277:     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, 4277, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4278:     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, 4278, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 4279: 
-
 4280:     # walk the two SparseVectors, adding matched locations...
-
+4281:     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;
-
+4282:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4283:             # use x fill value
-
+4284:             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]) ))));
-
+4285:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4286:             continue
-
      goto __pyx_L3_continue;
-
 4287: 
-
+4288:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4289:             # use y fill value
-
+4290:             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);
-
+4291:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4292:             continue
-
      goto __pyx_L3_continue;
-
 4293: 
-
+4294:         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]) )));
-
+4295:         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]) )));
-
 4296: 
-
 4297:         # each index in the out_index had to come from either x, y, or both
-
+4298:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+4299:             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]) ))));
-
+4300:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4301:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4302:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 4303:             # use y fill value
-
+4304:             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);
-
+4305:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4306:         else:
-
 4307:             # use x fill value
-
+4308:             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]) ))));
-
+4309:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 4310: 
-
+4311:     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, 4311, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4311, __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;
-
 4312: 
-
 4313: 
-
+4314: cpdef sparse_gt_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_49sparse_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_49sparse_gt_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_49sparse_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, 4314, __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, 4314, __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, 4314, __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, 4314, __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, 4314, __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, 4314, __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, 4314, __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, 4315, __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, 4316, __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, 4317, __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, 4314, __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, 4315, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4317, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_48sparse_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_48sparse_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, 4314, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4314, __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, 4314, __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;
-}
-
 4315:                                   SparseIndex xindex, int64_t xfill,
-
 4316:                                   int64_t[:] y,
-
 4317:                                   SparseIndex yindex, int64_t yfill):
-
 4318: 
-
+4319:     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) {
-/* … */
-  }
-
+4320:         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, 4320, __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, 4320, __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, 4320, __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, 4320, __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;
-
+4321:                                              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, 4321, __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, 4321, __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, 4321, __pyx_L1_error)
-
+4322:     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)) {
-/* … */
-  }
-
+4323:         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, 4323, __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, 4323, __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, 4323, __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, 4323, __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;
-
+4324:                                            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, 4324, __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, 4324, __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, 4324, __pyx_L1_error)
-
 4325:     else:
-
+4326:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 4326, __pyx_L1_error)
-  }
-
 4327: 
-
 4328: 
-
 4329: @cython.wraparound(False)
-
 4330: @cython.boundscheck(False)
-
+4331: 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;
-}
-
 4332:                                                 BlockIndex xindex,
-
 4333:                                                 float64_t xfill,
-
 4334:                                                 float64_t[:] y_,
-
 4335:                                                 BlockIndex yindex,
-
 4336:                                                 float64_t yfill):
-
 4337:     '''
-
 4338:     Binary operator on BlockIndex objects with fill values
-
 4339:     '''
-
 4340: 
-
 4341:     cdef:
-
 4342:         BlockIndex out_index
-
+4343:         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;
-
+4344:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 4345:         int32_t xloc, yloc
-
+4346:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 4347: 
-
 4348:         float64_t[:] x, y
-
 4349:         ndarray[uint8_t, ndim=1] out
-
 4350: 
-
 4351:     # to suppress Cython warning
-
+4352:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4353:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4354: 
-
+4355:     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, 4355, __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;
-
+4356:     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, 4356, __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, 4356, __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, 4356, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4356, __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, 4356, __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, 4356, __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, 4356, __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, 4356, __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, 4356, __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, 4356, __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, 4356, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4357: 
-
 4358:     # Wow, what a hack job. Need to do something about this
-
 4359: 
-
 4360:     # walk the two SparseVectors, adding matched locations...
-
+4361:     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;
-
+4362:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4363:             # use y fill value
-
+4364:             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);
-
+4365:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4366: 
-
 4367:             # advance x location
-
+4368:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4369:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4370:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4371:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+4372:             continue
-
      goto __pyx_L3_continue;
-
 4373: 
-
+4374:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4375:             # use x fill value
-
+4376:             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]) ))));
-
+4377:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4378: 
-
 4379:             # advance y location
-
+4380:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4381:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4382:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4383:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+4384:             continue
-
      goto __pyx_L3_continue;
-
 4385: 
-
+4386:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+4387:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 4388: 
-
 4389:         # each index in the out_index had to come from either x, y, or both
-
+4390:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+4391:             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]) ))));
-
+4392:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4393:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4394: 
-
 4395:             # advance both locations
-
+4396:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4397:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4398:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4399:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4400: 
-
+4401:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4402:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4403:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4404:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4405: 
-
+4406:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 4407:             # use y fill value
-
+4408:             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);
-
+4409:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4410: 
-
 4411:             # advance x location
-
+4412:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4413:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4414:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4415:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4416:         else:
-
 4417:             # use x fill value
-
+4418:             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]) ))));
-
+4419:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4420: 
-
 4421:             # advance y location
-
+4422:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4423:             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:;
-  }
-
+4424:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4425:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4426: 
-
+4427:     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, 4427, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4427, __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;
-
 4428: 
-
 4429: 
-
 4430: @cython.wraparound(False)
-
 4431: @cython.boundscheck(False)
-
+4432: 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;
-}
-
 4433:                                               IntIndex xindex,
-
 4434:                                               float64_t xfill,
-
 4435:                                               float64_t[:] y_,
-
 4436:                                               IntIndex yindex,
-
 4437:                                               float64_t yfill):
-
 4438:     cdef:
-
 4439:         IntIndex out_index
-
+4440:         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;
-
 4441:         int32_t xloc, yloc
-
 4442:         int32_t[:] xindices, yindices, out_indices
-
 4443:         float64_t[:] x, y
-
 4444:         ndarray[uint8_t, ndim=1] out
-
 4445: 
-
 4446:     # suppress Cython compiler warnings due to inlining
-
+4447:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4448:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4449: 
-
 4450:     # need to do this first to know size of result array
-
+4451:     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, 4451, __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;
-
+4452:     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, 4452, __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, 4452, __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, 4452, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4452, __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, 4452, __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, 4452, __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, 4452, __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, 4452, __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, 4452, __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, 4452, __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, 4452, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4453: 
-
+4454:     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, 4454, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4455:     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, 4455, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4456:     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, 4456, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 4457: 
-
 4458:     # walk the two SparseVectors, adding matched locations...
-
+4459:     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;
-
+4460:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4461:             # use x fill value
-
+4462:             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]) ))));
-
+4463:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4464:             continue
-
      goto __pyx_L3_continue;
-
 4465: 
-
+4466:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4467:             # use y fill value
-
+4468:             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);
-
+4469:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4470:             continue
-
      goto __pyx_L3_continue;
-
 4471: 
-
+4472:         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]) )));
-
+4473:         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]) )));
-
 4474: 
-
 4475:         # each index in the out_index had to come from either x, y, or both
-
+4476:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+4477:             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]) ))));
-
+4478:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4479:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4480:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 4481:             # use y fill value
-
+4482:             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);
-
+4483:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4484:         else:
-
 4485:             # use x fill value
-
+4486:             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]) ))));
-
+4487:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 4488: 
-
+4489:     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, 4489, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4489, __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;
-
 4490: 
-
 4491: 
-
+4492: cpdef sparse_le_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_51sparse_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_51sparse_le_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_51sparse_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, 4492, __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, 4492, __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, 4492, __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, 4492, __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, 4492, __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, 4492, __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, 4492, __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, 4493, __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, 4494, __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, 4495, __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, 4492, __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, 4493, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4495, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_50sparse_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_50sparse_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, 4492, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4492, __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, 4492, __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;
-}
-
 4493:                                   SparseIndex xindex, float64_t xfill,
-
 4494:                                   float64_t[:] y,
-
 4495:                                   SparseIndex yindex, float64_t yfill):
-
 4496: 
-
+4497:     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) {
-/* … */
-  }
-
+4498:         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, 4498, __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, 4498, __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, 4498, __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, 4498, __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;
-
+4499:                                              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, 4499, __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, 4499, __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, 4499, __pyx_L1_error)
-
+4500:     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)) {
-/* … */
-  }
-
+4501:         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, 4501, __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, 4501, __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, 4501, __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, 4501, __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;
-
+4502:                                            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, 4502, __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, 4502, __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, 4502, __pyx_L1_error)
-
 4503:     else:
-
+4504:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 4504, __pyx_L1_error)
-  }
-
 4505: 
-
 4506: 
-
 4507: @cython.wraparound(False)
-
 4508: @cython.boundscheck(False)
-
+4509: 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;
-}
-
 4510:                                                 BlockIndex xindex,
-
 4511:                                                 int64_t xfill,
-
 4512:                                                 int64_t[:] y_,
-
 4513:                                                 BlockIndex yindex,
-
 4514:                                                 int64_t yfill):
-
 4515:     '''
-
 4516:     Binary operator on BlockIndex objects with fill values
-
 4517:     '''
-
 4518: 
-
 4519:     cdef:
-
 4520:         BlockIndex out_index
-
+4521:         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;
-
+4522:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 4523:         int32_t xloc, yloc
-
+4524:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 4525: 
-
 4526:         int64_t[:] x, y
-
 4527:         ndarray[uint8_t, ndim=1] out
-
 4528: 
-
 4529:     # to suppress Cython warning
-
+4530:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4531:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4532: 
-
+4533:     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, 4533, __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;
-
+4534:     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, 4534, __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, 4534, __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, 4534, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4534, __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, 4534, __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, 4534, __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, 4534, __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, 4534, __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, 4534, __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, 4534, __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, 4534, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4535: 
-
 4536:     # Wow, what a hack job. Need to do something about this
-
 4537: 
-
 4538:     # walk the two SparseVectors, adding matched locations...
-
+4539:     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;
-
+4540:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4541:             # use y fill value
-
+4542:             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);
-
+4543:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4544: 
-
 4545:             # advance x location
-
+4546:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4547:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4548:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4549:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+4550:             continue
-
      goto __pyx_L3_continue;
-
 4551: 
-
+4552:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4553:             # use x fill value
-
+4554:             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]) ))));
-
+4555:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4556: 
-
 4557:             # advance y location
-
+4558:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4559:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4560:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4561:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+4562:             continue
-
      goto __pyx_L3_continue;
-
 4563: 
-
+4564:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+4565:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 4566: 
-
 4567:         # each index in the out_index had to come from either x, y, or both
-
+4568:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+4569:             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]) ))));
-
+4570:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4571:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4572: 
-
 4573:             # advance both locations
-
+4574:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4575:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4576:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4577:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4578: 
-
+4579:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4580:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4581:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4582:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4583: 
-
+4584:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 4585:             # use y fill value
-
+4586:             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);
-
+4587:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4588: 
-
 4589:             # advance x location
-
+4590:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4591:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4592:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4593:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4594:         else:
-
 4595:             # use x fill value
-
+4596:             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]) ))));
-
+4597:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4598: 
-
 4599:             # advance y location
-
+4600:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4601:             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:;
-  }
-
+4602:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4603:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4604: 
-
+4605:     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, 4605, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4605, __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;
-
 4606: 
-
 4607: 
-
 4608: @cython.wraparound(False)
-
 4609: @cython.boundscheck(False)
-
+4610: 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;
-}
-
 4611:                                               IntIndex xindex,
-
 4612:                                               int64_t xfill,
-
 4613:                                               int64_t[:] y_,
-
 4614:                                               IntIndex yindex,
-
 4615:                                               int64_t yfill):
-
 4616:     cdef:
-
 4617:         IntIndex out_index
-
+4618:         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;
-
 4619:         int32_t xloc, yloc
-
 4620:         int32_t[:] xindices, yindices, out_indices
-
 4621:         int64_t[:] x, y
-
 4622:         ndarray[uint8_t, ndim=1] out
-
 4623: 
-
 4624:     # suppress Cython compiler warnings due to inlining
-
+4625:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4626:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4627: 
-
 4628:     # need to do this first to know size of result array
-
+4629:     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, 4629, __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;
-
+4630:     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, 4630, __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, 4630, __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, 4630, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4630, __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, 4630, __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, 4630, __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, 4630, __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, 4630, __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, 4630, __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, 4630, __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, 4630, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4631: 
-
+4632:     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, 4632, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4633:     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, 4633, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4634:     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, 4634, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 4635: 
-
 4636:     # walk the two SparseVectors, adding matched locations...
-
+4637:     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;
-
+4638:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4639:             # use x fill value
-
+4640:             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]) ))));
-
+4641:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4642:             continue
-
      goto __pyx_L3_continue;
-
 4643: 
-
+4644:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4645:             # use y fill value
-
+4646:             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);
-
+4647:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4648:             continue
-
      goto __pyx_L3_continue;
-
 4649: 
-
+4650:         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]) )));
-
+4651:         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]) )));
-
 4652: 
-
 4653:         # each index in the out_index had to come from either x, y, or both
-
+4654:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+4655:             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]) ))));
-
+4656:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4657:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4658:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 4659:             # use y fill value
-
+4660:             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);
-
+4661:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4662:         else:
-
 4663:             # use x fill value
-
+4664:             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]) ))));
-
+4665:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 4666: 
-
+4667:     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, 4667, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4667, __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;
-
 4668: 
-
 4669: 
-
+4670: cpdef sparse_le_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_53sparse_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_53sparse_le_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_53sparse_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, 4670, __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, 4670, __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, 4670, __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, 4670, __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, 4670, __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, 4670, __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, 4670, __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, 4671, __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, 4672, __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, 4673, __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, 4670, __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, 4671, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4673, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_52sparse_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_52sparse_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, 4670, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4670, __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, 4670, __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;
-}
-
 4671:                                   SparseIndex xindex, int64_t xfill,
-
 4672:                                   int64_t[:] y,
-
 4673:                                   SparseIndex yindex, int64_t yfill):
-
 4674: 
-
+4675:     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) {
-/* … */
-  }
-
+4676:         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, 4676, __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, 4676, __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, 4676, __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, 4676, __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;
-
+4677:                                              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, 4677, __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, 4677, __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, 4677, __pyx_L1_error)
-
+4678:     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)) {
-/* … */
-  }
-
+4679:         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, 4679, __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, 4679, __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, 4679, __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, 4679, __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;
-
+4680:                                            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, 4680, __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, 4680, __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, 4680, __pyx_L1_error)
-
 4681:     else:
-
+4682:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 4682, __pyx_L1_error)
-  }
-
 4683: 
-
 4684: 
-
 4685: @cython.wraparound(False)
-
 4686: @cython.boundscheck(False)
-
+4687: 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;
-}
-
 4688:                                                 BlockIndex xindex,
-
 4689:                                                 float64_t xfill,
-
 4690:                                                 float64_t[:] y_,
-
 4691:                                                 BlockIndex yindex,
-
 4692:                                                 float64_t yfill):
-
 4693:     '''
-
 4694:     Binary operator on BlockIndex objects with fill values
-
 4695:     '''
-
 4696: 
-
 4697:     cdef:
-
 4698:         BlockIndex out_index
-
+4699:         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;
-
+4700:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 4701:         int32_t xloc, yloc
-
+4702:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 4703: 
-
 4704:         float64_t[:] x, y
-
 4705:         ndarray[uint8_t, ndim=1] out
-
 4706: 
-
 4707:     # to suppress Cython warning
-
+4708:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4709:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4710: 
-
+4711:     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, 4711, __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;
-
+4712:     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, 4712, __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, 4712, __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, 4712, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4712, __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, 4712, __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, 4712, __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, 4712, __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, 4712, __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, 4712, __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, 4712, __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, 4712, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4713: 
-
 4714:     # Wow, what a hack job. Need to do something about this
-
 4715: 
-
 4716:     # walk the two SparseVectors, adding matched locations...
-
+4717:     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;
-
+4718:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4719:             # use y fill value
-
+4720:             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);
-
+4721:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4722: 
-
 4723:             # advance x location
-
+4724:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4725:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4726:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4727:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+4728:             continue
-
      goto __pyx_L3_continue;
-
 4729: 
-
+4730:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4731:             # use x fill value
-
+4732:             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]) ))));
-
+4733:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4734: 
-
 4735:             # advance y location
-
+4736:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4737:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4738:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4739:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+4740:             continue
-
      goto __pyx_L3_continue;
-
 4741: 
-
+4742:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+4743:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 4744: 
-
 4745:         # each index in the out_index had to come from either x, y, or both
-
+4746:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+4747:             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]) ))));
-
+4748:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4749:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4750: 
-
 4751:             # advance both locations
-
+4752:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4753:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4754:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4755:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4756: 
-
+4757:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4758:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4759:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4760:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4761: 
-
+4762:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 4763:             # use y fill value
-
+4764:             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);
-
+4765:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4766: 
-
 4767:             # advance x location
-
+4768:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4769:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4770:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4771:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4772:         else:
-
 4773:             # use x fill value
-
+4774:             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]) ))));
-
+4775:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4776: 
-
 4777:             # advance y location
-
+4778:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4779:             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:;
-  }
-
+4780:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4781:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4782: 
-
+4783:     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, 4783, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4783, __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;
-
 4784: 
-
 4785: 
-
 4786: @cython.wraparound(False)
-
 4787: @cython.boundscheck(False)
-
+4788: 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;
-}
-
 4789:                                               IntIndex xindex,
-
 4790:                                               float64_t xfill,
-
 4791:                                               float64_t[:] y_,
-
 4792:                                               IntIndex yindex,
-
 4793:                                               float64_t yfill):
-
 4794:     cdef:
-
 4795:         IntIndex out_index
-
+4796:         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;
-
 4797:         int32_t xloc, yloc
-
 4798:         int32_t[:] xindices, yindices, out_indices
-
 4799:         float64_t[:] x, y
-
 4800:         ndarray[uint8_t, ndim=1] out
-
 4801: 
-
 4802:     # suppress Cython compiler warnings due to inlining
-
+4803:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4804:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4805: 
-
 4806:     # need to do this first to know size of result array
-
+4807:     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, 4807, __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;
-
+4808:     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, 4808, __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, 4808, __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, 4808, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4808, __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, 4808, __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, 4808, __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, 4808, __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, 4808, __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, 4808, __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, 4808, __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, 4808, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4809: 
-
+4810:     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, 4810, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4811:     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, 4811, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4812:     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, 4812, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 4813: 
-
 4814:     # walk the two SparseVectors, adding matched locations...
-
+4815:     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;
-
+4816:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4817:             # use x fill value
-
+4818:             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]) ))));
-
+4819:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4820:             continue
-
      goto __pyx_L3_continue;
-
 4821: 
-
+4822:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4823:             # use y fill value
-
+4824:             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);
-
+4825:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4826:             continue
-
      goto __pyx_L3_continue;
-
 4827: 
-
+4828:         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]) )));
-
+4829:         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]) )));
-
 4830: 
-
 4831:         # each index in the out_index had to come from either x, y, or both
-
+4832:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+4833:             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]) ))));
-
+4834:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4835:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4836:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 4837:             # use y fill value
-
+4838:             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);
-
+4839:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4840:         else:
-
 4841:             # use x fill value
-
+4842:             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]) ))));
-
+4843:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 4844: 
-
+4845:     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, 4845, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4845, __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;
-
 4846: 
-
 4847: 
-
+4848: cpdef sparse_ge_float64(float64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_55sparse_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_55sparse_ge_float64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_55sparse_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, 4848, __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, 4848, __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, 4848, __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, 4848, __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, 4848, __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, 4848, __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, 4848, __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, 4849, __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, 4850, __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, 4851, __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, 4848, __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, 4849, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 4851, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_54sparse_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_54sparse_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, 4848, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 4848, __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, 4848, __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;
-}
-
 4849:                                   SparseIndex xindex, float64_t xfill,
-
 4850:                                   float64_t[:] y,
-
 4851:                                   SparseIndex yindex, float64_t yfill):
-
 4852: 
-
+4853:     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) {
-/* … */
-  }
-
+4854:         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, 4854, __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, 4854, __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, 4854, __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, 4854, __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;
-
+4855:                                              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, 4855, __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, 4855, __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, 4855, __pyx_L1_error)
-
+4856:     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)) {
-/* … */
-  }
-
+4857:         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, 4857, __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, 4857, __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, 4857, __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, 4857, __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;
-
+4858:                                            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, 4858, __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, 4858, __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, 4858, __pyx_L1_error)
-
 4859:     else:
-
+4860:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 4860, __pyx_L1_error)
-  }
-
 4861: 
-
 4862: 
-
 4863: @cython.wraparound(False)
-
 4864: @cython.boundscheck(False)
-
+4865: 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;
-}
-
 4866:                                                 BlockIndex xindex,
-
 4867:                                                 int64_t xfill,
-
 4868:                                                 int64_t[:] y_,
-
 4869:                                                 BlockIndex yindex,
-
 4870:                                                 int64_t yfill):
-
 4871:     '''
-
 4872:     Binary operator on BlockIndex objects with fill values
-
 4873:     '''
-
 4874: 
-
 4875:     cdef:
-
 4876:         BlockIndex out_index
-
+4877:         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;
-
+4878:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 4879:         int32_t xloc, yloc
-
+4880:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 4881: 
-
 4882:         int64_t[:] x, y
-
 4883:         ndarray[uint8_t, ndim=1] out
-
 4884: 
-
 4885:     # to suppress Cython warning
-
+4886:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4887:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4888: 
-
+4889:     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, 4889, __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;
-
+4890:     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, 4890, __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, 4890, __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, 4890, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4890, __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, 4890, __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, 4890, __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, 4890, __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, 4890, __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, 4890, __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, 4890, __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, 4890, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4891: 
-
 4892:     # Wow, what a hack job. Need to do something about this
-
 4893: 
-
 4894:     # walk the two SparseVectors, adding matched locations...
-
+4895:     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;
-
+4896:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4897:             # use y fill value
-
+4898:             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);
-
+4899:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4900: 
-
 4901:             # advance x location
-
+4902:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4903:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4904:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4905:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+4906:             continue
-
      goto __pyx_L3_continue;
-
 4907: 
-
+4908:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 4909:             # use x fill value
-
+4910:             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]) ))));
-
+4911:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4912: 
-
 4913:             # advance y location
-
+4914:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4915:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4916:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4917:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+4918:             continue
-
      goto __pyx_L3_continue;
-
 4919: 
-
+4920:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+4921:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 4922: 
-
 4923:         # each index in the out_index had to come from either x, y, or both
-
+4924:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+4925:             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]) ))));
-
+4926:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+4927:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4928: 
-
 4929:             # advance both locations
-
+4930:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4931:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4932:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4933:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4934: 
-
+4935:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4936:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4937:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4938:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4939: 
-
+4940:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 4941:             # use y fill value
-
+4942:             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);
-
+4943:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 4944: 
-
 4945:             # advance x location
-
+4946:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+4947:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+4948:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+4949:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 4950:         else:
-
 4951:             # use x fill value
-
+4952:             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]) ))));
-
+4953:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 4954: 
-
 4955:             # advance y location
-
+4956:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+4957:             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:;
-  }
-
+4958:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+4959:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 4960: 
-
+4961:     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, 4961, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 4961, __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;
-
 4962: 
-
 4963: 
-
 4964: @cython.wraparound(False)
-
 4965: @cython.boundscheck(False)
-
+4966: 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;
-}
-
 4967:                                               IntIndex xindex,
-
 4968:                                               int64_t xfill,
-
 4969:                                               int64_t[:] y_,
-
 4970:                                               IntIndex yindex,
-
 4971:                                               int64_t yfill):
-
 4972:     cdef:
-
 4973:         IntIndex out_index
-
+4974:         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;
-
 4975:         int32_t xloc, yloc
-
 4976:         int32_t[:] xindices, yindices, out_indices
-
 4977:         int64_t[:] x, y
-
 4978:         ndarray[uint8_t, ndim=1] out
-
 4979: 
-
 4980:     # suppress Cython compiler warnings due to inlining
-
+4981:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+4982:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 4983: 
-
 4984:     # need to do this first to know size of result array
-
+4985:     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, 4985, __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;
-
+4986:     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, 4986, __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, 4986, __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, 4986, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 4986, __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, 4986, __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, 4986, __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, 4986, __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, 4986, __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, 4986, __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, 4986, __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, 4986, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 4987: 
-
+4988:     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, 4988, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4989:     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, 4989, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+4990:     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, 4990, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 4991: 
-
 4992:     # walk the two SparseVectors, adding matched locations...
-
+4993:     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;
-
+4994:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 4995:             # use x fill value
-
+4996:             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]) ))));
-
+4997:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+4998:             continue
-
      goto __pyx_L3_continue;
-
 4999: 
-
+5000:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5001:             # use y fill value
-
+5002:             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);
-
+5003:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5004:             continue
-
      goto __pyx_L3_continue;
-
 5005: 
-
+5006:         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]) )));
-
+5007:         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]) )));
-
 5008: 
-
 5009:         # each index in the out_index had to come from either x, y, or both
-
+5010:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+5011:             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]) ))));
-
+5012:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5013:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5014:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 5015:             # use y fill value
-
+5016:             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);
-
+5017:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5018:         else:
-
 5019:             # use x fill value
-
+5020:             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]) ))));
-
+5021:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 5022: 
-
+5023:     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, 5023, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5023, __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;
-
 5024: 
-
 5025: 
-
+5026: cpdef sparse_ge_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_57sparse_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_57sparse_ge_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_57sparse_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, 5026, __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, 5026, __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, 5026, __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, 5026, __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, 5026, __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, 5026, __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, 5026, __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, 5027, __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, 5028, __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, 5029, __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, 5026, __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, 5027, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5029, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_56sparse_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_56sparse_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, 5026, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5026, __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, 5026, __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;
-}
-
 5027:                                   SparseIndex xindex, int64_t xfill,
-
 5028:                                   int64_t[:] y,
-
 5029:                                   SparseIndex yindex, int64_t yfill):
-
 5030: 
-
+5031:     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) {
-/* … */
-  }
-
+5032:         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, 5032, __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, 5032, __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, 5032, __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, 5032, __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;
-
+5033:                                              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, 5033, __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, 5033, __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, 5033, __pyx_L1_error)
-
+5034:     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)) {
-/* … */
-  }
-
+5035:         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, 5035, __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, 5035, __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, 5035, __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, 5035, __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;
-
+5036:                                            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, 5036, __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, 5036, __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, 5036, __pyx_L1_error)
-
 5037:     else:
-
+5038:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 5038, __pyx_L1_error)
-  }
-
 5039: 
-
 5040: 
-
 5041: @cython.wraparound(False)
-
 5042: @cython.boundscheck(False)
-
+5043: 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;
-}
-
 5044:                                                 BlockIndex xindex,
-
 5045:                                                 int64_t xfill,
-
 5046:                                                 int64_t[:] y_,
-
 5047:                                                 BlockIndex yindex,
-
 5048:                                                 int64_t yfill):
-
 5049:     '''
-
 5050:     Binary operator on BlockIndex objects with fill values
-
 5051:     '''
-
 5052: 
-
 5053:     cdef:
-
 5054:         BlockIndex out_index
-
+5055:         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;
-
+5056:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 5057:         int32_t xloc, yloc
-
+5058:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 5059: 
-
 5060:         int64_t[:] x, y
-
 5061:         ndarray[uint8_t, ndim=1] out
-
 5062: 
-
 5063:     # to suppress Cython warning
-
+5064:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5065:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5066: 
-
+5067:     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, 5067, __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;
-
+5068:     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, 5068, __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, 5068, __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, 5068, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5068, __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, 5068, __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, 5068, __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, 5068, __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, 5068, __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, 5068, __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, 5068, __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, 5068, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5069: 
-
 5070:     # Wow, what a hack job. Need to do something about this
-
 5071: 
-
 5072:     # walk the two SparseVectors, adding matched locations...
-
+5073:     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;
-
+5074:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5075:             # use y fill value
-
+5076:             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);
-
+5077:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5078: 
-
 5079:             # advance x location
-
+5080:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5081:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5082:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5083:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+5084:             continue
-
      goto __pyx_L3_continue;
-
 5085: 
-
+5086:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5087:             # use x fill value
-
+5088:             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]) ))));
-
+5089:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5090: 
-
 5091:             # advance y location
-
+5092:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5093:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5094:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5095:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+5096:             continue
-
      goto __pyx_L3_continue;
-
 5097: 
-
+5098:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+5099:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 5100: 
-
 5101:         # each index in the out_index had to come from either x, y, or both
-
+5102:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+5103:             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]) ))));
-
+5104:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5105:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5106: 
-
 5107:             # advance both locations
-
+5108:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5109:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5110:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5111:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5112: 
-
+5113:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5114:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5115:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5116:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5117: 
-
+5118:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 5119:             # use y fill value
-
+5120:             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);
-
+5121:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5122: 
-
 5123:             # advance x location
-
+5124:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5125:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5126:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5127:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5128:         else:
-
 5129:             # use x fill value
-
+5130:             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]) ))));
-
+5131:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5132: 
-
 5133:             # advance y location
-
+5134:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5135:             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:;
-  }
-
+5136:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5137:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5138: 
-
+5139:     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, 5139, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5139, __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;
-
 5140: 
-
 5141: 
-
 5142: @cython.wraparound(False)
-
 5143: @cython.boundscheck(False)
-
+5144: 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;
-}
-
 5145:                                               IntIndex xindex,
-
 5146:                                               int64_t xfill,
-
 5147:                                               int64_t[:] y_,
-
 5148:                                               IntIndex yindex,
-
 5149:                                               int64_t yfill):
-
 5150:     cdef:
-
 5151:         IntIndex out_index
-
+5152:         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;
-
 5153:         int32_t xloc, yloc
-
 5154:         int32_t[:] xindices, yindices, out_indices
-
 5155:         int64_t[:] x, y
-
 5156:         ndarray[uint8_t, ndim=1] out
-
 5157: 
-
 5158:     # suppress Cython compiler warnings due to inlining
-
+5159:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5160:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5161: 
-
 5162:     # need to do this first to know size of result array
-
+5163:     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, 5163, __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;
-
+5164:     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, 5164, __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, 5164, __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, 5164, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5164, __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, 5164, __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, 5164, __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, 5164, __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, 5164, __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, 5164, __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, 5164, __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, 5164, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5165: 
-
+5166:     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, 5166, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5167:     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, 5167, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5168:     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, 5168, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 5169: 
-
 5170:     # walk the two SparseVectors, adding matched locations...
-
+5171:     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;
-
+5172:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5173:             # use x fill value
-
+5174:             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]) ))));
-
+5175:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5176:             continue
-
      goto __pyx_L3_continue;
-
 5177: 
-
+5178:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5179:             # use y fill value
-
+5180:             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);
-
+5181:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5182:             continue
-
      goto __pyx_L3_continue;
-
 5183: 
-
+5184:         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]) )));
-
+5185:         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]) )));
-
 5186: 
-
 5187:         # each index in the out_index had to come from either x, y, or both
-
+5188:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+5189:             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]) ))));
-
+5190:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5191:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5192:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 5193:             # use y fill value
-
+5194:             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);
-
+5195:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5196:         else:
-
 5197:             # use x fill value
-
+5198:             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]) ))));
-
+5199:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 5200: 
-
+5201:     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, 5201, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5201, __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;
-
 5202: 
-
 5203: 
-
+5204: cpdef sparse_and_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_59sparse_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_59sparse_and_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_59sparse_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, 5204, __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, 5204, __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, 5204, __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, 5204, __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, 5204, __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, 5204, __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, 5204, __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, 5205, __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, 5206, __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, 5207, __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, 5204, __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, 5205, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5207, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_58sparse_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_58sparse_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, 5204, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5204, __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, 5204, __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;
-}
-
 5205:                                   SparseIndex xindex, int64_t xfill,
-
 5206:                                   int64_t[:] y,
-
 5207:                                   SparseIndex yindex, int64_t yfill):
-
 5208: 
-
+5209:     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) {
-/* … */
-  }
-
+5210:         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, 5210, __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, 5210, __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, 5210, __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, 5210, __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;
-
+5211:                                              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, 5211, __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, 5211, __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, 5211, __pyx_L1_error)
-
+5212:     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)) {
-/* … */
-  }
-
+5213:         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, 5213, __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, 5213, __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, 5213, __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, 5213, __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;
-
+5214:                                            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, 5214, __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, 5214, __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, 5214, __pyx_L1_error)
-
 5215:     else:
-
+5216:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 5216, __pyx_L1_error)
-  }
-
 5217: 
-
 5218: 
-
 5219: @cython.wraparound(False)
-
 5220: @cython.boundscheck(False)
-
+5221: 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;
-}
-
 5222:                                                 BlockIndex xindex,
-
 5223:                                                 uint8_t xfill,
-
 5224:                                                 uint8_t[:] y_,
-
 5225:                                                 BlockIndex yindex,
-
 5226:                                                 uint8_t yfill):
-
 5227:     '''
-
 5228:     Binary operator on BlockIndex objects with fill values
-
 5229:     '''
-
 5230: 
-
 5231:     cdef:
-
 5232:         BlockIndex out_index
-
+5233:         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;
-
+5234:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 5235:         int32_t xloc, yloc
-
+5236:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 5237: 
-
 5238:         uint8_t[:] x, y
-
 5239:         ndarray[uint8_t, ndim=1] out
-
 5240: 
-
 5241:     # to suppress Cython warning
-
+5242:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5243:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5244: 
-
+5245:     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, 5245, __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;
-
+5246:     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, 5246, __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, 5246, __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, 5246, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5246, __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, 5246, __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, 5246, __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, 5246, __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, 5246, __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, 5246, __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, 5246, __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, 5246, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5247: 
-
 5248:     # Wow, what a hack job. Need to do something about this
-
 5249: 
-
 5250:     # walk the two SparseVectors, adding matched locations...
-
+5251:     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;
-
+5252:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5253:             # use y fill value
-
+5254:             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);
-
+5255:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5256: 
-
 5257:             # advance x location
-
+5258:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5259:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5260:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5261:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+5262:             continue
-
      goto __pyx_L3_continue;
-
 5263: 
-
+5264:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5265:             # use x fill value
-
+5266:             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]) ))));
-
+5267:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5268: 
-
 5269:             # advance y location
-
+5270:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5271:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5272:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5273:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+5274:             continue
-
      goto __pyx_L3_continue;
-
 5275: 
-
+5276:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+5277:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 5278: 
-
 5279:         # each index in the out_index had to come from either x, y, or both
-
+5280:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+5281:             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]) ))));
-
+5282:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5283:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5284: 
-
 5285:             # advance both locations
-
+5286:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5287:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5288:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5289:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5290: 
-
+5291:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5292:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5293:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5294:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5295: 
-
+5296:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 5297:             # use y fill value
-
+5298:             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);
-
+5299:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5300: 
-
 5301:             # advance x location
-
+5302:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5303:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5304:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5305:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5306:         else:
-
 5307:             # use x fill value
-
+5308:             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]) ))));
-
+5309:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5310: 
-
 5311:             # advance y location
-
+5312:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5313:             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:;
-  }
-
+5314:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5315:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5316: 
-
+5317:     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, 5317, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5317, __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;
-
 5318: 
-
 5319: 
-
 5320: @cython.wraparound(False)
-
 5321: @cython.boundscheck(False)
-
+5322: 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;
-}
-
 5323:                                               IntIndex xindex,
-
 5324:                                               uint8_t xfill,
-
 5325:                                               uint8_t[:] y_,
-
 5326:                                               IntIndex yindex,
-
 5327:                                               uint8_t yfill):
-
 5328:     cdef:
-
 5329:         IntIndex out_index
-
+5330:         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;
-
 5331:         int32_t xloc, yloc
-
 5332:         int32_t[:] xindices, yindices, out_indices
-
 5333:         uint8_t[:] x, y
-
 5334:         ndarray[uint8_t, ndim=1] out
-
 5335: 
-
 5336:     # suppress Cython compiler warnings due to inlining
-
+5337:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5338:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5339: 
-
 5340:     # need to do this first to know size of result array
-
+5341:     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, 5341, __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;
-
+5342:     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, 5342, __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, 5342, __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, 5342, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5342, __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, 5342, __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, 5342, __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, 5342, __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, 5342, __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, 5342, __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, 5342, __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, 5342, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5343: 
-
+5344:     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, 5344, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5345:     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, 5345, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5346:     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, 5346, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 5347: 
-
 5348:     # walk the two SparseVectors, adding matched locations...
-
+5349:     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;
-
+5350:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5351:             # use x fill value
-
+5352:             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]) ))));
-
+5353:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5354:             continue
-
      goto __pyx_L3_continue;
-
 5355: 
-
+5356:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5357:             # use y fill value
-
+5358:             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);
-
+5359:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5360:             continue
-
      goto __pyx_L3_continue;
-
 5361: 
-
+5362:         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]) )));
-
+5363:         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]) )));
-
 5364: 
-
 5365:         # each index in the out_index had to come from either x, y, or both
-
+5366:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+5367:             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]) ))));
-
+5368:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5369:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5370:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 5371:             # use y fill value
-
+5372:             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);
-
+5373:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5374:         else:
-
 5375:             # use x fill value
-
+5376:             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]) ))));
-
+5377:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 5378: 
-
+5379:     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, 5379, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5379, __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;
-
 5380: 
-
 5381: 
-
+5382: cpdef sparse_and_uint8(uint8_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_61sparse_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_61sparse_and_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_61sparse_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, 5382, __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, 5382, __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, 5382, __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, 5382, __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, 5382, __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, 5382, __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, 5382, __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, 5383, __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, 5384, __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, 5385, __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, 5382, __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, 5383, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5385, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_60sparse_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_60sparse_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, 5382, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5382, __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, 5382, __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;
-}
-
 5383:                                   SparseIndex xindex, uint8_t xfill,
-
 5384:                                   uint8_t[:] y,
-
 5385:                                   SparseIndex yindex, uint8_t yfill):
-
 5386: 
-
+5387:     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) {
-/* … */
-  }
-
+5388:         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, 5388, __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, 5388, __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, 5388, __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, 5388, __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;
-
+5389:                                              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, 5389, __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, 5389, __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, 5389, __pyx_L1_error)
-
+5390:     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)) {
-/* … */
-  }
-
+5391:         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, 5391, __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, 5391, __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, 5391, __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, 5391, __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;
-
+5392:                                            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, 5392, __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, 5392, __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, 5392, __pyx_L1_error)
-
 5393:     else:
-
+5394:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 5394, __pyx_L1_error)
-  }
-
 5395: 
-
 5396: 
-
 5397: @cython.wraparound(False)
-
 5398: @cython.boundscheck(False)
-
+5399: 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;
-}
-
 5400:                                                 BlockIndex xindex,
-
 5401:                                                 int64_t xfill,
-
 5402:                                                 int64_t[:] y_,
-
 5403:                                                 BlockIndex yindex,
-
 5404:                                                 int64_t yfill):
-
 5405:     '''
-
 5406:     Binary operator on BlockIndex objects with fill values
-
 5407:     '''
-
 5408: 
-
 5409:     cdef:
-
 5410:         BlockIndex out_index
-
+5411:         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;
-
+5412:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 5413:         int32_t xloc, yloc
-
+5414:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 5415: 
-
 5416:         int64_t[:] x, y
-
 5417:         ndarray[uint8_t, ndim=1] out
-
 5418: 
-
 5419:     # to suppress Cython warning
-
+5420:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5421:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5422: 
-
+5423:     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, 5423, __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;
-
+5424:     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, 5424, __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, 5424, __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, 5424, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5424, __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, 5424, __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, 5424, __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, 5424, __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, 5424, __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, 5424, __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, 5424, __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, 5424, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5425: 
-
 5426:     # Wow, what a hack job. Need to do something about this
-
 5427: 
-
 5428:     # walk the two SparseVectors, adding matched locations...
-
+5429:     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;
-
+5430:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5431:             # use y fill value
-
+5432:             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);
-
+5433:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5434: 
-
 5435:             # advance x location
-
+5436:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5437:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5438:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5439:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+5440:             continue
-
      goto __pyx_L3_continue;
-
 5441: 
-
+5442:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5443:             # use x fill value
-
+5444:             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]) ))));
-
+5445:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5446: 
-
 5447:             # advance y location
-
+5448:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5449:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5450:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5451:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+5452:             continue
-
      goto __pyx_L3_continue;
-
 5453: 
-
+5454:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+5455:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 5456: 
-
 5457:         # each index in the out_index had to come from either x, y, or both
-
+5458:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+5459:             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]) ))));
-
+5460:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5461:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5462: 
-
 5463:             # advance both locations
-
+5464:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5465:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5466:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5467:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5468: 
-
+5469:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5470:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5471:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5472:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5473: 
-
+5474:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 5475:             # use y fill value
-
+5476:             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);
-
+5477:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5478: 
-
 5479:             # advance x location
-
+5480:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5481:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5482:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5483:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5484:         else:
-
 5485:             # use x fill value
-
+5486:             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]) ))));
-
+5487:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5488: 
-
 5489:             # advance y location
-
+5490:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5491:             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:;
-  }
-
+5492:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5493:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5494: 
-
+5495:     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, 5495, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5495, __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;
-
 5496: 
-
 5497: 
-
 5498: @cython.wraparound(False)
-
 5499: @cython.boundscheck(False)
-
+5500: 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;
-}
-
 5501:                                               IntIndex xindex,
-
 5502:                                               int64_t xfill,
-
 5503:                                               int64_t[:] y_,
-
 5504:                                               IntIndex yindex,
-
 5505:                                               int64_t yfill):
-
 5506:     cdef:
-
 5507:         IntIndex out_index
-
+5508:         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;
-
 5509:         int32_t xloc, yloc
-
 5510:         int32_t[:] xindices, yindices, out_indices
-
 5511:         int64_t[:] x, y
-
 5512:         ndarray[uint8_t, ndim=1] out
-
 5513: 
-
 5514:     # suppress Cython compiler warnings due to inlining
-
+5515:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5516:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5517: 
-
 5518:     # need to do this first to know size of result array
-
+5519:     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, 5519, __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;
-
+5520:     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, 5520, __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, 5520, __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, 5520, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5520, __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, 5520, __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, 5520, __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, 5520, __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, 5520, __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, 5520, __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, 5520, __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, 5520, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5521: 
-
+5522:     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, 5522, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5523:     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, 5523, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5524:     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, 5524, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 5525: 
-
 5526:     # walk the two SparseVectors, adding matched locations...
-
+5527:     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;
-
+5528:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5529:             # use x fill value
-
+5530:             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]) ))));
-
+5531:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5532:             continue
-
      goto __pyx_L3_continue;
-
 5533: 
-
+5534:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5535:             # use y fill value
-
+5536:             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);
-
+5537:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5538:             continue
-
      goto __pyx_L3_continue;
-
 5539: 
-
+5540:         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]) )));
-
+5541:         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]) )));
-
 5542: 
-
 5543:         # each index in the out_index had to come from either x, y, or both
-
+5544:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+5545:             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]) ))));
-
+5546:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5547:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5548:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 5549:             # use y fill value
-
+5550:             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);
-
+5551:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5552:         else:
-
 5553:             # use x fill value
-
+5554:             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]) ))));
-
+5555:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 5556: 
-
+5557:     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, 5557, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5557, __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;
-
 5558: 
-
 5559: 
-
+5560: cpdef sparse_or_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_63sparse_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_63sparse_or_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_63sparse_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, 5560, __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, 5560, __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, 5560, __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, 5560, __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, 5560, __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, 5560, __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, 5560, __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, 5561, __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, 5562, __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, 5563, __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, 5560, __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, 5561, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5563, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_62sparse_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_62sparse_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, 5560, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5560, __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, 5560, __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;
-}
-
 5561:                                   SparseIndex xindex, int64_t xfill,
-
 5562:                                   int64_t[:] y,
-
 5563:                                   SparseIndex yindex, int64_t yfill):
-
 5564: 
-
+5565:     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) {
-/* … */
-  }
-
+5566:         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, 5566, __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, 5566, __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, 5566, __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, 5566, __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;
-
+5567:                                              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, 5567, __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, 5567, __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, 5567, __pyx_L1_error)
-
+5568:     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)) {
-/* … */
-  }
-
+5569:         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, 5569, __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, 5569, __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, 5569, __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, 5569, __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;
-
+5570:                                            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, 5570, __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, 5570, __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, 5570, __pyx_L1_error)
-
 5571:     else:
-
+5572:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 5572, __pyx_L1_error)
-  }
-
 5573: 
-
 5574: 
-
 5575: @cython.wraparound(False)
-
 5576: @cython.boundscheck(False)
-
+5577: 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;
-}
-
 5578:                                                 BlockIndex xindex,
-
 5579:                                                 uint8_t xfill,
-
 5580:                                                 uint8_t[:] y_,
-
 5581:                                                 BlockIndex yindex,
-
 5582:                                                 uint8_t yfill):
-
 5583:     '''
-
 5584:     Binary operator on BlockIndex objects with fill values
-
 5585:     '''
-
 5586: 
-
 5587:     cdef:
-
 5588:         BlockIndex out_index
-
+5589:         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;
-
+5590:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 5591:         int32_t xloc, yloc
-
+5592:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 5593: 
-
 5594:         uint8_t[:] x, y
-
 5595:         ndarray[uint8_t, ndim=1] out
-
 5596: 
-
 5597:     # to suppress Cython warning
-
+5598:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5599:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5600: 
-
+5601:     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, 5601, __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;
-
+5602:     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, 5602, __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, 5602, __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, 5602, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5602, __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, 5602, __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, 5602, __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, 5602, __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, 5602, __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, 5602, __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, 5602, __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, 5602, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5603: 
-
 5604:     # Wow, what a hack job. Need to do something about this
-
 5605: 
-
 5606:     # walk the two SparseVectors, adding matched locations...
-
+5607:     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;
-
+5608:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5609:             # use y fill value
-
+5610:             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);
-
+5611:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5612: 
-
 5613:             # advance x location
-
+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:             continue
-
      goto __pyx_L3_continue;
-
 5619: 
-
+5620:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5621:             # use x fill value
-
+5622:             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]) ))));
-
+5623:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5624: 
-
 5625:             # advance y location
-
+5626:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5627:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5628:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5629:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+5630:             continue
-
      goto __pyx_L3_continue;
-
 5631: 
-
+5632:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+5633:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 5634: 
-
 5635:         # each index in the out_index had to come from either x, y, or both
-
+5636:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+5637:             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]) ))));
-
+5638:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5639:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5640: 
-
 5641:             # advance both locations
-
+5642:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5643:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5644:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5645:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5646: 
-
+5647:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5648:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5649:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5650:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5651: 
-
+5652:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 5653:             # use y fill value
-
+5654:             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);
-
+5655:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5656: 
-
 5657:             # advance x location
-
+5658:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5659:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5660:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5661:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5662:         else:
-
 5663:             # use x fill value
-
+5664:             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]) ))));
-
+5665:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5666: 
-
 5667:             # advance y location
-
+5668:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5669:             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:;
-  }
-
+5670:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5671:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5672: 
-
+5673:     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, 5673, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5673, __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;
-
 5674: 
-
 5675: 
-
 5676: @cython.wraparound(False)
-
 5677: @cython.boundscheck(False)
-
+5678: 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;
-}
-
 5679:                                               IntIndex xindex,
-
 5680:                                               uint8_t xfill,
-
 5681:                                               uint8_t[:] y_,
-
 5682:                                               IntIndex yindex,
-
 5683:                                               uint8_t yfill):
-
 5684:     cdef:
-
 5685:         IntIndex out_index
-
+5686:         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;
-
 5687:         int32_t xloc, yloc
-
 5688:         int32_t[:] xindices, yindices, out_indices
-
 5689:         uint8_t[:] x, y
-
 5690:         ndarray[uint8_t, ndim=1] out
-
 5691: 
-
 5692:     # suppress Cython compiler warnings due to inlining
-
+5693:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5694:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5695: 
-
 5696:     # need to do this first to know size of result array
-
+5697:     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, 5697, __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;
-
+5698:     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, 5698, __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, 5698, __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, 5698, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5698, __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, 5698, __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, 5698, __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, 5698, __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, 5698, __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, 5698, __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, 5698, __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, 5698, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5699: 
-
+5700:     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, 5700, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5701:     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, 5701, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5702:     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, 5702, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 5703: 
-
 5704:     # walk the two SparseVectors, adding matched locations...
-
+5705:     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;
-
+5706:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5707:             # use x fill value
-
+5708:             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]) ))));
-
+5709:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5710:             continue
-
      goto __pyx_L3_continue;
-
 5711: 
-
+5712:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5713:             # use y fill value
-
+5714:             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);
-
+5715:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5716:             continue
-
      goto __pyx_L3_continue;
-
 5717: 
-
+5718:         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]) )));
-
+5719:         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]) )));
-
 5720: 
-
 5721:         # each index in the out_index had to come from either x, y, or both
-
+5722:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+5723:             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]) ))));
-
+5724:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5725:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5726:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 5727:             # use y fill value
-
+5728:             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);
-
+5729:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5730:         else:
-
 5731:             # use x fill value
-
+5732:             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]) ))));
-
+5733:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 5734: 
-
+5735:     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, 5735, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5735, __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;
-
 5736: 
-
 5737: 
-
+5738: cpdef sparse_or_uint8(uint8_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_65sparse_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_65sparse_or_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_65sparse_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, 5738, __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, 5738, __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, 5738, __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, 5738, __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, 5738, __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, 5738, __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, 5738, __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, 5739, __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, 5740, __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, 5741, __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, 5738, __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, 5739, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5741, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_64sparse_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_64sparse_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, 5738, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5738, __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, 5738, __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;
-}
-
 5739:                                   SparseIndex xindex, uint8_t xfill,
-
 5740:                                   uint8_t[:] y,
-
 5741:                                   SparseIndex yindex, uint8_t yfill):
-
 5742: 
-
+5743:     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) {
-/* … */
-  }
-
+5744:         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, 5744, __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, 5744, __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, 5744, __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, 5744, __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;
-
+5745:                                              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, 5745, __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, 5745, __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, 5745, __pyx_L1_error)
-
+5746:     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)) {
-/* … */
-  }
-
+5747:         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, 5747, __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, 5747, __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, 5747, __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, 5747, __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;
-
+5748:                                            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, 5748, __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, 5748, __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, 5748, __pyx_L1_error)
-
 5749:     else:
-
+5750:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 5750, __pyx_L1_error)
-  }
-
 5751: 
-
 5752: 
-
 5753: @cython.wraparound(False)
-
 5754: @cython.boundscheck(False)
-
+5755: 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;
-}
-
 5756:                                                 BlockIndex xindex,
-
 5757:                                                 int64_t xfill,
-
 5758:                                                 int64_t[:] y_,
-
 5759:                                                 BlockIndex yindex,
-
 5760:                                                 int64_t yfill):
-
 5761:     '''
-
 5762:     Binary operator on BlockIndex objects with fill values
-
 5763:     '''
-
 5764: 
-
 5765:     cdef:
-
 5766:         BlockIndex out_index
-
+5767:         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;
-
+5768:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 5769:         int32_t xloc, yloc
-
+5770:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 5771: 
-
 5772:         int64_t[:] x, y
-
 5773:         ndarray[uint8_t, ndim=1] out
-
 5774: 
-
 5775:     # to suppress Cython warning
-
+5776:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5777:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5778: 
-
+5779:     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, 5779, __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;
-
+5780:     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, 5780, __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, 5780, __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, 5780, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5780, __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, 5780, __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, 5780, __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, 5780, __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, 5780, __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, 5780, __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, 5780, __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, 5780, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5781: 
-
 5782:     # Wow, what a hack job. Need to do something about this
-
 5783: 
-
 5784:     # walk the two SparseVectors, adding matched locations...
-
+5785:     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;
-
+5786:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5787:             # use y fill value
-
+5788:             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);
-
+5789:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5790: 
-
 5791:             # advance x location
-
+5792:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5793:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5794:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5795:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+5796:             continue
-
      goto __pyx_L3_continue;
-
 5797: 
-
+5798:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5799:             # use x fill value
-
+5800:             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]) ))));
-
+5801:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5802: 
-
 5803:             # advance y location
-
+5804:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5805:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5806:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5807:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+5808:             continue
-
      goto __pyx_L3_continue;
-
 5809: 
-
+5810:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+5811:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 5812: 
-
 5813:         # each index in the out_index had to come from either x, y, or both
-
+5814:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+5815:             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]) ))));
-
+5816:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5817:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5818: 
-
 5819:             # advance both locations
-
+5820:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5821:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5822:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5823:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5824: 
-
+5825:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5826:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5827:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5828:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5829: 
-
+5830:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 5831:             # use y fill value
-
+5832:             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);
-
+5833:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5834: 
-
 5835:             # advance x location
-
+5836:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5837:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5838:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5839:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 5840:         else:
-
 5841:             # use x fill value
-
+5842:             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]) ))));
-
+5843:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5844: 
-
 5845:             # advance y location
-
+5846:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5847:             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:;
-  }
-
+5848:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5849:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 5850: 
-
+5851:     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, 5851, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5851, __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;
-
 5852: 
-
 5853: 
-
 5854: @cython.wraparound(False)
-
 5855: @cython.boundscheck(False)
-
+5856: 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;
-}
-
 5857:                                               IntIndex xindex,
-
 5858:                                               int64_t xfill,
-
 5859:                                               int64_t[:] y_,
-
 5860:                                               IntIndex yindex,
-
 5861:                                               int64_t yfill):
-
 5862:     cdef:
-
 5863:         IntIndex out_index
-
+5864:         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;
-
 5865:         int32_t xloc, yloc
-
 5866:         int32_t[:] xindices, yindices, out_indices
-
 5867:         int64_t[:] x, y
-
 5868:         ndarray[uint8_t, ndim=1] out
-
 5869: 
-
 5870:     # suppress Cython compiler warnings due to inlining
-
+5871:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5872:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5873: 
-
 5874:     # need to do this first to know size of result array
-
+5875:     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, 5875, __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;
-
+5876:     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, 5876, __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, 5876, __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, 5876, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5876, __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, 5876, __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, 5876, __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, 5876, __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, 5876, __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, 5876, __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, 5876, __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, 5876, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5877: 
-
+5878:     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, 5878, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5879:     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, 5879, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+5880:     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, 5880, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 5881: 
-
 5882:     # walk the two SparseVectors, adding matched locations...
-
+5883:     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;
-
+5884:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5885:             # use x fill value
-
+5886:             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]) ))));
-
+5887:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5888:             continue
-
      goto __pyx_L3_continue;
-
 5889: 
-
+5890:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 5891:             # use y fill value
-
+5892:             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);
-
+5893:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5894:             continue
-
      goto __pyx_L3_continue;
-
 5895: 
-
+5896:         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]) )));
-
+5897:         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]) )));
-
 5898: 
-
 5899:         # each index in the out_index had to come from either x, y, or both
-
+5900:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+5901:             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]) ))));
-
+5902:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5903:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+5904:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 5905:             # use y fill value
-
+5906:             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);
-
+5907:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5908:         else:
-
 5909:             # use x fill value
-
+5910:             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]) ))));
-
+5911:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 5912: 
-
+5913:     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, 5913, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 5913, __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;
-
 5914: 
-
 5915: 
-
+5916: cpdef sparse_xor_int64(int64_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_67sparse_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_67sparse_xor_int64(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_67sparse_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, 5916, __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, 5916, __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, 5916, __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, 5916, __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, 5916, __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, 5916, __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, 5916, __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, 5917, __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, 5918, __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, 5919, __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, 5916, __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, 5917, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 5919, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_66sparse_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_66sparse_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, 5916, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 5916, __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, 5916, __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;
-}
-
 5917:                                   SparseIndex xindex, int64_t xfill,
-
 5918:                                   int64_t[:] y,
-
 5919:                                   SparseIndex yindex, int64_t yfill):
-
 5920: 
-
+5921:     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) {
-/* … */
-  }
-
+5922:         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, 5922, __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, 5922, __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, 5922, __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, 5922, __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;
-
+5923:                                              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, 5923, __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, 5923, __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, 5923, __pyx_L1_error)
-
+5924:     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)) {
-/* … */
-  }
-
+5925:         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, 5925, __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, 5925, __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, 5925, __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, 5925, __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;
-
+5926:                                            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, 5926, __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, 5926, __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, 5926, __pyx_L1_error)
-
 5927:     else:
-
+5928:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 5928, __pyx_L1_error)
-  }
-
 5929: 
-
 5930: 
-
 5931: @cython.wraparound(False)
-
 5932: @cython.boundscheck(False)
-
+5933: 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;
-}
-
 5934:                                                 BlockIndex xindex,
-
 5935:                                                 uint8_t xfill,
-
 5936:                                                 uint8_t[:] y_,
-
 5937:                                                 BlockIndex yindex,
-
 5938:                                                 uint8_t yfill):
-
 5939:     '''
-
 5940:     Binary operator on BlockIndex objects with fill values
-
 5941:     '''
-
 5942: 
-
 5943:     cdef:
-
 5944:         BlockIndex out_index
-
+5945:         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;
-
+5946:         int32_t xbp = 0, ybp = 0 # block positions
-
  __pyx_v_xbp = 0;
-  __pyx_v_ybp = 0;
-
 5947:         int32_t xloc, yloc
-
+5948:         Py_ssize_t xblock = 0, yblock = 0 # block numbers
-
  __pyx_v_xblock = 0;
-  __pyx_v_yblock = 0;
-
 5949: 
-
 5950:         uint8_t[:] x, y
-
 5951:         ndarray[uint8_t, ndim=1] out
-
 5952: 
-
 5953:     # to suppress Cython warning
-
+5954:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+5955:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 5956: 
-
+5957:     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, 5957, __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;
-
+5958:     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, 5958, __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, 5958, __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, 5958, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 5958, __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, 5958, __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, 5958, __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, 5958, __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, 5958, __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, 5958, __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, 5958, __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, 5958, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 5959: 
-
 5960:     # Wow, what a hack job. Need to do something about this
-
 5961: 
-
 5962:     # walk the two SparseVectors, adding matched locations...
-
+5963:     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;
-
+5964:         if yblock == yindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_yblock == __pyx_v_yindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5965:             # use y fill value
-
+5966:             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);
-
+5967:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 5968: 
-
 5969:             # advance x location
-
+5970:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5971:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5972:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+5973:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
+5974:             continue
-
      goto __pyx_L3_continue;
-
 5975: 
-
+5976:         if xblock == xindex.nblocks:
-
    __pyx_t_14 = ((__pyx_v_xblock == __pyx_v_xindex->nblocks) != 0);
-    if (__pyx_t_14) {
-/* … */
-    }
-
 5977:             # use x fill value
-
+5978:             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]) ))));
-
+5979:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5980: 
-
 5981:             # advance y location
-
+5982:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+5983:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+5984:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+5985:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
+5986:             continue
-
      goto __pyx_L3_continue;
-
 5987: 
-
+5988:         yloc = yindex.locbuf[yblock] + ybp
-
    __pyx_v_yloc = ((__pyx_v_yindex->locbuf[__pyx_v_yblock]) + __pyx_v_ybp);
-
+5989:         xloc = xindex.locbuf[xblock] + xbp
-
    __pyx_v_xloc = ((__pyx_v_xindex->locbuf[__pyx_v_xblock]) + __pyx_v_xbp);
-
 5990: 
-
 5991:         # each index in the out_index had to come from either x, y, or both
-
+5992:         if xloc == yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
+5993:             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]) ))));
-
+5994:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+5995:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 5996: 
-
 5997:             # advance both locations
-
+5998:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+5999:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+6000:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+6001:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 6002: 
-
+6003:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+6004:             if ybp == yindex.lenbuf[yblock]:
-
      __pyx_t_14 = ((__pyx_v_ybp == (__pyx_v_yindex->lenbuf[__pyx_v_yblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+6005:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+6006:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 6007: 
-
+6008:         elif xloc < yloc:
-
    __pyx_t_14 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_14) {
-/* … */
-      goto __pyx_L9;
-    }
-
 6009:             # use y fill value
-
+6010:             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);
-
+6011:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 6012: 
-
 6013:             # advance x location
-
+6014:             xbp += 1
-
      __pyx_v_xbp = (__pyx_v_xbp + 1);
-
+6015:             if xbp == xindex.lenbuf[xblock]:
-
      __pyx_t_14 = ((__pyx_v_xbp == (__pyx_v_xindex->lenbuf[__pyx_v_xblock])) != 0);
-      if (__pyx_t_14) {
-/* … */
-      }
-
+6016:                 xblock += 1
-
        __pyx_v_xblock = (__pyx_v_xblock + 1);
-
+6017:                 xbp = 0
-
        __pyx_v_xbp = 0;
-
 6018:         else:
-
 6019:             # use x fill value
-
+6020:             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]) ))));
-
+6021:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
 6022: 
-
 6023:             # advance y location
-
+6024:             ybp += 1
-
      __pyx_v_ybp = (__pyx_v_ybp + 1);
-
+6025:             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:;
-  }
-
+6026:                 yblock += 1
-
        __pyx_v_yblock = (__pyx_v_yblock + 1);
-
+6027:                 ybp = 0
-
        __pyx_v_ybp = 0;
-
 6028: 
-
+6029:     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, 6029, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6029, __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;
-
 6030: 
-
 6031: 
-
 6032: @cython.wraparound(False)
-
 6033: @cython.boundscheck(False)
-
+6034: 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;
-}
-
 6035:                                               IntIndex xindex,
-
 6036:                                               uint8_t xfill,
-
 6037:                                               uint8_t[:] y_,
-
 6038:                                               IntIndex yindex,
-
 6039:                                               uint8_t yfill):
-
 6040:     cdef:
-
 6041:         IntIndex out_index
-
+6042:         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;
-
 6043:         int32_t xloc, yloc
-
 6044:         int32_t[:] xindices, yindices, out_indices
-
 6045:         uint8_t[:] x, y
-
 6046:         ndarray[uint8_t, ndim=1] out
-
 6047: 
-
 6048:     # suppress Cython compiler warnings due to inlining
-
+6049:     x = x_
-
  __PYX_INC_MEMVIEW(&__pyx_v_x_, 0);
-  __pyx_v_x = __pyx_v_x_;
-
+6050:     y = y_
-
  __PYX_INC_MEMVIEW(&__pyx_v_y_, 0);
-  __pyx_v_y = __pyx_v_y_;
-
 6051: 
-
 6052:     # need to do this first to know size of result array
-
+6053:     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, 6053, __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;
-
+6054:     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, 6054, __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, 6054, __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, 6054, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(2, 6054, __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, 6054, __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, 6054, __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, 6054, __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, 6054, __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, 6054, __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, 6054, __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, 6054, __pyx_L1_error)
-  }
-  __pyx_t_6 = 0;
-  __pyx_v_out = ((PyArrayObject *)__pyx_t_5);
-  __pyx_t_5 = 0;
-
 6055: 
-
+6056:     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, 6056, __pyx_L1_error)
-  __pyx_v_xindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+6057:     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, 6057, __pyx_L1_error)
-  __pyx_v_yindices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
+6058:     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, 6058, __pyx_L1_error)
-  __pyx_v_out_indices = __pyx_t_11;
-  __pyx_t_11.memview = NULL;
-  __pyx_t_11.data = NULL;
-
 6059: 
-
 6060:     # walk the two SparseVectors, adding matched locations...
-
+6061:     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;
-
+6062:         if xi == xindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_xi == __pyx_v_xindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 6063:             # use x fill value
-
+6064:             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]) ))));
-
+6065:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+6066:             continue
-
      goto __pyx_L3_continue;
-
 6067: 
-
+6068:         if yi == yindex.npoints:
-
    __pyx_t_15 = ((__pyx_v_yi == __pyx_v_yindex->npoints) != 0);
-    if (__pyx_t_15) {
-/* … */
-    }
-
 6069:             # use y fill value
-
+6070:             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);
-
+6071:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+6072:             continue
-
      goto __pyx_L3_continue;
-
 6073: 
-
+6074:         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]) )));
-
+6075:         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]) )));
-
 6076: 
-
 6077:         # each index in the out_index had to come from either x, y, or both
-
+6078:         if xloc == yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc == __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
+6079:             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]) ))));
-
+6080:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
+6081:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-
+6082:         elif xloc < yloc:
-
    __pyx_t_15 = ((__pyx_v_xloc < __pyx_v_yloc) != 0);
-    if (__pyx_t_15) {
-/* … */
-      goto __pyx_L7;
-    }
-
 6083:             # use y fill value
-
+6084:             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);
-
+6085:             xi += 1
-
      __pyx_v_xi = (__pyx_v_xi + 1);
-
 6086:         else:
-
 6087:             # use x fill value
-
+6088:             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]) ))));
-
+6089:             yi += 1
-
      __pyx_v_yi = (__pyx_v_yi + 1);
-    }
-    __pyx_L7:;
-    __pyx_L3_continue:;
-  }
-
 6090: 
-
+6091:     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, 6091, __pyx_L1_error)
-  __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(2, 6091, __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;
-
 6092: 
-
 6093: 
-
+6094: cpdef sparse_xor_uint8(uint8_t[:] x,
-
static PyObject *__pyx_pw_6pandas_5_libs_6sparse_69sparse_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_69sparse_xor_uint8(PyObject *__pyx_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
-static PyObject *__pyx_pw_6pandas_5_libs_6sparse_69sparse_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, 6094, __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, 6094, __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, 6094, __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, 6094, __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, 6094, __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, 6094, __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, 6094, __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, 6095, __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, 6096, __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, 6097, __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, 6094, __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, 6095, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_yindex), __pyx_ptype_6pandas_5_libs_6sparse_SparseIndex, 1, "yindex", 0))) __PYX_ERR(2, 6097, __pyx_L1_error)
-  __pyx_r = __pyx_pf_6pandas_5_libs_6sparse_68sparse_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_68sparse_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, 6094, __pyx_L1_error) }
-  if (unlikely(!__pyx_v_y.memview)) { __Pyx_RaiseUnboundLocalError("y"); __PYX_ERR(2, 6094, __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, 6094, __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;
-}
-
 6095:                                   SparseIndex xindex, uint8_t xfill,
-
 6096:                                   uint8_t[:] y,
-
 6097:                                   SparseIndex yindex, uint8_t yfill):
-
 6098: 
-
+6099:     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) {
-/* … */
-  }
-
+6100:         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, 6100, __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, 6100, __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, 6100, __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, 6100, __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;
-
+6101:                                              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, 6101, __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, 6101, __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, 6101, __pyx_L1_error)
-
+6102:     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)) {
-/* … */
-  }
-
+6103:         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, 6103, __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, 6103, __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, 6103, __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, 6103, __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;
-
+6104:                                            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, 6104, __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, 6104, __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, 6104, __pyx_L1_error)
-
 6105:     else:
-
+6106:         raise NotImplementedError
-
  /*else*/ {
-    __Pyx_Raise(__pyx_builtin_NotImplementedError, 0, 0, 0);
-    __PYX_ERR(2, 6106, __pyx_L1_error)
-  }
-
From 3d5c4bb787fb9ad39732b2d3666f2041bba8e38a Mon Sep 17 00:00:00 2001 From: Matthew Zeitlin Date: Fri, 17 Sep 2021 17:05:47 -0400 Subject: [PATCH 3/4] Add back type imports --- pandas/_libs/sparse.pyx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pandas/_libs/sparse.pyx b/pandas/_libs/sparse.pyx index 18af77461ecd2..d2458e0b9c12a 100644 --- a/pandas/_libs/sparse.pyx +++ b/pandas/_libs/sparse.pyx @@ -5,7 +5,9 @@ cimport numpy as cnp from numpy cimport ( float64_t, int8_t, + int16_t, int32_t, + int64_t, ndarray, uint8_t, ) From 9be2d9f30676dabb5413b0e15cc051ac267a988a Mon Sep 17 00:00:00 2001 From: Matthew Zeitlin Date: Fri, 17 Sep 2021 17:08:19 -0400 Subject: [PATCH 4/4] Add back float32 --- pandas/_libs/sparse.pyx | 1 + 1 file changed, 1 insertion(+) diff --git a/pandas/_libs/sparse.pyx b/pandas/_libs/sparse.pyx index d2458e0b9c12a..2adf55fbc91d8 100644 --- a/pandas/_libs/sparse.pyx +++ b/pandas/_libs/sparse.pyx @@ -3,6 +3,7 @@ import numpy as np cimport numpy as cnp from numpy cimport ( + float32_t, float64_t, int8_t, int16_t,