Loading...
Searching...
No Matches

## dlasy2()

subroutine dlasy2 | ( | logical | ltranl,
|  | logical | ltranr,
|  | integer | isgn,
|  | integer | n1,
|  | integer | n2,
|  | double precision, dimension( ldtl, * ) | tl,
|  | integer | ldtl,
|  | double precision, dimension( ldtr, * ) | tr,
|  | integer | ldtr,
|  | double precision, dimension( ldb, * ) | b,
|  | integer | ldb,
|  | double precision | scale,
|  | double precision, dimension( ldx, * ) | x,
|  | integer | ldx,
|  | double precision | xnorm,
|  | integer | info )

DLASY2 solves the Sylvester matrix equation where the matrices are of order 1 or 2.

Download DLASY2 + dependencies [TGZ] [ZIP] [TXT]

Purpose:

      !>
      !> DLASY2 solves for the N1 by N2 matrix X, 1 <= N1,N2 <= 2, in
      !>
      !>        op(TL)*X + ISGN*X*op(TR) = SCALE*B,
      !>
      !> where TL is N1 by N1, TR is N2 by N2, B is N1 by N2, and ISGN = 1 or
      !> -1.  op(T) = T or T**T, where T**T denotes the transpose of T.
      !>

Parameters

  [in]

  LTRANL

      !>          LTRANL is LOGICAL
      !>          On entry, LTRANL specifies the op(TL):
      !>             = .FALSE., op(TL) = TL,
      !>             = .TRUE., op(TL) = TL**T.
      !>

  [in]

  LTRANR

      !>          LTRANR is LOGICAL
      !>          On entry, LTRANR specifies the op(TR):
      !>            = .FALSE., op(TR) = TR,
      !>            = .TRUE., op(TR) = TR**T.
      !>

  [in]

  ISGN

      !>          ISGN is INTEGER
      !>          On entry, ISGN specifies the sign of the equation
      !>          as described before. ISGN may only be 1 or -1.
      !>

  [in]

  N1

      !>          N1 is INTEGER
      !>          On entry, N1 specifies the order of matrix TL.
      !>          N1 may only be 0, 1 or 2.
      !>

  [in]

  N2

      !>          N2 is INTEGER
      !>          On entry, N2 specifies the order of matrix TR.
      !>          N2 may only be 0, 1 or 2.
      !>

  [in]

  TL

      !>          TL is DOUBLE PRECISION array, dimension (LDTL,2)
      !>          On entry, TL contains an N1 by N1 matrix.
      !>

  [in]

  LDTL

      !>          LDTL is INTEGER
      !>          The leading dimension of the matrix TL. LDTL >= max(1,N1).
      !>

  [in]

  TR

      !>          TR is DOUBLE PRECISION array, dimension (LDTR,2)
      !>          On entry, TR contains an N2 by N2 matrix.
      !>

  [in]

  LDTR

      !>          LDTR is INTEGER
      !>          The leading dimension of the matrix TR. LDTR >= max(1,N2).
      !>

  [in]

  B

      !>          B is DOUBLE PRECISION array, dimension (LDB,2)
      !>          On entry, the N1 by N2 matrix B contains the right-hand
      !>          side of the equation.
      !>

  [in]

  LDB

      !>          LDB is INTEGER
      !>          The leading dimension of the matrix B. LDB >= max(1,N1).
      !>

  [out]

  SCALE

      !>          SCALE is DOUBLE PRECISION
      !>          On exit, SCALE contains the scale factor. SCALE is chosen
      !>          less than or equal to 1 to prevent the solution overflowing.
      !>

  [out]

  X

      !>          X is DOUBLE PRECISION array, dimension (LDX,2)
      !>          On exit, X contains the N1 by N2 solution.
      !>

  [in]

  LDX

      !>          LDX is INTEGER
      !>          The leading dimension of the matrix X. LDX >= max(1,N1).
      !>

  [out]

  XNORM

      !>          XNORM is DOUBLE PRECISION
      !>          On exit, XNORM is the infinity-norm of the solution.
      !>

  [out]

  INFO

      !>          INFO is INTEGER
      !>          On exit, INFO is set to
      !>             0: successful exit.
      !>             1: TL and TR have too close eigenvalues, so TL or
      !>                TR is perturbed to get a nonsingular equation.
      !>          NOTE: In the interests of speed, this routine does not
      !>                check the inputs for errors.
      !>

Author
  Univ. of Tennessee
  Univ. of California Berkeley
  Univ. of Colorado Denver
  NAG Ltd.