1 /* 2 * cblas_stpsv.c 3 * The program is a C interface to stpsv. 4 * 5 * Keita Teranishi 5/20/98 6 * 7 */ 8 #include "cblas.h" 9 #include "cblas_f77.h" 10 void cblas_stpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, 11 const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag, 12 const int N, const float *Ap, float *X, const int incX) 13 { 14 char TA; 15 char UL; 16 char DI; 17 #ifdef F77_CHAR 18 F77_CHAR F77_TA, F77_UL, F77_DI; 19 #else 20 #define F77_TA &TA 21 #define F77_UL &UL 22 #define F77_DI &DI 23 #endif 24 #ifdef F77_INT 25 F77_INT F77_N=N, F77_incX=incX; 26 #else 27 #define F77_N N 28 #define F77_incX incX 29 #endif 30 extern int CBLAS_CallFromC; 31 extern int RowMajorStrg; 32 RowMajorStrg = 0; 33 34 CBLAS_CallFromC = 1; 35 if (order == CblasColMajor) 36 { 37 if (Uplo == CblasUpper) UL = 'U'; 38 else if (Uplo == CblasLower) UL = 'L'; 39 else 40 { 41 cblas_xerbla(2, "cblas_stpsv","Illegal Uplo setting, %d\n", Uplo); 42 CBLAS_CallFromC = 0; 43 RowMajorStrg = 0; 44 return; 45 } 46 if (TransA == CblasNoTrans) TA = 'N'; 47 else if (TransA == CblasTrans) TA = 'T'; 48 else if (TransA == CblasConjTrans) TA = 'C'; 49 else 50 { 51 cblas_xerbla(3, "cblas_stpsv","Illegal TransA setting, %d\n", TransA); 52 CBLAS_CallFromC = 0; 53 RowMajorStrg = 0; 54 return; 55 } 56 if (Diag == CblasUnit) DI = 'U'; 57 else if (Diag == CblasNonUnit) DI = 'N'; 58 else 59 { 60 cblas_xerbla(4, "cblas_stpsv","Illegal Diag setting, %d\n", Diag); 61 CBLAS_CallFromC = 0; 62 RowMajorStrg = 0; 63 return; 64 } 65 #ifdef F77_CHAR 66 F77_UL = C2F_CHAR(&UL); 67 F77_TA = C2F_CHAR(&TA); 68 F77_DI = C2F_CHAR(&DI); 69 #endif 70 F77_stpsv( F77_UL, F77_TA, F77_DI, &F77_N, Ap, X, &F77_incX); 71 } 72 else if (order == CblasRowMajor) 73 { 74 RowMajorStrg = 1; 75 if (Uplo == CblasUpper) UL = 'L'; 76 else if (Uplo == CblasLower) UL = 'U'; 77 else 78 { 79 cblas_xerbla(2, "cblas_stpsv","Illegal Uplo setting, %d\n", Uplo); 80 CBLAS_CallFromC = 0; 81 RowMajorStrg = 0; 82 return; 83 } 84 85 if (TransA == CblasNoTrans) TA = 'T'; 86 else if (TransA == CblasTrans) TA = 'N'; 87 else if (TransA == CblasConjTrans) TA = 'N'; 88 else 89 { 90 cblas_xerbla(3, "cblas_stpsv","Illegal TransA setting, %d\n", TransA); 91 CBLAS_CallFromC = 0; 92 RowMajorStrg = 0; 93 return; 94 } 95 96 if (Diag == CblasUnit) DI = 'U'; 97 else if (Diag == CblasNonUnit) DI = 'N'; 98 else 99 { 100 cblas_xerbla(4, "cblas_stpsv","Illegal Diag setting, %d\n", Diag); 101 CBLAS_CallFromC = 0; 102 RowMajorStrg = 0; 103 return; 104 } 105 #ifdef F77_CHAR 106 F77_UL = C2F_CHAR(&UL); 107 F77_TA = C2F_CHAR(&TA); 108 F77_DI = C2F_CHAR(&DI); 109 #endif 110 111 F77_stpsv( F77_UL, F77_TA, F77_DI, &F77_N, Ap, X,&F77_incX); 112 113 } 114 else cblas_xerbla(1, "cblas_stpsv", "Illegal Order setting, %d\n", order); 115 CBLAS_CallFromC = 0; 116 RowMajorStrg = 0; 117 return; 118 } 119