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_sspmv.c 1.9 kB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. /*
  2. *
  3. * cblas_sspmv.c
  4. * This program is a C interface to sspmv.
  5. * Written by Keita Teranishi
  6. * 4/6/1998
  7. *
  8. */
  9. #include "cblas.h"
  10. #include "cblas_f77.h"
  11. void cblas_sspmv(const CBLAS_LAYOUT layout,
  12. const CBLAS_UPLO Uplo, const int N,
  13. const float alpha, const float *AP,
  14. const float *X, const int incX, const float beta,
  15. float *Y, const int incY)
  16. {
  17. char UL;
  18. #ifdef F77_CHAR
  19. F77_CHAR F77_UL;
  20. #else
  21. #define F77_UL &UL
  22. #endif
  23. #ifdef F77_INT
  24. F77_INT F77_N=N, F77_incX=incX, F77_incY=incY;
  25. #else
  26. #define F77_N N
  27. #define F77_incX incX
  28. #define F77_incY incY
  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 == CblasUpper) UL = 'U';
  37. else if (Uplo == CblasLower) UL = 'L';
  38. else
  39. {
  40. cblas_xerbla(2, "cblas_sspmv","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_sspmv(F77_UL, &F77_N, &alpha, AP, X,
  49. &F77_incX, &beta, Y, &F77_incY);
  50. }
  51. else if (layout == CblasRowMajor)
  52. {
  53. RowMajorStrg = 1;
  54. if (Uplo == CblasUpper) UL = 'L';
  55. else if (Uplo == CblasLower) UL = 'U';
  56. else
  57. {
  58. cblas_xerbla(2, "cblas_sspmv","Illegal Uplo setting, %d\n", Uplo);
  59. CBLAS_CallFromC = 0;
  60. RowMajorStrg = 0;
  61. return;
  62. }
  63. #ifdef F77_CHAR
  64. F77_UL = C2F_CHAR(&UL);
  65. #endif
  66. F77_sspmv(F77_UL, &F77_N, &alpha,
  67. AP, X,&F77_incX, &beta, Y, &F77_incY);
  68. }
  69. else cblas_xerbla(1, "cblas_sspmv", "Illegal layout setting, %d\n", layout);
  70. CBLAS_CallFromC = 0;
  71. RowMajorStrg = 0;
  72. }