gorgonia.org/gorgonia@v0.9.17/blase/cblas.h (about)

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