You can not select more than 25 topics Topics must start with a chinese character,a letter or number, can include dashes ('-') and can be up to 35 characters long.

cblas_ssyr2.c 1.9 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. /*
  2. *
  3. * cblas_ssyr2.c
  4. * This program is a C interface to ssyr2.
  5. * Written by Keita Teranishi
  6. * 4/6/1998
  7. *
  8. */
  9. #include "cblas.h"
  10. #include "cblas_f77.h"
  11. void cblas_ssyr2(const CBLAS_LAYOUT layout, const CBLAS_UPLO Uplo,
  12. const int N, const float alpha, const float *X,
  13. const int incX, const float *Y, const int incY, float *A,
  14. const int lda)
  15. {
  16. char UL;
  17. #ifdef F77_CHAR
  18. F77_CHAR F77_UL;
  19. #else
  20. #define F77_UL &UL
  21. #endif
  22. #ifdef F77_INT
  23. F77_INT F77_N=N, F77_incX=incX, F77_incY=incY, F77_lda=lda;
  24. #else
  25. #define F77_N N
  26. #define F77_incX incX
  27. #define F77_incY incY
  28. #define F77_lda lda
  29. #endif
  30. extern int CBLAS_CallFromC;
  31. extern int RowMajorStrg;
  32. RowMajorStrg = 0;
  33. CBLAS_CallFromC = 1;
  34. if (layout == CblasColMajor)
  35. {
  36. if (Uplo == CblasLower) UL = 'L';
  37. else if (Uplo == CblasUpper) UL = 'U';
  38. else
  39. {
  40. cblas_xerbla(2, "cblas_ssyr2","Illegal Uplo setting, %d\n",Uplo );
  41. CBLAS_CallFromC = 0;
  42. RowMajorStrg = 0;
  43. return;
  44. }
  45. #ifdef F77_CHAR
  46. F77_UL = C2F_CHAR(&UL);
  47. #endif
  48. F77_ssyr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A,
  49. &F77_lda);
  50. } else if (layout == CblasRowMajor)
  51. {
  52. RowMajorStrg = 1;
  53. if (Uplo == CblasLower) UL = 'U';
  54. else if (Uplo == CblasUpper) UL = 'L';
  55. else
  56. {
  57. cblas_xerbla(2, "cblas_ssyr2","Illegal Uplo setting, %d\n",Uplo );
  58. CBLAS_CallFromC = 0;
  59. RowMajorStrg = 0;
  60. return;
  61. }
  62. #ifdef F77_CHAR
  63. F77_UL = C2F_CHAR(&UL);
  64. #endif
  65. F77_ssyr2(F77_UL, &F77_N, &alpha, X, &F77_incX, Y, &F77_incY, A,
  66. &F77_lda);
  67. } else cblas_xerbla(1, "cblas_ssyr2", "Illegal layout setting, %d\n", layout);
  68. CBLAS_CallFromC = 0;
  69. RowMajorStrg = 0;
  70. return;
  71. }