'If `other` is a SparseMatrix, add efficiently. Otherwise,
do standard addition.'

def _eval_add(self, other):

    if (not isinstance(other, SparseMatrix)):
        return (self + self._new(other))
    smat = {}
    zero = self._sympify(0)
    for key in set().union(self._smat.keys(), other._smat.keys()):
        sum = (self._smat.get(key, zero) + other._smat.get(key, zero))
        if (sum != 0):
            smat[key] = sum
    return self._new(self.rows, self.cols, smat)
