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_stpsv.c 3.1 kB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118
  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 CBLAS_LAYOUT layout, const CBLAS_UPLO Uplo,
  11. const CBLAS_TRANSPOSE TransA, const 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. 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_stpsv","Illegal Uplo setting, %d\n", Uplo);
  41. CBLAS_CallFromC = 0;
  42. RowMajorStrg = 0;
  43. return;
  44. }
  45. if (TransA == CblasNoTrans) TA = 'N';
  46. else if (TransA == CblasTrans) TA = 'T';
  47. else if (TransA == CblasConjTrans) TA = 'C';
  48. else
  49. {
  50. cblas_xerbla(3, "cblas_stpsv","Illegal TransA setting, %d\n", TransA);
  51. CBLAS_CallFromC = 0;
  52. RowMajorStrg = 0;
  53. return;
  54. }
  55. if (Diag == CblasUnit) DI = 'U';
  56. else if (Diag == CblasNonUnit) DI = 'N';
  57. else
  58. {
  59. cblas_xerbla(4, "cblas_stpsv","Illegal Diag setting, %d\n", Diag);
  60. CBLAS_CallFromC = 0;
  61. RowMajorStrg = 0;
  62. return;
  63. }
  64. #ifdef F77_CHAR
  65. F77_UL = C2F_CHAR(&UL);
  66. F77_TA = C2F_CHAR(&TA);
  67. F77_DI = C2F_CHAR(&DI);
  68. #endif
  69. F77_stpsv( F77_UL, F77_TA, F77_DI, &F77_N, Ap, X, &F77_incX);
  70. }
  71. else if (layout == CblasRowMajor)
  72. {
  73. RowMajorStrg = 1;
  74. if (Uplo == CblasUpper) UL = 'L';
  75. else if (Uplo == CblasLower) UL = 'U';
  76. else
  77. {
  78. cblas_xerbla(2, "cblas_stpsv","Illegal Uplo setting, %d\n", Uplo);
  79. CBLAS_CallFromC = 0;
  80. RowMajorStrg = 0;
  81. return;
  82. }
  83. if (TransA == CblasNoTrans) TA = 'T';
  84. else if (TransA == CblasTrans) TA = 'N';
  85. else if (TransA == CblasConjTrans) TA = 'N';
  86. else
  87. {
  88. cblas_xerbla(3, "cblas_stpsv","Illegal TransA setting, %d\n", TransA);
  89. CBLAS_CallFromC = 0;
  90. RowMajorStrg = 0;
  91. return;
  92. }
  93. if (Diag == CblasUnit) DI = 'U';
  94. else if (Diag == CblasNonUnit) DI = 'N';
  95. else
  96. {
  97. cblas_xerbla(4, "cblas_stpsv","Illegal Diag setting, %d\n", Diag);
  98. CBLAS_CallFromC = 0;
  99. RowMajorStrg = 0;
  100. return;
  101. }
  102. #ifdef F77_CHAR
  103. F77_UL = C2F_CHAR(&UL);
  104. F77_TA = C2F_CHAR(&TA);
  105. F77_DI = C2F_CHAR(&DI);
  106. #endif
  107. F77_stpsv( F77_UL, F77_TA, F77_DI, &F77_N, Ap, X,&F77_incX);
  108. }
  109. else cblas_xerbla(1, "cblas_stpsv", "Illegal layout setting, %d\n", layout);
  110. CBLAS_CallFromC = 0;
  111. RowMajorStrg = 0;
  112. return;
  113. }