gsl_cblas.h 33 KB

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