#### Previous topic

scipy.linalg.qr

#### Next topic

scipy.linalg.qr_update

# scipy.linalg.qr_multiply

`scipy.linalg.``qr_multiply`(a, c, mode='right', pivoting=False, conjugate=False, overwrite_a=False, overwrite_c=False)

  Calculate the QR decomposition and multiply Q with a matrix.

  Calculate the decomposition `A = Q R` where Q is unitary/orthogonal and R upper triangular. Multiply Q with a vector or a matrix c.

  Parameters:

  a : array_like, shape (M, N)

  > Matrix to be decomposed

  c : array_like, one- or two-dimensional

  > calculate the product of c and q, depending on the mode:

  mode : {‘left’, ‘right’}, optional

  > `dot(Q, c)` is returned if mode is ‘left’, `dot(c, Q)` is returned if mode is ‘right’. The shape of c must be appropriate for the matrix multiplications, if mode is ‘left’, `min(a.shape) == c.shape[0]`, if mode is ‘right’, `a.shape[0] == c.shape[1]`.

  pivoting : bool, optional

  > Whether or not factorization should include pivoting for rank-revealing qr decomposition, see the documentation of qr.

  conjugate : bool, optional

  > Whether Q should be complex-conjugated. This might be faster than explicit conjugation.

  overwrite_a : bool, optional

  > Whether data in a is overwritten (may improve performance)

  overwrite_c : bool, optional

  > Whether data in c is overwritten (may improve performance). If this is used, c must be big enough to keep the result, i.e. c.shape[0] = a.shape[0] if mode is ‘left’.

  Returns:

  CQ : float or complex ndarray

  > the product of Q and c, as defined in mode

  R : float or complex ndarray

  > Of shape (K, N), `K = min(M, N)`.

  P : ndarray of ints

  > Of shape (N,) for `pivoting=True`. Not returned if `pivoting=False`.

  Raises:

  LinAlgError

  > Raised if decomposition fails

  Notes

  This is an interface to the LAPACK routines dgeqrf, zgeqrf, dormqr, zunmqr, dgeqp3, and zgeqp3.

  New in version 0.11.0.