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
|
---
:name: strsyl
:md5sum: 650bfc17167d0bb5e57a982981f61818
:category: :subroutine
:arguments:
- trana:
:type: char
:intent: input
- tranb:
:type: char
:intent: input
- isgn:
:type: integer
:intent: input
- m:
:type: integer
:intent: input
- n:
:type: integer
:intent: input
- a:
:type: real
:intent: input
:dims:
- lda
- m
- lda:
:type: integer
:intent: input
- b:
:type: real
:intent: input
:dims:
- ldb
- n
- ldb:
:type: integer
:intent: input
- c:
:type: real
:intent: input/output
:dims:
- ldc
- n
- ldc:
:type: integer
:intent: input
- scale:
:type: real
:intent: output
- info:
:type: integer
:intent: output
:substitutions: {}
:fortran_help: " SUBROUTINE STRSYL( TRANA, TRANB, ISGN, M, N, A, LDA, B, LDB, C, LDC, SCALE, INFO )\n\n\
* Purpose\n\
* =======\n\
*\n\
* STRSYL solves the real Sylvester matrix equation:\n\
*\n\
* op(A)*X + X*op(B) = scale*C or\n\
* op(A)*X - X*op(B) = scale*C,\n\
*\n\
* where op(A) = A or A**T, and A and B are both upper quasi-\n\
* triangular. A is M-by-M and B is N-by-N; the right hand side C and\n\
* the solution X are M-by-N; and scale is an output scale factor, set\n\
* <= 1 to avoid overflow in X.\n\
*\n\
* A and B must be in Schur canonical form (as returned by SHSEQR), that\n\
* is, block upper triangular with 1-by-1 and 2-by-2 diagonal blocks;\n\
* each 2-by-2 diagonal block has its diagonal elements equal and its\n\
* off-diagonal elements of opposite sign.\n\
*\n\n\
* Arguments\n\
* =========\n\
*\n\
* TRANA (input) CHARACTER*1\n\
* Specifies the option op(A):\n\
* = 'N': op(A) = A (No transpose)\n\
* = 'T': op(A) = A**T (Transpose)\n\
* = 'C': op(A) = A**H (Conjugate transpose = Transpose)\n\
*\n\
* TRANB (input) CHARACTER*1\n\
* Specifies the option op(B):\n\
* = 'N': op(B) = B (No transpose)\n\
* = 'T': op(B) = B**T (Transpose)\n\
* = 'C': op(B) = B**H (Conjugate transpose = Transpose)\n\
*\n\
* ISGN (input) INTEGER\n\
* Specifies the sign in the equation:\n\
* = +1: solve op(A)*X + X*op(B) = scale*C\n\
* = -1: solve op(A)*X - X*op(B) = scale*C\n\
*\n\
* M (input) INTEGER\n\
* The order of the matrix A, and the number of rows in the\n\
* matrices X and C. M >= 0.\n\
*\n\
* N (input) INTEGER\n\
* The order of the matrix B, and the number of columns in the\n\
* matrices X and C. N >= 0.\n\
*\n\
* A (input) REAL array, dimension (LDA,M)\n\
* The upper quasi-triangular matrix A, in Schur canonical form.\n\
*\n\
* LDA (input) INTEGER\n\
* The leading dimension of the array A. LDA >= max(1,M).\n\
*\n\
* B (input) REAL array, dimension (LDB,N)\n\
* The upper quasi-triangular matrix B, in Schur canonical form.\n\
*\n\
* LDB (input) INTEGER\n\
* The leading dimension of the array B. LDB >= max(1,N).\n\
*\n\
* C (input/output) REAL array, dimension (LDC,N)\n\
* On entry, the M-by-N right hand side matrix C.\n\
* On exit, C is overwritten by the solution matrix X.\n\
*\n\
* LDC (input) INTEGER\n\
* The leading dimension of the array C. LDC >= max(1,M)\n\
*\n\
* SCALE (output) REAL\n\
* The scale factor, scale, set <= 1 to avoid overflow in X.\n\
*\n\
* INFO (output) INTEGER\n\
* = 0: successful exit\n\
* < 0: if INFO = -i, the i-th argument had an illegal value\n\
* = 1: A and B have common or very close eigenvalues; perturbed\n\
* values were used to solve the equation (but the matrices\n\
* A and B are unchanged).\n\
*\n\n\
* =====================================================================\n\
*\n"
|