'Add val to self, where val can be a scalar or a CUDAMatrix with the
same dimensions as self.'

def add(self, val, target=None):

    if (not target):
        target = self
    if isinstance(val, CUDAMatrix):
        err_code = _cudamat.add_elementwise(self.p_mat, val.p_mat, target.p_mat)
    elif isinstance(val, (int, float)):
        err_code = _cudamat.add_scalar(self.p_mat, ct.c_float(val), target.p_mat)
    else:
        raise ValueError, 'Value    must    be    of    type    CUDAMatrix,    int,    or    float.'
    if err_code:
        raise generate_exception(err_code)
    return target
