Example #1
0
File: mat.py Project: dyalab/amino
 def __rsub__(self, other):
     """Subtract a self from a scalar or vector"""
     if is_scalar(other):
         return self.__neg__().increment(other)
     elif isinstance(other, list):
         return DVec(other).axpy(-1, self)
     else:
         raise Exception('Invalid argument')
Example #2
0
File: mat.py Project: dyalab/amino
 def __isub__(self, other):
     if is_scalar(other):
         libamino.aa_dmat_inc(self, -other)
         return self
     if isinstance(other, DMat):
         libamino.aa_dmat_axpy(-1, other, self)
         return self
     else:
         raise TypeError('Cannot increment matrix with %s' % type(other))
Example #3
0
File: mat.py Project: dyalab/amino
 def __sub__(self, other):
     """Subtract a scalar or vector from self"""
     if isinstance(other, DVec):
         return DVec(self).axpy(-1, other)
     elif isinstance(other, list):
         return self.__sub__(DVec(other))
     elif is_scalar(other):
         return DVec(self).increment(-other)
     else:
         raise Exception('Invalid argument')
Example #4
0
File: mat.py Project: dyalab/amino
 def __iadd__(self, other):
     """Add a scalar or vector to self"""
     if isinstance(other, DVec):
         return self.axpy(1, other)
     elif isinstance(other, list):
         return self.axpy(1, DVec(other))
     elif is_scalar(other):
         return self.increment(other)
     else:
         raise Exception('Invalid argument')
Example #5
0
File: mat.py Project: dyalab/amino
 def __mul__(self, other):
     if is_scalar(other):
         return DMat(self).__imul__(other)
     elif isinstance(other, DVec):
         y = DVec(self._rows)
         y.gemv(CBLAS_NO_TRANS, 1, self, other, 0)
         return y
     elif isinstance(other, list):
         return self * DVec(other)
     elif isinstance(other, DMat):
         A, B = self, other
         C = DMat((A._rows, B._cols))
         return C.gemm(CBLAS_NO_TRANS, CBLAS_NO_TRANS, 1, A, B, 1)
     else:
         raise TypeError('Cannot multiply matrix with %s' % type(other))
Example #6
0
File: mat.py Project: dyalab/amino
 def __rsub__(self, other):
     if is_scalar(other):
         return self.__neg__().__iadd__(other)
     else:
         raise TypeError('Cannot subtract matrix with %s' % type(other))
Example #7
0
File: mat.py Project: dyalab/amino
 def __sub__(self, other):
     if is_scalar(other) or isinstance(other, DMat):
         return DMat(self).__isub__(other)
     else:
         raise TypeError('Cannot subtract matrix with %s' % type(other))
Example #8
0
File: mat.py Project: dyalab/amino
 def __radd__(self, other):
     if is_scalar(other):
         return DMat(self).__iadd__(other)
     else:
         raise TypeError('Cannot add matrix add %s' % type(other))
Example #9
0
File: mat.py Project: dyalab/amino
 def __rmul__(self, other):
     if is_scalar(other):
         return DMat(self).__imul__(other)
     else:
         raise TypeError('Cannot multiply matrix with %s' % type(other))
Example #10
0
File: mat.py Project: dyalab/amino
 def __imul__(self, other):
     if is_scalar(other):
         libamino.aa_dmat_scal(self, other)
         return self
     else:
         raise TypeError('Cannot cale matrix with %s' % type(other))