Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version
sage: M = matrix()
sage: M.__mul__??
Definition:     M.__mul__(left, right)
Source:
    def __mul__(left, right):
        """
        Multiplication of matrix by matrix, vector, or scalar
<snip>
    """
    if have_same_parent(left, right):
        return (<Matrix>left)._matrix_times_matrix_(<Matrix>right)
    else:
        global coercion_model
        return coercion_model.bin_op(left, right, mul)

Also found at

sage: sage.structure.element.Matrix.__mul__??

So that is the file it lives in. I imagine it is overridden in at least some classes below that, such as these.

sage: search_def('matrix_times_matrix')
matrix/matrix0.pyx:4403:    cdef sage.structure.element.Matrix _matrix_times_matrix_(self, sage.structure.element.Matrix right):
matrix/matrix_cyclo_dense.pyx:567:    cdef baseMatrix _matrix_times_matrix_(self, baseMatrix right):
matrix/matrix_double_dense.pyx:398:    cdef sage.structure.element.Matrix _matrix_times_matrix_(self, sage.structure.element.Matrix right):
matrix/matrix_integer_dense.pyx:781:    cdef sage.structure.element.Matrix _matrix_times_matrix_(self, sage.structure.element.Matrix right):
matrix/matrix_mod2_dense.pyx:675:    cdef Matrix _matrix_times_matrix_(self, Matrix right):
matrix/matrix_mod2e_dense.pyx:418:    cdef Matrix _matrix_times_matrix_(self, Matrix right):
matrix/matrix_modn_dense.pyx:858:    cdef Matrix _matrix_times_matrix_(self, Matrix right):
matrix/matrix_modn_sparse.pyx:320:    cdef sage.structure.element.Matrix _matrix_times_matrix_(self, sage.structure.element.Matrix _right):
matrix/matrix_modn_sparse.pyx:383:    def _matrix_times_matrix_dense(self, sage.structure.element.Matrix _right):
matrix/matrix_rational_dense.pyx:1025:    cdef sage.structure.element.Matrix _matrix_times_matrix_(self, sage.structure.element.Matrix right):
matrix/matrix_rational_sparse.pyx:172:    cdef sage.structure.element.Matrix _matrix_times_matrix_(self, sage.structure.element.Matrix _right):
matrix/matrix_rational_sparse.pyx:210:    def _matrix_times_matrix_dense(self, sage.structure.element.Matrix _right):
structure/element.pxd:123:    cdef Matrix _matrix_times_matrix_(left, Matrix right)                  # OK to override, AND call directly
structure/element.pyx:2745:    cdef Matrix _matrix_times_matrix_(left, Matrix right):