1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145
|
---
: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"
|