code: def _cast_sparse_series_op(left, right, opname):
      
      from pandas.core.sparse.api import SparseDtype
  
      opname = opname.strip('_')
  
      # TODO: This should be moved to the array?
      if is_integer_dtype(left) and is_integer_dtype(right):
          # series coerces to float64 if result should have NaN/inf
          if opname in ('floordiv', 'mod') and (right.values == 0).any():
              left = left.astype(SparseDtype(np.float64, left.fill_value))
              right = right.astype(SparseDtype(np.float64, right.fill_value))
          elif opname in ('rfloordiv', 'rmod') and (left.values == 0).any():
              left = left.astype(SparseDtype(np.float64, left.fill_value))
              right = right.astype(SparseDtype(np.float64, right.fill_value))
  
      return left, right
docs: For SparseSeries operation, coerce to float64 if the result is expected
      to have NaN or inf values
  
      Parameters
      ----------
      left : SparseArray
      right : SparseArray
      opname : str
  
      Returns
      -------
      left : SparseArray
      right : SparseArray