cblas.h 32 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578
  1. #ifndef CBLAS_H
  2. #define CBLAS_H
  3. #include <stddef.h>
  4. #define CBLAS_INDEX size_t
  5. enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102};
  6. enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113};
  7. enum CBLAS_UPLO {CblasUpper=121, CblasLower=122};
  8. enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132};
  9. enum CBLAS_SIDE {CblasLeft=141, CblasRight=142};
  10. int cblas_errprn(int ierr, int info, char *form, ...);
  11. /*
  12. * ===========================================================================
  13. * Prototypes for level 1 BLAS functions (complex are recast as routines)
  14. * ===========================================================================
  15. */
  16. float cblas_sdsdot(const int N, const float alpha, const float *X,
  17. const int incX, const float *Y, const int incY);
  18. double cblas_dsdot(const int N, const float *X, const int incX, const float *Y,
  19. const int incY);
  20. float cblas_sdot(const int N, const float *X, const int incX,
  21. const float *Y, const int incY);
  22. double cblas_ddot(const int N, const double *X, const int incX,
  23. const double *Y, const int incY);
  24. /*
  25. * Functions having prefixes Z and C only
  26. */
  27. void _starpu_cblas_cdotu_sub(const int N, const void *X, const int incX,
  28. const void *Y, const int incY, void *dotu);
  29. void _starpu_cblas_cdotc_sub(const int N, const void *X, const int incX,
  30. const void *Y, const int incY, void *dotc);
  31. void _starpu_cblas_zdotu_sub(const int N, const void *X, const int incX,
  32. const void *Y, const int incY, void *dotu);
  33. void _starpu_cblas_zdotc_sub(const int N, const void *X, const int incX,
  34. const void *Y, const int incY, void *dotc);
  35. /*
  36. * Functions having prefixes S D SC DZ
  37. */
  38. float cblas_snrm2(const int N, const float *X, const int incX);
  39. float cblas_sasum(const int N, const float *X, const int incX);
  40. double cblas_dnrm2(const int N, const double *X, const int incX);
  41. double cblas_dasum(const int N, const double *X, const int incX);
  42. float cblas_scnrm2(const int N, const void *X, const int incX);
  43. float cblas_scasum(const int N, const void *X, const int incX);
  44. double cblas_dznrm2(const int N, const void *X, const int incX);
  45. double cblas_dzasum(const int N, const void *X, const int incX);
  46. /*
  47. * Functions having standard 4 prefixes (S D C Z)
  48. */
  49. CBLAS_INDEX cblas_isamax(const int N, const float *X, const int incX);
  50. CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX);
  51. CBLAS_INDEX cblas_icamax(const int N, const void *X, const int incX);
  52. CBLAS_INDEX cblas_izamax(const int N, const void *X, const int incX);
  53. /*
  54. * ===========================================================================
  55. * Prototypes for level 0 BLAS routines
  56. * ===========================================================================
  57. */
  58. void cblas_srotg(float a, float b, float c, float s);
  59. void cblas_crotg(complex a, complex b, complex c, float s);
  60. void cblas_drotg(double a, double b, double c, double s);
  61. void cblas_zrotg(doublecomplex a, doublecomplex b, doublecomplex c, double s);
  62. /*
  63. * ===========================================================================
  64. * Prototypes for level 1 BLAS routines
  65. * ===========================================================================
  66. */
  67. /*
  68. * Routines with standard 4 prefixes (s, d, c, z)
  69. */
  70. void cblas_sswap(const int N, float *X, const int incX,
  71. float *Y, const int incY);
  72. void cblas_scopy(const int N, const float *X, const int incX,
  73. float *Y, const int incY);
  74. void cblas_saxpy(const int N, const float alpha, const float *X,
  75. const int incX, float *Y, const int incY);
  76. void cblas_dswap(const int N, double *X, const int incX,
  77. double *Y, const int incY);
  78. void cblas_dcopy(const int N, const double *X, const int incX,
  79. double *Y, const int incY);
  80. void cblas_daxpy(const int N, const double alpha, const double *X,
  81. const int incX, double *Y, const int incY);
  82. void cblas_cswap(const int N, void *X, const int incX,
  83. void *Y, const int incY);
  84. void cblas_ccopy(const int N, const void *X, const int incX,
  85. void *Y, const int incY);
  86. void cblas_caxpy(const int N, const void *alpha, const void *X,
  87. const int incX, void *Y, const int incY);
  88. void cblas_zswap(const int N, void *X, const int incX,
  89. void *Y, const int incY);
  90. void cblas_zcopy(const int N, const void *X, const int incX,
  91. void *Y, const int incY);
  92. void cblas_zaxpy(const int N, const void *alpha, const void *X,
  93. const int incX, void *Y, const int incY);
  94. /*
  95. * Routines with S and D prefix only
  96. */
  97. void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P);
  98. void cblas_srot(const int N, float *X, const int incX,
  99. float *Y, const int incY, const float c, const float s);
  100. void cblas_srotm(const int N, float *X, const int incX,
  101. float *Y, const int incY, const float *P);
  102. void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P);
  103. void cblas_drot(const int N, double *X, const int incX,
  104. double *Y, const int incY, const double c, const double s);
  105. void cblas_drotm(const int N, double *X, const int incX,
  106. double *Y, const int incY, const double *P);
  107. /*
  108. * Routines with S D C Z CS and ZD prefixes
  109. */
  110. void cblas_sscal(const int N, const float alpha, float *X, const int incX);
  111. void cblas_dscal(const int N, const double alpha, double *X, const int incX);
  112. void cblas_cscal(const int N, const void *alpha, void *X, const int incX);
  113. void cblas_zscal(const int N, const void *alpha, void *X, const int incX);
  114. void cblas_csscal(const int N, const float alpha, void *X, const int incX);
  115. void cblas_zdscal(const int N, const double alpha, void *X, const int incX);
  116. /*
  117. * ===========================================================================
  118. * Prototypes for level 2 BLAS
  119. * ===========================================================================
  120. */
  121. /*
  122. * Routines with standard 4 prefixes (S, D, C, Z)
  123. */
  124. void cblas_sgemv(const enum CBLAS_ORDER Order,
  125. const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  126. const float alpha, const float *A, const int lda,
  127. const float *X, const int incX, const float beta,
  128. float *Y, const int incY);
  129. void cblas_sgbmv(const enum CBLAS_ORDER Order,
  130. const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  131. const int KL, const int KU, const float alpha,
  132. const float *A, const int lda, const float *X,
  133. const int incX, const float beta, float *Y, const int incY);
  134. void cblas_strmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  135. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  136. const int N, const float *A, const int lda,
  137. float *X, const int incX);
  138. void cblas_stbmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  139. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  140. const int N, const int K, const float *A, const int lda,
  141. float *X, const int incX);
  142. void cblas_stpmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  143. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  144. const int N, const float *Ap, float *X, const int incX);
  145. void cblas_strsv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  146. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  147. const int N, const float *A, const int lda, float *X,
  148. const int incX);
  149. void cblas_stbsv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  150. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  151. const int N, const int K, const float *A, const int lda,
  152. float *X, const int incX);
  153. void cblas_stpsv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  154. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  155. const int N, const float *Ap, float *X, const int incX);
  156. void cblas_dgemv(const enum CBLAS_ORDER Order,
  157. const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  158. const double alpha, const double *A, const int lda,
  159. const double *X, const int incX, const double beta,
  160. double *Y, const int incY);
  161. void cblas_dgbmv(const enum CBLAS_ORDER Order,
  162. const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  163. const int KL, const int KU, const double alpha,
  164. const double *A, const int lda, const double *X,
  165. const int incX, const double beta, double *Y, const int incY);
  166. void cblas_dtrmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  167. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  168. const int N, const double *A, const int lda,
  169. double *X, const int incX);
  170. void cblas_dtbmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  171. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  172. const int N, const int K, const double *A, const int lda,
  173. double *X, const int incX);
  174. void cblas_dtpmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  175. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  176. const int N, const double *Ap, double *X, const int incX);
  177. void cblas_dtrsv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  178. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  179. const int N, const double *A, const int lda, double *X,
  180. const int incX);
  181. void cblas_dtbsv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  182. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  183. const int N, const int K, const double *A, const int lda,
  184. double *X, const int incX);
  185. void cblas_dtpsv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  186. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  187. const int N, const double *Ap, double *X, const int incX);
  188. void cblas_cgemv(const enum CBLAS_ORDER Order,
  189. const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  190. const void *alpha, const void *A, const int lda,
  191. const void *X, const int incX, const void *beta,
  192. void *Y, const int incY);
  193. void cblas_cgbmv(const enum CBLAS_ORDER Order,
  194. const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  195. const int KL, const int KU, const void *alpha,
  196. const void *A, const int lda, const void *X,
  197. const int incX, const void *beta, void *Y, const int incY);
  198. void cblas_ctrmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  199. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  200. const int N, const void *A, const int lda,
  201. void *X, const int incX);
  202. void cblas_ctbmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  203. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  204. const int N, const int K, const void *A, const int lda,
  205. void *X, const int incX);
  206. void cblas_ctpmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  207. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  208. const int N, const void *Ap, void *X, const int incX);
  209. void cblas_ctrsv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  210. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  211. const int N, const void *A, const int lda, void *X,
  212. const int incX);
  213. void cblas_ctbsv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  214. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  215. const int N, const int K, const void *A, const int lda,
  216. void *X, const int incX);
  217. void cblas_ctpsv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  218. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  219. const int N, const void *Ap, void *X, const int incX);
  220. void cblas_zgemv(const enum CBLAS_ORDER Order,
  221. const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  222. const void *alpha, const void *A, const int lda,
  223. const void *X, const int incX, const void *beta,
  224. void *Y, const int incY);
  225. void cblas_zgbmv(const enum CBLAS_ORDER Order,
  226. const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
  227. const int KL, const int KU, const void *alpha,
  228. const void *A, const int lda, const void *X,
  229. const int incX, const void *beta, void *Y, const int incY);
  230. void cblas_ztrmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  231. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  232. const int N, const void *A, const int lda,
  233. void *X, const int incX);
  234. void cblas_ztbmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  235. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  236. const int N, const int K, const void *A, const int lda,
  237. void *X, const int incX);
  238. void cblas_ztpmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  239. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  240. const int N, const void *Ap, void *X, const int incX);
  241. void cblas_ztrsv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  242. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  243. const int N, const void *A, const int lda, void *X,
  244. const int incX);
  245. void cblas_ztbsv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  246. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  247. const int N, const int K, const void *A, const int lda,
  248. void *X, const int incX);
  249. void cblas_ztpsv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  250. const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
  251. const int N, const void *Ap, void *X, const int incX);
  252. /*
  253. * Routines with S and D prefixes only
  254. */
  255. void cblas_ssymv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  256. const int N, const float alpha, const float *A,
  257. const int lda, const float *X, const int incX,
  258. const float beta, float *Y, const int incY);
  259. void cblas_ssbmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  260. const int N, const int K, const float alpha, const float *A,
  261. const int lda, const float *X, const int incX,
  262. const float beta, float *Y, const int incY);
  263. void cblas_sspmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  264. const int N, const float alpha, const float *Ap,
  265. const float *X, const int incX,
  266. const float beta, float *Y, const int incY);
  267. void cblas_sger(const enum CBLAS_ORDER Order, const int M, const int N,
  268. const float alpha, const float *X, const int incX,
  269. const float *Y, const int incY, float *A, const int lda);
  270. void cblas_ssyr(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  271. const int N, const float alpha, const float *X,
  272. const int incX, float *A, const int lda);
  273. void cblas_sspr(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  274. const int N, const float alpha, const float *X,
  275. const int incX, float *Ap);
  276. void cblas_ssyr2(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  277. const int N, const float alpha, const float *X,
  278. const int incX, const float *Y, const int incY, float *A,
  279. const int lda);
  280. void cblas_sspr2(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  281. const int N, const float alpha, const float *X,
  282. const int incX, const float *Y, const int incY, float *A);
  283. void cblas_dsymv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  284. const int N, const double alpha, const double *A,
  285. const int lda, const double *X, const int incX,
  286. const double beta, double *Y, const int incY);
  287. void cblas_dsbmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  288. const int N, const int K, const double alpha, const double *A,
  289. const int lda, const double *X, const int incX,
  290. const double beta, double *Y, const int incY);
  291. void cblas_dspmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  292. const int N, const double alpha, const double *Ap,
  293. const double *X, const int incX,
  294. const double beta, double *Y, const int incY);
  295. void cblas_dger(const enum CBLAS_ORDER Order, const int M, const int N,
  296. const double alpha, const double *X, const int incX,
  297. const double *Y, const int incY, double *A, const int lda);
  298. void cblas_dsyr(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  299. const int N, const double alpha, const double *X,
  300. const int incX, double *A, const int lda);
  301. void cblas_dspr(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  302. const int N, const double alpha, const double *X,
  303. const int incX, double *Ap);
  304. void cblas_dsyr2(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  305. const int N, const double alpha, const double *X,
  306. const int incX, const double *Y, const int incY, double *A,
  307. const int lda);
  308. void cblas_dspr2(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  309. const int N, const double alpha, const double *X,
  310. const int incX, const double *Y, const int incY, double *A);
  311. /*
  312. * Routines with C and Z prefixes only
  313. */
  314. void cblas_chemv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  315. const int N, const void *alpha, const void *A,
  316. const int lda, const void *X, const int incX,
  317. const void *beta, void *Y, const int incY);
  318. void cblas_chbmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  319. const int N, const int K, const void *alpha, const void *A,
  320. const int lda, const void *X, const int incX,
  321. const void *beta, void *Y, const int incY);
  322. void cblas_chpmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  323. const int N, const void *alpha, const void *Ap,
  324. const void *X, const int incX,
  325. const void *beta, void *Y, const int incY);
  326. void cblas_cgeru(const enum CBLAS_ORDER Order, const int M, const int N,
  327. const void *alpha, const void *X, const int incX,
  328. const void *Y, const int incY, void *A, const int lda);
  329. void cblas_cgerc(const enum CBLAS_ORDER Order, const int M, const int N,
  330. const void *alpha, const void *X, const int incX,
  331. const void *Y, const int incY, void *A, const int lda);
  332. void cblas_cher(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  333. const int N, const float alpha, const void *X, const int incX,
  334. void *A, const int lda);
  335. void cblas_chpr(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  336. const int N, const float alpha, const void *X,
  337. const int incX, void *A);
  338. void cblas_cher2(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const int N,
  339. const void *alpha, const void *X, const int incX,
  340. const void *Y, const int incY, void *A, const int lda);
  341. void cblas_chpr2(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const int N,
  342. const void *alpha, const void *X, const int incX,
  343. const void *Y, const int incY, void *Ap);
  344. void cblas_zhemv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  345. const int N, const void *alpha, const void *A,
  346. const int lda, const void *X, const int incX,
  347. const void *beta, void *Y, const int incY);
  348. void cblas_zhbmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  349. const int N, const int K, const void *alpha, const void *A,
  350. const int lda, const void *X, const int incX,
  351. const void *beta, void *Y, const int incY);
  352. void cblas_zhpmv(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  353. const int N, const void *alpha, const void *Ap,
  354. const void *X, const int incX,
  355. const void *beta, void *Y, const int incY);
  356. void cblas_zgeru(const enum CBLAS_ORDER Order, const int M, const int N,
  357. const void *alpha, const void *X, const int incX,
  358. const void *Y, const int incY, void *A, const int lda);
  359. void cblas_zgerc(const enum CBLAS_ORDER Order, const int M, const int N,
  360. const void *alpha, const void *X, const int incX,
  361. const void *Y, const int incY, void *A, const int lda);
  362. void cblas_zher(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  363. const int N, const double alpha, const void *X, const int incX,
  364. void *A, const int lda);
  365. void cblas_zhpr(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  366. const int N, const double alpha, const void *X,
  367. const int incX, void *A);
  368. void cblas_zher2(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const int N,
  369. const void *alpha, const void *X, const int incX,
  370. const void *Y, const int incY, void *A, const int lda);
  371. void cblas_zhpr2(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo, const int N,
  372. const void *alpha, const void *X, const int incX,
  373. const void *Y, const int incY, void *Ap);
  374. /*
  375. * ===========================================================================
  376. * Prototypes for level 3 BLAS
  377. * ===========================================================================
  378. */
  379. /*
  380. * Routines with standard 4 prefixes (S, D, C, Z)
  381. */
  382. void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
  383. const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
  384. const int K, const float alpha, const float *A,
  385. const int lda, const float *B, const int ldb,
  386. const float beta, float *C, const int ldc);
  387. void cblas_ssymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  388. const enum CBLAS_UPLO Uplo, const int M, const int N,
  389. const float alpha, const float *A, const int lda,
  390. const float *B, const int ldb, const float beta,
  391. float *C, const int ldc);
  392. void cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  393. const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  394. const float alpha, const float *A, const int lda,
  395. const float beta, float *C, const int ldc);
  396. void cblas_ssyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  397. const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  398. const float alpha, const float *A, const int lda,
  399. const float *B, const int ldb, const float beta,
  400. float *C, const int ldc);
  401. void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  402. const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  403. const enum CBLAS_DIAG Diag, const int M, const int N,
  404. const float alpha, const float *A, const int lda,
  405. float *B, const int ldb);
  406. void cblas_strsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  407. const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  408. const enum CBLAS_DIAG Diag, const int M, const int N,
  409. const float alpha, const float *A, const int lda,
  410. float *B, const int ldb);
  411. void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
  412. const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
  413. const int K, const double alpha, const double *A,
  414. const int lda, const double *B, const int ldb,
  415. const double beta, double *C, const int ldc);
  416. void cblas_dsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  417. const enum CBLAS_UPLO Uplo, const int M, const int N,
  418. const double alpha, const double *A, const int lda,
  419. const double *B, const int ldb, const double beta,
  420. double *C, const int ldc);
  421. void cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  422. const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  423. const double alpha, const double *A, const int lda,
  424. const double beta, double *C, const int ldc);
  425. void cblas_dsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  426. const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  427. const double alpha, const double *A, const int lda,
  428. const double *B, const int ldb, const double beta,
  429. double *C, const int ldc);
  430. void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  431. const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  432. const enum CBLAS_DIAG Diag, const int M, const int N,
  433. const double alpha, const double *A, const int lda,
  434. double *B, const int ldb);
  435. void cblas_dtrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  436. const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  437. const enum CBLAS_DIAG Diag, const int M, const int N,
  438. const double alpha, const double *A, const int lda,
  439. double *B, const int ldb);
  440. void cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
  441. const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
  442. const int K, const void *alpha, const void *A,
  443. const int lda, const void *B, const int ldb,
  444. const void *beta, void *C, const int ldc);
  445. void cblas_csymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  446. const enum CBLAS_UPLO Uplo, const int M, const int N,
  447. const void *alpha, const void *A, const int lda,
  448. const void *B, const int ldb, const void *beta,
  449. void *C, const int ldc);
  450. void cblas_csyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  451. const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  452. const void *alpha, const void *A, const int lda,
  453. const void *beta, void *C, const int ldc);
  454. void cblas_csyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  455. const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  456. const void *alpha, const void *A, const int lda,
  457. const void *B, const int ldb, const void *beta,
  458. void *C, const int ldc);
  459. void cblas_ctrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  460. const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  461. const enum CBLAS_DIAG Diag, const int M, const int N,
  462. const void *alpha, const void *A, const int lda,
  463. void *B, const int ldb);
  464. void cblas_ctrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  465. const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  466. const enum CBLAS_DIAG Diag, const int M, const int N,
  467. const void *alpha, const void *A, const int lda,
  468. void *B, const int ldb);
  469. void cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
  470. const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
  471. const int K, const void *alpha, const void *A,
  472. const int lda, const void *B, const int ldb,
  473. const void *beta, void *C, const int ldc);
  474. void cblas_zsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  475. const enum CBLAS_UPLO Uplo, const int M, const int N,
  476. const void *alpha, const void *A, const int lda,
  477. const void *B, const int ldb, const void *beta,
  478. void *C, const int ldc);
  479. void cblas_zsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  480. const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  481. const void *alpha, const void *A, const int lda,
  482. const void *beta, void *C, const int ldc);
  483. void cblas_zsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  484. const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  485. const void *alpha, const void *A, const int lda,
  486. const void *B, const int ldb, const void *beta,
  487. void *C, const int ldc);
  488. void cblas_ztrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  489. const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  490. const enum CBLAS_DIAG Diag, const int M, const int N,
  491. const void *alpha, const void *A, const int lda,
  492. void *B, const int ldb);
  493. void cblas_ztrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  494. const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
  495. const enum CBLAS_DIAG Diag, const int M, const int N,
  496. const void *alpha, const void *A, const int lda,
  497. void *B, const int ldb);
  498. /*
  499. * Routines with prefixes C and Z only
  500. */
  501. void cblas_chemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  502. const enum CBLAS_UPLO Uplo, const int M, const int N,
  503. const void *alpha, const void *A, const int lda,
  504. const void *B, const int ldb, const void *beta,
  505. void *C, const int ldc);
  506. void cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  507. const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  508. const float alpha, const void *A, const int lda,
  509. const float beta, void *C, const int ldc);
  510. void cblas_cher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  511. const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  512. const void *alpha, const void *A, const int lda,
  513. const void *B, const int ldb, const float beta,
  514. void *C, const int ldc);
  515. void cblas_zhemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
  516. const enum CBLAS_UPLO Uplo, const int M, const int N,
  517. const void *alpha, const void *A, const int lda,
  518. const void *B, const int ldb, const void *beta,
  519. void *C, const int ldc);
  520. void cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  521. const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  522. const double alpha, const void *A, const int lda,
  523. const double beta, void *C, const int ldc);
  524. void cblas_zher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
  525. const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
  526. const void *alpha, const void *A, const int lda,
  527. const void *B, const int ldb, const double beta,
  528. void *C, const int ldc);
  529. int cblas_errprn(int ierr, int info, char *form, ...);
  530. #endif