code: def _call(self, x, out=None):
          
          # TODO: add optimization in case an operator appears repeatedly in a
          # row
          if out is None:
              out = self.range.zero()
              for i, j, op in zip(self.ops.row, self.ops.col, self.ops.data):
                  out[i] += op(x[j])
          else:
              has_evaluated_row = np.zeros(len(self.range), dtype=bool)
              for i, j, op in zip(self.ops.row, self.ops.col, self.ops.data):
                  if not has_evaluated_row[i]:
                      op(x[j], out=out[i])
                  else:
                      # TODO: optimize
                      out[i] += op(x[j])
  
                  has_evaluated_row[i] = True
  
              for i, evaluated in enumerate(has_evaluated_row):
                  if not evaluated:
                      out[i].set_zero()
  
          return out
docs: Call the operators on the parts of ``x``.