#include "stack-c.h"Include dependency graph for intzgeesx.c:

Go to the source code of this file.
Defines | |
| #define | MAX(x, y) (((x)>(y))?(x):(y)) |
| #define | MIN(x, y) (((x)<(y))?(x):(y)) |
Functions | |
| int | intzgeesx (char *fname) |
| int intzgeesx | ( | char* | fname | ) |
Definition at line 19 of file intzgeesx.c.
References A, C2F, CheckLhs, CheckRhs, CheckSquare, CreateVar, errorinfo(), Errorinfo, GetRhsVar, L, Lhs, LhsVar, M, MAX, Maxvol, N, stk, WORK, and zstk.
00021 { 00022 int A = 1, W = 2, VS = 3, RWORK = 4, WORK = 5; 00023 int M,N,lA; 00024 int NLHS; 00025 int lVS; 00026 int un=1; int lWORK, LWORKMIN, LWORK; 00027 int LDA, LDVS, lW, lRWORK; 00028 int INFO, SDIM, BWORK; 00029 double RCONDE,RCONDV; 00030 char *JOBVS; 00031 00032 #ifndef WIN32 00033 extern select(); 00034 #endif 00035 00036 int IT=1; 00037 00038 CheckRhs(1,1) ; CheckLhs(1,3) ; 00039 00040 /*--------------------A---------------------------*/ 00041 GetRhsVar(A, "z", &M, &N, &lA); 00042 CheckSquare(A, M, N); 00043 NLHS=Lhs; LDA = MAX(1,N); LDVS=MAX(1,N); 00044 switch ( NLHS ) { 00045 case 3: 00046 /* [W,VS,As]=zgeesx(A) */ 00047 JOBVS="V"; 00048 /*--------------------W, VS, RWORK---------------------------*/ 00049 CreateVar(W, "z", &N, &un, &lW); 00050 CreateVar(VS, "z", &N, &N, &lVS); 00051 CreateVar(RWORK, "d", &N, &un, &lRWORK); 00052 /*--------------------WORK---------------------------*/ 00053 LWORKMIN = MAX(1, 2*N); 00054 LWORK=Maxvol(WORK,"z"); /* max memory currently available */ 00055 if (LWORK < LWORKMIN) Scierror(999,"%s: not enough memory (use stacksize) \r\n",fname); 00056 CreateVar(WORK, "z", &LWORK, &un, &lWORK); 00057 00058 C2F(zgeesx)(JOBVS, "N", select, "N", &N, zstk(lA), &LDA, &SDIM, zstk(lW), 00059 zstk(lVS), &LDVS, &RCONDE, &RCONDV, zstk(lWORK), 00060 &LWORK, stk(lRWORK), BWORK, &INFO); 00061 if (INFO != 0) Errorinfo("ZGEESX ", INFO); 00062 LhsVar(1)=W; LhsVar(2)=VS; LhsVar(3)=A; 00063 break; 00064 case 2: 00065 /* [W,VS]=zgeesx(A) */ 00066 JOBVS="V"; 00067 CreateVar(W, "z", &N, &un, &lW); 00068 CreateVar(VS, "z", &N, &N, &lVS); 00069 RWORK=4; CreateVar(RWORK, "d", &N, &un, &lRWORK); 00070 WORK=5; LWORKMIN = MAX(1, 2*N); 00071 LWORK=Maxvol(WORK, "z"); /* max memory currently available */ 00072 if (LWORK < LWORKMIN) Scierror(999,"%s: not enough memory (use stacksize) \r\n",fname); 00073 CreateVar(WORK, "z", &LWORK, &un, &lWORK); 00074 00075 C2F(zgeesx)(JOBVS, "N", select, "N", &N, zstk(lA), &LDA, &SDIM, zstk(lW), 00076 zstk(lVS), &LDVS, &RCONDE, &RCONDV, zstk(lWORK), 00077 &LWORK, stk(lRWORK), BWORK, &INFO); 00078 if (INFO != 0) Errorinfo("DGEESX ", INFO); 00079 LhsVar(1)=W; LhsVar(2)=VS; 00080 break; 00081 case 1: 00082 /* w=zgeesx(A) */ 00083 JOBVS="N"; 00084 CreateVar(W, "z", &N, &un, &lW); 00085 RWORK=3; CreateVar(RWORK, "d", &N, &un, &lRWORK); 00086 WORK=4; LWORKMIN = MAX(1, 2*N); 00087 LWORK=Maxvol(WORK, "z"); /* max memory currently available */ 00088 if (LWORK < LWORKMIN) Scierror(999,"%s: not enough memory (use stacksize) \r\n",fname); 00089 CreateVar(WORK, "z", &LWORK, &un, &lWORK); 00090 00091 C2F(zgeesx)(JOBVS, "N", select, "N", &N, zstk(lA), &LDA, &SDIM, zstk(lW), 00092 VS, &LDVS, &RCONDE, &RCONDV, zstk(lWORK), 00093 &LWORK, stk(lRWORK), BWORK, &INFO); 00094 if (INFO != 0) C2F(errorinfo)("zgeesx ", &INFO, 5L); 00095 LhsVar(1)=W; 00096 break; 00097 default: 00098 return 0; 00099 } 00100 return 0; 00101 }
Here is the call graph for this function:

1.5.1