(self, other)
return ret_mat
Matrix multiplication between two matrix, please ensure that self's shape is (m, n) and other's shape is (m, k)
        Their result is a matrix of (n, k)
Matrix multiplication between two matrix, please ensure that self's shape is (m, n) and other's shape is (m, k)
        Their result is a matrix of (n, k)
Matrix multiplication between two matrix please ensure that self s shape is ( m n ) and other s shape is ( m k ) Their result is a matrix of ( n k )
def fast_matmul_2d(self, other):
        """
        Matrix multiplication between two matrix, please ensure that self's shape is (m, n) and other's shape is (m, k)
        Their result is a matrix of (n, k)
        """
        if isinstance(other, np.ndarray):
            mat_tensor = PaillierTensor(other, partitions=self.partitions)
            return self.fast_matmul_2d(mat_tensor)

        if isinstance(other, CTableABC):
            other = PaillierTensor(other)

        func = self._vector_mul
        ret_mat = self._obj.join(other.get_obj(), lambda vec1, vec2: (vec1, vec2)).applyPartitions(func).reduce(
            lambda mat1, mat2: mat1 + mat2)

        return ret_mat
def fast_matmul_2d ( self , other ) : if isinstance ( other , np . ndarray ) : mat_tensor = PaillierTensor ( other , partitions = self . partitions ) return self . fast_matmul_2d ( mat_tensor ) if isinstance ( other , CTableABC ) : other = PaillierTensor ( other ) func = self . _vector_mul ret_mat = self . _obj . join ( other . get_obj ( ) , lambda vec1 , vec2 : ( vec1 , vec2 ) ) . applyPartitions ( func ) . reduce ( lambda mat1 , mat2 : mat1 + mat2 ) return ret_mat