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