# ?laqr1

Sets a scalar multiple of the first column of the product of 2-by-2 or 3-by-3 matrix H and specified shifts.

## Syntax

call slaqr1( n, h, ldh, sr1, si1, sr2, si2, v )

call dlaqr1( n, h, ldh, sr1, si1, sr2, si2, v )

call claqr1( n, h, ldh, s1, s2, v )

call zlaqr1( n, h, ldh, s1, s2, v )

## Description

Given a 2-by-2 or 3-by-3 matrix H, this routine sets v to a scalar multiple of the first column of the product

`K = (H - s1*I)*(H - s2*I)`, or `K = (H - (sr1 + i*si1)*I)*(H - (sr2 + i*si2)*I)`

scaling to avoid overflows and most underflows.

It is assumed that either 1) `sr1 = sr2` and ``si1 = -si2``, or 2) `si1 = si2 = 0`.

This is useful for starting double implicit shift bulges in the QR algorithm.

## Input Parameters

n

  INTEGER.

  The order of the matrix H. n must be equal to 2 or 3.

sr1, si2, sr2, si2

  REAL for slaqr1

  DOUBLE PRECISION for dlaqr1

  Shift values that define K in the formula above.

s1, s2

  COMPLEX for claqr1

  COMPLEX*16 for zlaqr1.

  Shift values that define K in the formula above.
h

  REAL for slaqr1

  DOUBLE PRECISION for dlaqr1

  COMPLEX for claqr1

  COMPLEX*16 for zlaqr1.

  Array, DIMENSION (ldh, n), contains 2-by-2 or 3-by-3 matrix H in the formula above.

ldh

  INTEGER.

  The leading dimension of the array h just as declared in the calling routine. ``ldh ≥ n``.

## Output Parameters

v

  REAL for slaqr1

  DOUBLE PRECISION for dlaqr1

  COMPLEX for claqr1

  COMPLEX*16 for zlaqr1.

  Array with dimension `(n)`.

  A scalar multiple of the first column of the matrix K in the formula above.

Parent topic: Auxiliary Routines