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
|
---
:name: slaqtr
:md5sum: 01fae868ef726aad2b53e42607504b14
:category: :subroutine
:arguments:
- ltran:
:type: logical
:intent: input
- lreal:
:type: logical
:intent: input
- n:
:type: integer
:intent: input
- t:
:type: real
:intent: input
:dims:
- ldt
- n
- ldt:
:type: integer
:intent: input
- b:
:type: real
:intent: input
:dims:
- n
- w:
:type: real
:intent: input
- scale:
:type: real
:intent: output
- x:
:type: real
:intent: input/output
:dims:
- 2*n
- work:
:type: real
:intent: workspace
:dims:
- n
- info:
:type: integer
:intent: output
:substitutions: {}
:fortran_help: " SUBROUTINE SLAQTR( LTRAN, LREAL, N, T, LDT, B, W, SCALE, X, WORK, INFO )\n\n\
* Purpose\n\
* =======\n\
*\n\
* SLAQTR solves the real quasi-triangular system\n\
*\n\
* op(T)*p = scale*c, if LREAL = .TRUE.\n\
*\n\
* or the complex quasi-triangular systems\n\
*\n\
* op(T + iB)*(p+iq) = scale*(c+id), if LREAL = .FALSE.\n\
*\n\
* in real arithmetic, where T is upper quasi-triangular.\n\
* If LREAL = .FALSE., then the first diagonal block of T must be\n\
* 1 by 1, B is the specially structured matrix\n\
*\n\
* B = [ b(1) b(2) ... b(n) ]\n\
* [ w ]\n\
* [ w ]\n\
* [ . ]\n\
* [ w ]\n\
*\n\
* op(A) = A or A', A' denotes the conjugate transpose of\n\
* matrix A.\n\
*\n\
* On input, X = [ c ]. On output, X = [ p ].\n\
* [ d ] [ q ]\n\
*\n\
* This subroutine is designed for the condition number estimation\n\
* in routine STRSNA.\n\
*\n\n\
* Arguments\n\
* =========\n\
*\n\
* LTRAN (input) LOGICAL\n\
* On entry, LTRAN specifies the option of conjugate transpose:\n\
* = .FALSE., op(T+i*B) = T+i*B,\n\
* = .TRUE., op(T+i*B) = (T+i*B)'.\n\
*\n\
* LREAL (input) LOGICAL\n\
* On entry, LREAL specifies the input matrix structure:\n\
* = .FALSE., the input is complex\n\
* = .TRUE., the input is real\n\
*\n\
* N (input) INTEGER\n\
* On entry, N specifies the order of T+i*B. N >= 0.\n\
*\n\
* T (input) REAL array, dimension (LDT,N)\n\
* On entry, T contains a matrix in Schur canonical form.\n\
* If LREAL = .FALSE., then the first diagonal block of T must\n\
* be 1 by 1.\n\
*\n\
* LDT (input) INTEGER\n\
* The leading dimension of the matrix T. LDT >= max(1,N).\n\
*\n\
* B (input) REAL array, dimension (N)\n\
* On entry, B contains the elements to form the matrix\n\
* B as described above.\n\
* If LREAL = .TRUE., B is not referenced.\n\
*\n\
* W (input) REAL\n\
* On entry, W is the diagonal element of the matrix B.\n\
* If LREAL = .TRUE., W is not referenced.\n\
*\n\
* SCALE (output) REAL\n\
* On exit, SCALE is the scale factor.\n\
*\n\
* X (input/output) REAL array, dimension (2*N)\n\
* On entry, X contains the right hand side of the system.\n\
* On exit, X is overwritten by the solution.\n\
*\n\
* WORK (workspace) REAL array, dimension (N)\n\
*\n\
* INFO (output) INTEGER\n\
* On exit, INFO is set to\n\
* 0: successful exit.\n\
* 1: the some diagonal 1 by 1 block has been perturbed by\n\
* a small number SMIN to keep nonsingularity.\n\
* 2: the some diagonal 2 by 2 block has been perturbed by\n\
* a small number in SLALN2 to keep nonsingularity.\n\
* NOTE: In the interests of speed, this routine does not\n\
* check the inputs for errors.\n\
*\n\n\
* =====================================================================\n\
*\n"
|