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