--- 
:name: slasy2
:md5sum: ae3def82cfd379e2cd0add43bc32316d
:category: :subroutine
:arguments: 
- ltranl: 
    :type: logical
    :intent: input
- ltranr: 
    :type: logical
    :intent: input
- isgn: 
    :type: integer
    :intent: input
- n1: 
    :type: integer
    :intent: input
- n2: 
    :type: integer
    :intent: input
- tl: 
    :type: real
    :intent: input
    :dims: 
    - ldtl
    - "2"
- ldtl: 
    :type: integer
    :intent: input
- tr: 
    :type: real
    :intent: input
    :dims: 
    - ldtr
    - "2"
- ldtr: 
    :type: integer
    :intent: input
- b: 
    :type: real
    :intent: input
    :dims: 
    - ldb
    - "2"
- ldb: 
    :type: integer
    :intent: input
- scale: 
    :type: real
    :intent: output
- x: 
    :type: real
    :intent: output
    :dims: 
    - ldx
    - "2"
- ldx: 
    :type: integer
    :intent: input
- xnorm: 
    :type: real
    :intent: output
- info: 
    :type: integer
    :intent: output
:substitutions: 
  ldx: MAX(1,n1)
:fortran_help: "      SUBROUTINE SLASY2( LTRANL, LTRANR, ISGN, N1, N2, TL, LDTL, TR, LDTR, B, LDB, SCALE, X, LDX, XNORM, INFO )\n\n\
  *  Purpose\n\
  *  =======\n\
  *\n\
  *  SLASY2 solves for the N1 by N2 matrix X, 1 <= N1,N2 <= 2, in\n\
  *\n\
  *         op(TL)*X + ISGN*X*op(TR) = SCALE*B,\n\
  *\n\
  *  where TL is N1 by N1, TR is N2 by N2, B is N1 by N2, and ISGN = 1 or\n\
  *  -1.  op(T) = T or T', where T' denotes the transpose of T.\n\
  *\n\n\
  *  Arguments\n\
  *  =========\n\
  *\n\
  *  LTRANL  (input) LOGICAL\n\
  *          On entry, LTRANL specifies the op(TL):\n\
  *             = .FALSE., op(TL) = TL,\n\
  *             = .TRUE., op(TL) = TL'.\n\
  *\n\
  *  LTRANR  (input) LOGICAL\n\
  *          On entry, LTRANR specifies the op(TR):\n\
  *            = .FALSE., op(TR) = TR,\n\
  *            = .TRUE., op(TR) = TR'.\n\
  *\n\
  *  ISGN    (input) INTEGER\n\
  *          On entry, ISGN specifies the sign of the equation\n\
  *          as described before. ISGN may only be 1 or -1.\n\
  *\n\
  *  N1      (input) INTEGER\n\
  *          On entry, N1 specifies the order of matrix TL.\n\
  *          N1 may only be 0, 1 or 2.\n\
  *\n\
  *  N2      (input) INTEGER\n\
  *          On entry, N2 specifies the order of matrix TR.\n\
  *          N2 may only be 0, 1 or 2.\n\
  *\n\
  *  TL      (input) REAL array, dimension (LDTL,2)\n\
  *          On entry, TL contains an N1 by N1 matrix.\n\
  *\n\
  *  LDTL    (input) INTEGER\n\
  *          The leading dimension of the matrix TL. LDTL >= max(1,N1).\n\
  *\n\
  *  TR      (input) REAL array, dimension (LDTR,2)\n\
  *          On entry, TR contains an N2 by N2 matrix.\n\
  *\n\
  *  LDTR    (input) INTEGER\n\
  *          The leading dimension of the matrix TR. LDTR >= max(1,N2).\n\
  *\n\
  *  B       (input) REAL array, dimension (LDB,2)\n\
  *          On entry, the N1 by N2 matrix B contains the right-hand\n\
  *          side of the equation.\n\
  *\n\
  *  LDB     (input) INTEGER\n\
  *          The leading dimension of the matrix B. LDB >= max(1,N1).\n\
  *\n\
  *  SCALE   (output) REAL\n\
  *          On exit, SCALE contains the scale factor. SCALE is chosen\n\
  *          less than or equal to 1 to prevent the solution overflowing.\n\
  *\n\
  *  X       (output) REAL array, dimension (LDX,2)\n\
  *          On exit, X contains the N1 by N2 solution.\n\
  *\n\
  *  LDX     (input) INTEGER\n\
  *          The leading dimension of the matrix X. LDX >= max(1,N1).\n\
  *\n\
  *  XNORM   (output) REAL\n\
  *          On exit, XNORM is the infinity-norm of the solution.\n\
  *\n\
  *  INFO    (output) INTEGER\n\
  *          On exit, INFO is set to\n\
  *             0: successful exit.\n\
  *             1: TL and TR have too close eigenvalues, so TL or\n\
  *                TR is perturbed to get a nonsingular equation.\n\
  *          NOTE: In the interests of speed, this routine does not\n\
  *                check the inputs for errors.\n\
  *\n\n\
  * =====================================================================\n\
  *\n"
