numpy  2.0.0
src/private/npy_cblas.h
Go to the documentation of this file.
00001 /*
00002  * This header provides numpy a consistent interface to CBLAS code. It is needed
00003  * because not all providers of cblas provide cblas.h. For instance, MKL provides
00004  * mkl_cblas.h and also typedefs the CBLAS_XXX enums.
00005  */
00006 #ifndef _NPY_CBLAS_H_
00007 #define _NPY_CBLAS_H_
00008 
00009 #include <stddef.h>
00010 
00011 /* Allow the use in C++ code.  */
00012 #ifdef __cplusplus
00013 extern "C"
00014 {
00015 #endif
00016 
00017 /*
00018  * Enumerated and derived types
00019  */
00020 #define CBLAS_INDEX size_t  /* this may vary between platforms */
00021 
00022 enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102};
00023 enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113};
00024 enum CBLAS_UPLO {CblasUpper=121, CblasLower=122};
00025 enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132};
00026 enum CBLAS_SIDE {CblasLeft=141, CblasRight=142};
00027 
00028 /*
00029  * ===========================================================================
00030  * Prototypes for level 1 BLAS functions (complex are recast as routines)
00031  * ===========================================================================
00032  */
00033 float  cblas_sdsdot(const int N, const float alpha, const float *X,
00034                     const int incX, const float *Y, const int incY);
00035 double cblas_dsdot(const int N, const float *X, const int incX, const float *Y,
00036                    const int incY);
00037 float  cblas_sdot(const int N, const float  *X, const int incX,
00038                   const float  *Y, const int incY);
00039 double cblas_ddot(const int N, const double *X, const int incX,
00040                   const double *Y, const int incY);
00041 
00042 /*
00043  * Functions having prefixes Z and C only
00044  */
00045 void   cblas_cdotu_sub(const int N, const void *X, const int incX,
00046                        const void *Y, const int incY, void *dotu);
00047 void   cblas_cdotc_sub(const int N, const void *X, const int incX,
00048                        const void *Y, const int incY, void *dotc);
00049 
00050 void   cblas_zdotu_sub(const int N, const void *X, const int incX,
00051                        const void *Y, const int incY, void *dotu);
00052 void   cblas_zdotc_sub(const int N, const void *X, const int incX,
00053                        const void *Y, const int incY, void *dotc);
00054 
00055 
00056 /*
00057  * Functions having prefixes S D SC DZ
00058  */
00059 float  cblas_snrm2(const int N, const float *X, const int incX);
00060 float  cblas_sasum(const int N, const float *X, const int incX);
00061 
00062 double cblas_dnrm2(const int N, const double *X, const int incX);
00063 double cblas_dasum(const int N, const double *X, const int incX);
00064 
00065 float  cblas_scnrm2(const int N, const void *X, const int incX);
00066 float  cblas_scasum(const int N, const void *X, const int incX);
00067 
00068 double cblas_dznrm2(const int N, const void *X, const int incX);
00069 double cblas_dzasum(const int N, const void *X, const int incX);
00070 
00071 
00072 /*
00073  * Functions having standard 4 prefixes (S D C Z)
00074  */
00075 CBLAS_INDEX cblas_isamax(const int N, const float  *X, const int incX);
00076 CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX);
00077 CBLAS_INDEX cblas_icamax(const int N, const void   *X, const int incX);
00078 CBLAS_INDEX cblas_izamax(const int N, const void   *X, const int incX);
00079 
00080 /*
00081  * ===========================================================================
00082  * Prototypes for level 1 BLAS routines
00083  * ===========================================================================
00084  */
00085 
00086 /*
00087  * Routines with standard 4 prefixes (s, d, c, z)
00088  */
00089 void cblas_sswap(const int N, float *X, const int incX,
00090                  float *Y, const int incY);
00091 void cblas_scopy(const int N, const float *X, const int incX,
00092                  float *Y, const int incY);
00093 void cblas_saxpy(const int N, const float alpha, const float *X,
00094                  const int incX, float *Y, const int incY);
00095 
00096 void cblas_dswap(const int N, double *X, const int incX,
00097                  double *Y, const int incY);
00098 void cblas_dcopy(const int N, const double *X, const int incX,
00099                  double *Y, const int incY);
00100 void cblas_daxpy(const int N, const double alpha, const double *X,
00101                  const int incX, double *Y, const int incY);
00102 
00103 void cblas_cswap(const int N, void *X, const int incX,
00104                  void *Y, const int incY);
00105 void cblas_ccopy(const int N, const void *X, const int incX,
00106                  void *Y, const int incY);
00107 void cblas_caxpy(const int N, const void *alpha, const void *X,
00108                  const int incX, void *Y, const int incY);
00109 
00110 void cblas_zswap(const int N, void *X, const int incX,
00111                  void *Y, const int incY);
00112 void cblas_zcopy(const int N, const void *X, const int incX,
00113                  void *Y, const int incY);
00114 void cblas_zaxpy(const int N, const void *alpha, const void *X,
00115                  const int incX, void *Y, const int incY);
00116 
00117 
00118 /*
00119  * Routines with S and D prefix only
00120  */
00121 void cblas_srotg(float *a, float *b, float *c, float *s);
00122 void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P);
00123 void cblas_srot(const int N, float *X, const int incX,
00124                 float *Y, const int incY, const float c, const float s);
00125 void cblas_srotm(const int N, float *X, const int incX,
00126                 float *Y, const int incY, const float *P);
00127 
00128 void cblas_drotg(double *a, double *b, double *c, double *s);
00129 void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P);
00130 void cblas_drot(const int N, double *X, const int incX,
00131                 double *Y, const int incY, const double c, const double  s);
00132 void cblas_drotm(const int N, double *X, const int incX,
00133                 double *Y, const int incY, const double *P);
00134 
00135 
00136 /*
00137  * Routines with S D C Z CS and ZD prefixes
00138  */
00139 void cblas_sscal(const int N, const float alpha, float *X, const int incX);
00140 void cblas_dscal(const int N, const double alpha, double *X, const int incX);
00141 void cblas_cscal(const int N, const void *alpha, void *X, const int incX);
00142 void cblas_zscal(const int N, const void *alpha, void *X, const int incX);
00143 void cblas_csscal(const int N, const float alpha, void *X, const int incX);
00144 void cblas_zdscal(const int N, const double alpha, void *X, const int incX);
00145 
00146 /*
00147  * ===========================================================================
00148  * Prototypes for level 2 BLAS
00149  * ===========================================================================
00150  */
00151 
00152 /*
00153  * Routines with standard 4 prefixes (S, D, C, Z)
00154  */
00155 void cblas_sgemv(const enum CBLAS_ORDER order,
00156                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
00157                  const float alpha, const float *A, const int lda,
00158                  const float *X, const int incX, const float beta,
00159                  float *Y, const int incY);
00160 void cblas_sgbmv(const enum CBLAS_ORDER order,
00161                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
00162                  const int KL, const int KU, const float alpha,
00163                  const float *A, const int lda, const float *X,
00164                  const int incX, const float beta, float *Y, const int incY);
00165 void cblas_strmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00166                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00167                  const int N, const float *A, const int lda,
00168                  float *X, const int incX);
00169 void cblas_stbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00170                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00171                  const int N, const int K, const float *A, const int lda,
00172                  float *X, const int incX);
00173 void cblas_stpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00174                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00175                  const int N, const float *Ap, float *X, const int incX);
00176 void cblas_strsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00177                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00178                  const int N, const float *A, const int lda, float *X,
00179                  const int incX);
00180 void cblas_stbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00181                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00182                  const int N, const int K, const float *A, const int lda,
00183                  float *X, const int incX);
00184 void cblas_stpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00185                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00186                  const int N, const float *Ap, float *X, const int incX);
00187 
00188 void cblas_dgemv(const enum CBLAS_ORDER order,
00189                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
00190                  const double alpha, const double *A, const int lda,
00191                  const double *X, const int incX, const double beta,
00192                  double *Y, const int incY);
00193 void cblas_dgbmv(const enum CBLAS_ORDER order,
00194                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
00195                  const int KL, const int KU, const double alpha,
00196                  const double *A, const int lda, const double *X,
00197                  const int incX, const double beta, double *Y, const int incY);
00198 void cblas_dtrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00199                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00200                  const int N, const double *A, const int lda,
00201                  double *X, const int incX);
00202 void cblas_dtbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00203                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00204                  const int N, const int K, const double *A, const int lda,
00205                  double *X, const int incX);
00206 void cblas_dtpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00207                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00208                  const int N, const double *Ap, double *X, const int incX);
00209 void cblas_dtrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00210                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00211                  const int N, const double *A, const int lda, double *X,
00212                  const int incX);
00213 void cblas_dtbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00214                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00215                  const int N, const int K, const double *A, const int lda,
00216                  double *X, const int incX);
00217 void cblas_dtpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00218                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00219                  const int N, const double *Ap, double *X, const int incX);
00220 
00221 void cblas_cgemv(const enum CBLAS_ORDER order,
00222                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
00223                  const void *alpha, const void *A, const int lda,
00224                  const void *X, const int incX, const void *beta,
00225                  void *Y, const int incY);
00226 void cblas_cgbmv(const enum CBLAS_ORDER order,
00227                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
00228                  const int KL, const int KU, const void *alpha,
00229                  const void *A, const int lda, const void *X,
00230                  const int incX, const void *beta, void *Y, const int incY);
00231 void cblas_ctrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00232                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00233                  const int N, const void *A, const int lda,
00234                  void *X, const int incX);
00235 void cblas_ctbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00236                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00237                  const int N, const int K, const void *A, const int lda,
00238                  void *X, const int incX);
00239 void cblas_ctpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00240                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00241                  const int N, const void *Ap, void *X, const int incX);
00242 void cblas_ctrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00243                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00244                  const int N, const void *A, const int lda, void *X,
00245                  const int incX);
00246 void cblas_ctbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00247                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00248                  const int N, const int K, const void *A, const int lda,
00249                  void *X, const int incX);
00250 void cblas_ctpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00251                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00252                  const int N, const void *Ap, void *X, const int incX);
00253 
00254 void cblas_zgemv(const enum CBLAS_ORDER order,
00255                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
00256                  const void *alpha, const void *A, const int lda,
00257                  const void *X, const int incX, const void *beta,
00258                  void *Y, const int incY);
00259 void cblas_zgbmv(const enum CBLAS_ORDER order,
00260                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
00261                  const int KL, const int KU, const void *alpha,
00262                  const void *A, const int lda, const void *X,
00263                  const int incX, const void *beta, void *Y, const int incY);
00264 void cblas_ztrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00265                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00266                  const int N, const void *A, const int lda,
00267                  void *X, const int incX);
00268 void cblas_ztbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00269                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00270                  const int N, const int K, const void *A, const int lda,
00271                  void *X, const int incX);
00272 void cblas_ztpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00273                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00274                  const int N, const void *Ap, void *X, const int incX);
00275 void cblas_ztrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00276                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00277                  const int N, const void *A, const int lda, void *X,
00278                  const int incX);
00279 void cblas_ztbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00280                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00281                  const int N, const int K, const void *A, const int lda,
00282                  void *X, const int incX);
00283 void cblas_ztpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00284                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
00285                  const int N, const void *Ap, void *X, const int incX);
00286 
00287 
00288 /*
00289  * Routines with S and D prefixes only
00290  */
00291 void cblas_ssymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00292                  const int N, const float alpha, const float *A,
00293                  const int lda, const float *X, const int incX,
00294                  const float beta, float *Y, const int incY);
00295 void cblas_ssbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00296                  const int N, const int K, const float alpha, const float *A,
00297                  const int lda, const float *X, const int incX,
00298                  const float beta, float *Y, const int incY);
00299 void cblas_sspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00300                  const int N, const float alpha, const float *Ap,
00301                  const float *X, const int incX,
00302                  const float beta, float *Y, const int incY);
00303 void cblas_sger(const enum CBLAS_ORDER order, const int M, const int N,
00304                 const float alpha, const float *X, const int incX,
00305                 const float *Y, const int incY, float *A, const int lda);
00306 void cblas_ssyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00307                 const int N, const float alpha, const float *X,
00308                 const int incX, float *A, const int lda);
00309 void cblas_sspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00310                 const int N, const float alpha, const float *X,
00311                 const int incX, float *Ap);
00312 void cblas_ssyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00313                 const int N, const float alpha, const float *X,
00314                 const int incX, const float *Y, const int incY, float *A,
00315                 const int lda);
00316 void cblas_sspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00317                 const int N, const float alpha, const float *X,
00318                 const int incX, const float *Y, const int incY, float *A);
00319 
00320 void cblas_dsymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00321                  const int N, const double alpha, const double *A,
00322                  const int lda, const double *X, const int incX,
00323                  const double beta, double *Y, const int incY);
00324 void cblas_dsbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00325                  const int N, const int K, const double alpha, const double *A,
00326                  const int lda, const double *X, const int incX,
00327                  const double beta, double *Y, const int incY);
00328 void cblas_dspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00329                  const int N, const double alpha, const double *Ap,
00330                  const double *X, const int incX,
00331                  const double beta, double *Y, const int incY);
00332 void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N,
00333                 const double alpha, const double *X, const int incX,
00334                 const double *Y, const int incY, double *A, const int lda);
00335 void cblas_dsyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00336                 const int N, const double alpha, const double *X,
00337                 const int incX, double *A, const int lda);
00338 void cblas_dspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00339                 const int N, const double alpha, const double *X,
00340                 const int incX, double *Ap);
00341 void cblas_dsyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00342                 const int N, const double alpha, const double *X,
00343                 const int incX, const double *Y, const int incY, double *A,
00344                 const int lda);
00345 void cblas_dspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00346                 const int N, const double alpha, const double *X,
00347                 const int incX, const double *Y, const int incY, double *A);
00348 
00349 
00350 /*
00351  * Routines with C and Z prefixes only
00352  */
00353 void cblas_chemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00354                  const int N, const void *alpha, const void *A,
00355                  const int lda, const void *X, const int incX,
00356                  const void *beta, void *Y, const int incY);
00357 void cblas_chbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00358                  const int N, const int K, const void *alpha, const void *A,
00359                  const int lda, const void *X, const int incX,
00360                  const void *beta, void *Y, const int incY);
00361 void cblas_chpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00362                  const int N, const void *alpha, const void *Ap,
00363                  const void *X, const int incX,
00364                  const void *beta, void *Y, const int incY);
00365 void cblas_cgeru(const enum CBLAS_ORDER order, const int M, const int N,
00366                  const void *alpha, const void *X, const int incX,
00367                  const void *Y, const int incY, void *A, const int lda);
00368 void cblas_cgerc(const enum CBLAS_ORDER order, const int M, const int N,
00369                  const void *alpha, const void *X, const int incX,
00370                  const void *Y, const int incY, void *A, const int lda);
00371 void cblas_cher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00372                 const int N, const float alpha, const void *X, const int incX,
00373                 void *A, const int lda);
00374 void cblas_chpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00375                 const int N, const float alpha, const void *X,
00376                 const int incX, void *A);
00377 void cblas_cher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
00378                 const void *alpha, const void *X, const int incX,
00379                 const void *Y, const int incY, void *A, const int lda);
00380 void cblas_chpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
00381                 const void *alpha, const void *X, const int incX,
00382                 const void *Y, const int incY, void *Ap);
00383 
00384 void cblas_zhemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00385                  const int N, const void *alpha, const void *A,
00386                  const int lda, const void *X, const int incX,
00387                  const void *beta, void *Y, const int incY);
00388 void cblas_zhbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00389                  const int N, const int K, const void *alpha, const void *A,
00390                  const int lda, const void *X, const int incX,
00391                  const void *beta, void *Y, const int incY);
00392 void cblas_zhpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00393                  const int N, const void *alpha, const void *Ap,
00394                  const void *X, const int incX,
00395                  const void *beta, void *Y, const int incY);
00396 void cblas_zgeru(const enum CBLAS_ORDER order, const int M, const int N,
00397                  const void *alpha, const void *X, const int incX,
00398                  const void *Y, const int incY, void *A, const int lda);
00399 void cblas_zgerc(const enum CBLAS_ORDER order, const int M, const int N,
00400                  const void *alpha, const void *X, const int incX,
00401                  const void *Y, const int incY, void *A, const int lda);
00402 void cblas_zher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00403                 const int N, const double alpha, const void *X, const int incX,
00404                 void *A, const int lda);
00405 void cblas_zhpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
00406                 const int N, const double alpha, const void *X,
00407                 const int incX, void *A);
00408 void cblas_zher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
00409                 const void *alpha, const void *X, const int incX,
00410                 const void *Y, const int incY, void *A, const int lda);
00411 void cblas_zhpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
00412                 const void *alpha, const void *X, const int incX,
00413                 const void *Y, const int incY, void *Ap);
00414 
00415 /*
00416  * ===========================================================================
00417  * Prototypes for level 3 BLAS
00418  * ===========================================================================
00419  */
00420 
00421 /*
00422  * Routines with standard 4 prefixes (S, D, C, Z)
00423  */
00424 void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
00425                  const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
00426                  const int K, const float alpha, const float *A,
00427                  const int lda, const float *B, const int ldb,
00428                  const float beta, float *C, const int ldc);
00429 void cblas_ssymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00430                  const enum CBLAS_UPLO Uplo, const int M, const int N,
00431                  const float alpha, const float *A, const int lda,
00432                  const float *B, const int ldb, const float beta,
00433                  float *C, const int ldc);
00434 void cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
00435                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
00436                  const float alpha, const float *A, const int lda,
00437                  const float beta, float *C, const int ldc);
00438 void cblas_ssyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
00439                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
00440                   const float alpha, const float *A, const int lda,
00441                   const float *B, const int ldb, const float beta,
00442                   float *C, const int ldc);
00443 void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00444                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
00445                  const enum CBLAS_DIAG Diag, const int M, const int N,
00446                  const float alpha, const float *A, const int lda,
00447                  float *B, const int ldb);
00448 void cblas_strsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00449                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
00450                  const enum CBLAS_DIAG Diag, const int M, const int N,
00451                  const float alpha, const float *A, const int lda,
00452                  float *B, const int ldb);
00453 
00454 void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
00455                  const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
00456                  const int K, const double alpha, const double *A,
00457                  const int lda, const double *B, const int ldb,
00458                  const double beta, double *C, const int ldc);
00459 void cblas_dsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00460                  const enum CBLAS_UPLO Uplo, const int M, const int N,
00461                  const double alpha, const double *A, const int lda,
00462                  const double *B, const int ldb, const double beta,
00463                  double *C, const int ldc);
00464 void cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
00465                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
00466                  const double alpha, const double *A, const int lda,
00467                  const double beta, double *C, const int ldc);
00468 void cblas_dsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
00469                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
00470                   const double alpha, const double *A, const int lda,
00471                   const double *B, const int ldb, const double beta,
00472                   double *C, const int ldc);
00473 void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00474                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
00475                  const enum CBLAS_DIAG Diag, const int M, const int N,
00476                  const double alpha, const double *A, const int lda,
00477                  double *B, const int ldb);
00478 void cblas_dtrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00479                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
00480                  const enum CBLAS_DIAG Diag, const int M, const int N,
00481                  const double alpha, const double *A, const int lda,
00482                  double *B, const int ldb);
00483 
00484 void cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
00485                  const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
00486                  const int K, const void *alpha, const void *A,
00487                  const int lda, const void *B, const int ldb,
00488                  const void *beta, void *C, const int ldc);
00489 void cblas_csymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00490                  const enum CBLAS_UPLO Uplo, const int M, const int N,
00491                  const void *alpha, const void *A, const int lda,
00492                  const void *B, const int ldb, const void *beta,
00493                  void *C, const int ldc);
00494 void cblas_csyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
00495                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
00496                  const void *alpha, const void *A, const int lda,
00497                  const void *beta, void *C, const int ldc);
00498 void cblas_csyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
00499                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
00500                   const void *alpha, const void *A, const int lda,
00501                   const void *B, const int ldb, const void *beta,
00502                   void *C, const int ldc);
00503 void cblas_ctrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00504                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
00505                  const enum CBLAS_DIAG Diag, const int M, const int N,
00506                  const void *alpha, const void *A, const int lda,
00507                  void *B, const int ldb);
00508 void cblas_ctrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00509                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
00510                  const enum CBLAS_DIAG Diag, const int M, const int N,
00511                  const void *alpha, const void *A, const int lda,
00512                  void *B, const int ldb);
00513 
00514 void cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
00515                  const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
00516                  const int K, const void *alpha, const void *A,
00517                  const int lda, const void *B, const int ldb,
00518                  const void *beta, void *C, const int ldc);
00519 void cblas_zsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00520                  const enum CBLAS_UPLO Uplo, const int M, const int N,
00521                  const void *alpha, const void *A, const int lda,
00522                  const void *B, const int ldb, const void *beta,
00523                  void *C, const int ldc);
00524 void cblas_zsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
00525                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
00526                  const void *alpha, const void *A, const int lda,
00527                  const void *beta, void *C, const int ldc);
00528 void cblas_zsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
00529                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
00530                   const void *alpha, const void *A, const int lda,
00531                   const void *B, const int ldb, const void *beta,
00532                   void *C, const int ldc);
00533 void cblas_ztrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00534                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
00535                  const enum CBLAS_DIAG Diag, const int M, const int N,
00536                  const void *alpha, const void *A, const int lda,
00537                  void *B, const int ldb);
00538 void cblas_ztrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00539                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
00540                  const enum CBLAS_DIAG Diag, const int M, const int N,
00541                  const void *alpha, const void *A, const int lda,
00542                  void *B, const int ldb);
00543 
00544 
00545 /*
00546  * Routines with prefixes C and Z only
00547  */
00548 void cblas_chemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00549                  const enum CBLAS_UPLO Uplo, const int M, const int N,
00550                  const void *alpha, const void *A, const int lda,
00551                  const void *B, const int ldb, const void *beta,
00552                  void *C, const int ldc);
00553 void cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
00554                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
00555                  const float alpha, const void *A, const int lda,
00556                  const float beta, void *C, const int ldc);
00557 void cblas_cher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
00558                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
00559                   const void *alpha, const void *A, const int lda,
00560                   const void *B, const int ldb, const float beta,
00561                   void *C, const int ldc);
00562 
00563 void cblas_zhemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
00564                  const enum CBLAS_UPLO Uplo, const int M, const int N,
00565                  const void *alpha, const void *A, const int lda,
00566                  const void *B, const int ldb, const void *beta,
00567                  void *C, const int ldc);
00568 void cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
00569                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
00570                  const double alpha, const void *A, const int lda,
00571                  const double beta, void *C, const int ldc);
00572 void cblas_zher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
00573                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
00574                   const void *alpha, const void *A, const int lda,
00575                   const void *B, const int ldb, const double beta,
00576                   void *C, const int ldc);
00577 
00578 void cblas_xerbla(int p, const char *rout, const char *form, ...);
00579 
00580 #ifdef __cplusplus
00581 }
00582 #endif
00583 
00584 #endif