Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-21 10:03:46

0001 /* blas/gsl_cblas.h
0002  * 
0003  * Copyright (C) 1996, 1997, 1998, 1999, 2000 Gerard Jungman
0004  * 
0005  * This program is free software; you can redistribute it and/or modify
0006  * it under the terms of the GNU General Public License as published by
0007  * the Free Software Foundation; either version 3 of the License, or (at
0008  * your option) any later version.
0009  * 
0010  * This program is distributed in the hope that it will be useful, but
0011  * WITHOUT ANY WARRANTY; without even the implied warranty of
0012  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
0013  * General Public License for more details.
0014  * 
0015  * You should have received a copy of the GNU General Public License
0016  * along with this program; if not, write to the Free Software
0017  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
0018  */
0019 
0020 /* This is a copy of the CBLAS standard header.
0021  * We carry this around so we do not have to
0022  * break our model for flexible BLAS functionality.
0023  */
0024 
0025 #ifndef __GSL_CBLAS_H__
0026 #define __GSL_CBLAS_H__
0027 #include <stddef.h>
0028 
0029 #undef __BEGIN_DECLS
0030 #undef __END_DECLS
0031 #ifdef __cplusplus
0032 #define __BEGIN_DECLS extern "C" {
0033 #define __END_DECLS }
0034 #else
0035 #define __BEGIN_DECLS           /* empty */
0036 #define __END_DECLS             /* empty */
0037 #endif
0038 
0039 __BEGIN_DECLS
0040 
0041 /*
0042  * Enumerated and derived types
0043  */
0044 #define CBLAS_INDEX size_t  /* this may vary between platforms */
0045 
0046 enum CBLAS_ORDER {CblasRowMajor=101, CblasColMajor=102};
0047 enum CBLAS_TRANSPOSE {CblasNoTrans=111, CblasTrans=112, CblasConjTrans=113};
0048 enum CBLAS_UPLO {CblasUpper=121, CblasLower=122};
0049 enum CBLAS_DIAG {CblasNonUnit=131, CblasUnit=132};
0050 enum CBLAS_SIDE {CblasLeft=141, CblasRight=142};
0051 
0052 /*
0053  * ===========================================================================
0054  * Prototypes for level 1 BLAS functions (complex are recast as routines)
0055  * ===========================================================================
0056  */
0057 float  cblas_sdsdot(const int N, const float alpha, const float *X,
0058                     const int incX, const float *Y, const int incY);
0059 double cblas_dsdot(const int N, const float *X, const int incX, const float *Y,
0060                    const int incY);
0061 float  cblas_sdot(const int N, const float  *X, const int incX,
0062                   const float  *Y, const int incY);
0063 double cblas_ddot(const int N, const double *X, const int incX,
0064                   const double *Y, const int incY);
0065 
0066 /*
0067  * Functions having prefixes Z and C only
0068  */
0069 void   cblas_cdotu_sub(const int N, const void *X, const int incX,
0070                        const void *Y, const int incY, void *dotu);
0071 void   cblas_cdotc_sub(const int N, const void *X, const int incX,
0072                        const void *Y, const int incY, void *dotc);
0073 
0074 void   cblas_zdotu_sub(const int N, const void *X, const int incX,
0075                        const void *Y, const int incY, void *dotu);
0076 void   cblas_zdotc_sub(const int N, const void *X, const int incX,
0077                        const void *Y, const int incY, void *dotc);
0078 
0079 
0080 /*
0081  * Functions having prefixes S D SC DZ
0082  */
0083 float  cblas_snrm2(const int N, const float *X, const int incX);
0084 float  cblas_sasum(const int N, const float *X, const int incX);
0085 
0086 double cblas_dnrm2(const int N, const double *X, const int incX);
0087 double cblas_dasum(const int N, const double *X, const int incX);
0088 
0089 float  cblas_scnrm2(const int N, const void *X, const int incX);
0090 float  cblas_scasum(const int N, const void *X, const int incX);
0091 
0092 double cblas_dznrm2(const int N, const void *X, const int incX);
0093 double cblas_dzasum(const int N, const void *X, const int incX);
0094 
0095 
0096 /*
0097  * Functions having standard 4 prefixes (S D C Z)
0098  */
0099 CBLAS_INDEX cblas_isamax(const int N, const float  *X, const int incX);
0100 CBLAS_INDEX cblas_idamax(const int N, const double *X, const int incX);
0101 CBLAS_INDEX cblas_icamax(const int N, const void   *X, const int incX);
0102 CBLAS_INDEX cblas_izamax(const int N, const void   *X, const int incX);
0103 
0104 /*
0105  * ===========================================================================
0106  * Prototypes for level 1 BLAS routines
0107  * ===========================================================================
0108  */
0109 
0110 /* 
0111  * Routines with standard 4 prefixes (s, d, c, z)
0112  */
0113 void cblas_sswap(const int N, float *X, const int incX, 
0114                  float *Y, const int incY);
0115 void cblas_scopy(const int N, const float *X, const int incX, 
0116                  float *Y, const int incY);
0117 void cblas_saxpy(const int N, const float alpha, const float *X,
0118                  const int incX, float *Y, const int incY);
0119 
0120 void cblas_dswap(const int N, double *X, const int incX, 
0121                  double *Y, const int incY);
0122 void cblas_dcopy(const int N, const double *X, const int incX, 
0123                  double *Y, const int incY);
0124 void cblas_daxpy(const int N, const double alpha, const double *X,
0125                  const int incX, double *Y, const int incY);
0126 
0127 void cblas_cswap(const int N, void *X, const int incX, 
0128                  void *Y, const int incY);
0129 void cblas_ccopy(const int N, const void *X, const int incX, 
0130                  void *Y, const int incY);
0131 void cblas_caxpy(const int N, const void *alpha, const void *X,
0132                  const int incX, void *Y, const int incY);
0133 
0134 void cblas_zswap(const int N, void *X, const int incX, 
0135                  void *Y, const int incY);
0136 void cblas_zcopy(const int N, const void *X, const int incX, 
0137                  void *Y, const int incY);
0138 void cblas_zaxpy(const int N, const void *alpha, const void *X,
0139                  const int incX, void *Y, const int incY);
0140 
0141 
0142 /* 
0143  * Routines with S and D prefix only
0144  */
0145 void cblas_srotg(float *a, float *b, float *c, float *s);
0146 void cblas_srotmg(float *d1, float *d2, float *b1, const float b2, float *P);
0147 void cblas_srot(const int N, float *X, const int incX,
0148                 float *Y, const int incY, const float c, const float s);
0149 void cblas_srotm(const int N, float *X, const int incX,
0150                 float *Y, const int incY, const float *P);
0151 
0152 void cblas_drotg(double *a, double *b, double *c, double *s);
0153 void cblas_drotmg(double *d1, double *d2, double *b1, const double b2, double *P);
0154 void cblas_drot(const int N, double *X, const int incX,
0155                 double *Y, const int incY, const double c, const double  s);
0156 void cblas_drotm(const int N, double *X, const int incX,
0157                 double *Y, const int incY, const double *P);
0158 
0159 
0160 /* 
0161  * Routines with S D C Z CS and ZD prefixes
0162  */
0163 void cblas_sscal(const int N, const float alpha, float *X, const int incX);
0164 void cblas_dscal(const int N, const double alpha, double *X, const int incX);
0165 void cblas_cscal(const int N, const void *alpha, void *X, const int incX);
0166 void cblas_zscal(const int N, const void *alpha, void *X, const int incX);
0167 void cblas_csscal(const int N, const float alpha, void *X, const int incX);
0168 void cblas_zdscal(const int N, const double alpha, void *X, const int incX);
0169 
0170 /*
0171  * ===========================================================================
0172  * Prototypes for level 2 BLAS
0173  * ===========================================================================
0174  */
0175 
0176 /* 
0177  * Routines with standard 4 prefixes (S, D, C, Z)
0178  */
0179 void cblas_sgemv(const enum CBLAS_ORDER order,
0180                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
0181                  const float alpha, const float *A, const int lda,
0182                  const float *X, const int incX, const float beta,
0183                  float *Y, const int incY);
0184 void cblas_sgbmv(const enum CBLAS_ORDER order,
0185                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
0186                  const int KL, const int KU, const float alpha,
0187                  const float *A, const int lda, const float *X,
0188                  const int incX, const float beta, float *Y, const int incY);
0189 void cblas_strmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0190                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0191                  const int N, const float *A, const int lda, 
0192                  float *X, const int incX);
0193 void cblas_stbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0194                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0195                  const int N, const int K, const float *A, const int lda, 
0196                  float *X, const int incX);
0197 void cblas_stpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0198                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0199                  const int N, const float *Ap, float *X, const int incX);
0200 void cblas_strsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0201                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0202                  const int N, const float *A, const int lda, float *X,
0203                  const int incX);
0204 void cblas_stbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0205                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0206                  const int N, const int K, const float *A, const int lda,
0207                  float *X, const int incX);
0208 void cblas_stpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0209                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0210                  const int N, const float *Ap, float *X, const int incX);
0211 
0212 void cblas_dgemv(const enum CBLAS_ORDER order,
0213                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
0214                  const double alpha, const double *A, const int lda,
0215                  const double *X, const int incX, const double beta,
0216                  double *Y, const int incY);
0217 void cblas_dgbmv(const enum CBLAS_ORDER order,
0218                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
0219                  const int KL, const int KU, const double alpha,
0220                  const double *A, const int lda, const double *X,
0221                  const int incX, const double beta, double *Y, const int incY);
0222 void cblas_dtrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0223                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0224                  const int N, const double *A, const int lda, 
0225                  double *X, const int incX);
0226 void cblas_dtbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0227                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0228                  const int N, const int K, const double *A, const int lda, 
0229                  double *X, const int incX);
0230 void cblas_dtpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0231                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0232                  const int N, const double *Ap, double *X, const int incX);
0233 void cblas_dtrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0234                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0235                  const int N, const double *A, const int lda, double *X,
0236                  const int incX);
0237 void cblas_dtbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0238                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0239                  const int N, const int K, const double *A, const int lda,
0240                  double *X, const int incX);
0241 void cblas_dtpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0242                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0243                  const int N, const double *Ap, double *X, const int incX);
0244 
0245 void cblas_cgemv(const enum CBLAS_ORDER order,
0246                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
0247                  const void *alpha, const void *A, const int lda,
0248                  const void *X, const int incX, const void *beta,
0249                  void *Y, const int incY);
0250 void cblas_cgbmv(const enum CBLAS_ORDER order,
0251                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
0252                  const int KL, const int KU, const void *alpha,
0253                  const void *A, const int lda, const void *X,
0254                  const int incX, const void *beta, void *Y, const int incY);
0255 void cblas_ctrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0256                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0257                  const int N, const void *A, const int lda, 
0258                  void *X, const int incX);
0259 void cblas_ctbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0260                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0261                  const int N, const int K, const void *A, const int lda, 
0262                  void *X, const int incX);
0263 void cblas_ctpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0264                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0265                  const int N, const void *Ap, void *X, const int incX);
0266 void cblas_ctrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0267                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0268                  const int N, const void *A, const int lda, void *X,
0269                  const int incX);
0270 void cblas_ctbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0271                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0272                  const int N, const int K, const void *A, const int lda,
0273                  void *X, const int incX);
0274 void cblas_ctpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0275                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0276                  const int N, const void *Ap, void *X, const int incX);
0277 
0278 void cblas_zgemv(const enum CBLAS_ORDER order,
0279                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
0280                  const void *alpha, const void *A, const int lda,
0281                  const void *X, const int incX, const void *beta,
0282                  void *Y, const int incY);
0283 void cblas_zgbmv(const enum CBLAS_ORDER order,
0284                  const enum CBLAS_TRANSPOSE TransA, const int M, const int N,
0285                  const int KL, const int KU, const void *alpha,
0286                  const void *A, const int lda, const void *X,
0287                  const int incX, const void *beta, void *Y, const int incY);
0288 void cblas_ztrmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0289                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0290                  const int N, const void *A, const int lda, 
0291                  void *X, const int incX);
0292 void cblas_ztbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0293                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0294                  const int N, const int K, const void *A, const int lda, 
0295                  void *X, const int incX);
0296 void cblas_ztpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0297                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0298                  const int N, const void *Ap, void *X, const int incX);
0299 void cblas_ztrsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0300                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0301                  const int N, const void *A, const int lda, void *X,
0302                  const int incX);
0303 void cblas_ztbsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0304                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0305                  const int N, const int K, const void *A, const int lda,
0306                  void *X, const int incX);
0307 void cblas_ztpsv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0308                  const enum CBLAS_TRANSPOSE TransA, const enum CBLAS_DIAG Diag,
0309                  const int N, const void *Ap, void *X, const int incX);
0310 
0311 
0312 /* 
0313  * Routines with S and D prefixes only
0314  */
0315 void cblas_ssymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0316                  const int N, const float alpha, const float *A,
0317                  const int lda, const float *X, const int incX,
0318                  const float beta, float *Y, const int incY);
0319 void cblas_ssbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0320                  const int N, const int K, const float alpha, const float *A,
0321                  const int lda, const float *X, const int incX,
0322                  const float beta, float *Y, const int incY);
0323 void cblas_sspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0324                  const int N, const float alpha, const float *Ap,
0325                  const float *X, const int incX,
0326                  const float beta, float *Y, const int incY);
0327 void cblas_sger(const enum CBLAS_ORDER order, const int M, const int N,
0328                 const float alpha, const float *X, const int incX,
0329                 const float *Y, const int incY, float *A, const int lda);
0330 void cblas_ssyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0331                 const int N, const float alpha, const float *X,
0332                 const int incX, float *A, const int lda);
0333 void cblas_sspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0334                 const int N, const float alpha, const float *X,
0335                 const int incX, float *Ap);
0336 void cblas_ssyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0337                 const int N, const float alpha, const float *X,
0338                 const int incX, const float *Y, const int incY, float *A,
0339                 const int lda);
0340 void cblas_sspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0341                 const int N, const float alpha, const float *X,
0342                 const int incX, const float *Y, const int incY, float *A);
0343 
0344 void cblas_dsymv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0345                  const int N, const double alpha, const double *A,
0346                  const int lda, const double *X, const int incX,
0347                  const double beta, double *Y, const int incY);
0348 void cblas_dsbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0349                  const int N, const int K, const double alpha, const double *A,
0350                  const int lda, const double *X, const int incX,
0351                  const double beta, double *Y, const int incY);
0352 void cblas_dspmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0353                  const int N, const double alpha, const double *Ap,
0354                  const double *X, const int incX,
0355                  const double beta, double *Y, const int incY);
0356 void cblas_dger(const enum CBLAS_ORDER order, const int M, const int N,
0357                 const double alpha, const double *X, const int incX,
0358                 const double *Y, const int incY, double *A, const int lda);
0359 void cblas_dsyr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0360                 const int N, const double alpha, const double *X,
0361                 const int incX, double *A, const int lda);
0362 void cblas_dspr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0363                 const int N, const double alpha, const double *X,
0364                 const int incX, double *Ap);
0365 void cblas_dsyr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0366                 const int N, const double alpha, const double *X,
0367                 const int incX, const double *Y, const int incY, double *A,
0368                 const int lda);
0369 void cblas_dspr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0370                 const int N, const double alpha, const double *X,
0371                 const int incX, const double *Y, const int incY, double *A);
0372 
0373 
0374 /* 
0375  * Routines with C and Z prefixes only
0376  */
0377 void cblas_chemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0378                  const int N, const void *alpha, const void *A,
0379                  const int lda, const void *X, const int incX,
0380                  const void *beta, void *Y, const int incY);
0381 void cblas_chbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0382                  const int N, const int K, const void *alpha, const void *A,
0383                  const int lda, const void *X, const int incX,
0384                  const void *beta, void *Y, const int incY);
0385 void cblas_chpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0386                  const int N, const void *alpha, const void *Ap,
0387                  const void *X, const int incX,
0388                  const void *beta, void *Y, const int incY);
0389 void cblas_cgeru(const enum CBLAS_ORDER order, const int M, const int N,
0390                  const void *alpha, const void *X, const int incX,
0391                  const void *Y, const int incY, void *A, const int lda);
0392 void cblas_cgerc(const enum CBLAS_ORDER order, const int M, const int N,
0393                  const void *alpha, const void *X, const int incX,
0394                  const void *Y, const int incY, void *A, const int lda);
0395 void cblas_cher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0396                 const int N, const float alpha, const void *X, const int incX,
0397                 void *A, const int lda);
0398 void cblas_chpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0399                 const int N, const float alpha, const void *X,
0400                 const int incX, void *A);
0401 void cblas_cher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
0402                 const void *alpha, const void *X, const int incX,
0403                 const void *Y, const int incY, void *A, const int lda);
0404 void cblas_chpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
0405                 const void *alpha, const void *X, const int incX,
0406                 const void *Y, const int incY, void *Ap);
0407 
0408 void cblas_zhemv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0409                  const int N, const void *alpha, const void *A,
0410                  const int lda, const void *X, const int incX,
0411                  const void *beta, void *Y, const int incY);
0412 void cblas_zhbmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0413                  const int N, const int K, const void *alpha, const void *A,
0414                  const int lda, const void *X, const int incX,
0415                  const void *beta, void *Y, const int incY);
0416 void cblas_zhpmv(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0417                  const int N, const void *alpha, const void *Ap,
0418                  const void *X, const int incX,
0419                  const void *beta, void *Y, const int incY);
0420 void cblas_zgeru(const enum CBLAS_ORDER order, const int M, const int N,
0421                  const void *alpha, const void *X, const int incX,
0422                  const void *Y, const int incY, void *A, const int lda);
0423 void cblas_zgerc(const enum CBLAS_ORDER order, const int M, const int N,
0424                  const void *alpha, const void *X, const int incX,
0425                  const void *Y, const int incY, void *A, const int lda);
0426 void cblas_zher(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0427                 const int N, const double alpha, const void *X, const int incX,
0428                 void *A, const int lda);
0429 void cblas_zhpr(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo,
0430                 const int N, const double alpha, const void *X,
0431                 const int incX, void *A);
0432 void cblas_zher2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
0433                 const void *alpha, const void *X, const int incX,
0434                 const void *Y, const int incY, void *A, const int lda);
0435 void cblas_zhpr2(const enum CBLAS_ORDER order, const enum CBLAS_UPLO Uplo, const int N,
0436                 const void *alpha, const void *X, const int incX,
0437                 const void *Y, const int incY, void *Ap);
0438 
0439 /*
0440  * ===========================================================================
0441  * Prototypes for level 3 BLAS
0442  * ===========================================================================
0443  */
0444 
0445 /* 
0446  * Routines with standard 4 prefixes (S, D, C, Z)
0447  */
0448 void cblas_sgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
0449                  const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
0450                  const int K, const float alpha, const float *A,
0451                  const int lda, const float *B, const int ldb,
0452                  const float beta, float *C, const int ldc);
0453 void cblas_ssymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0454                  const enum CBLAS_UPLO Uplo, const int M, const int N,
0455                  const float alpha, const float *A, const int lda,
0456                  const float *B, const int ldb, const float beta,
0457                  float *C, const int ldc);
0458 void cblas_ssyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
0459                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
0460                  const float alpha, const float *A, const int lda,
0461                  const float beta, float *C, const int ldc);
0462 void cblas_ssyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
0463                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
0464                   const float alpha, const float *A, const int lda,
0465                   const float *B, const int ldb, const float beta,
0466                   float *C, const int ldc);
0467 void cblas_strmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0468                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
0469                  const enum CBLAS_DIAG Diag, const int M, const int N,
0470                  const float alpha, const float *A, const int lda,
0471                  float *B, const int ldb);
0472 void cblas_strsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0473                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
0474                  const enum CBLAS_DIAG Diag, const int M, const int N,
0475                  const float alpha, const float *A, const int lda,
0476                  float *B, const int ldb);
0477 
0478 void cblas_dgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
0479                  const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
0480                  const int K, const double alpha, const double *A,
0481                  const int lda, const double *B, const int ldb,
0482                  const double beta, double *C, const int ldc);
0483 void cblas_dsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0484                  const enum CBLAS_UPLO Uplo, const int M, const int N,
0485                  const double alpha, const double *A, const int lda,
0486                  const double *B, const int ldb, const double beta,
0487                  double *C, const int ldc);
0488 void cblas_dsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
0489                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
0490                  const double alpha, const double *A, const int lda,
0491                  const double beta, double *C, const int ldc);
0492 void cblas_dsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
0493                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
0494                   const double alpha, const double *A, const int lda,
0495                   const double *B, const int ldb, const double beta,
0496                   double *C, const int ldc);
0497 void cblas_dtrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0498                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
0499                  const enum CBLAS_DIAG Diag, const int M, const int N,
0500                  const double alpha, const double *A, const int lda,
0501                  double *B, const int ldb);
0502 void cblas_dtrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0503                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
0504                  const enum CBLAS_DIAG Diag, const int M, const int N,
0505                  const double alpha, const double *A, const int lda,
0506                  double *B, const int ldb);
0507 
0508 void cblas_cgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
0509                  const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
0510                  const int K, const void *alpha, const void *A,
0511                  const int lda, const void *B, const int ldb,
0512                  const void *beta, void *C, const int ldc);
0513 void cblas_csymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0514                  const enum CBLAS_UPLO Uplo, const int M, const int N,
0515                  const void *alpha, const void *A, const int lda,
0516                  const void *B, const int ldb, const void *beta,
0517                  void *C, const int ldc);
0518 void cblas_csyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
0519                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
0520                  const void *alpha, const void *A, const int lda,
0521                  const void *beta, void *C, const int ldc);
0522 void cblas_csyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
0523                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
0524                   const void *alpha, const void *A, const int lda,
0525                   const void *B, const int ldb, const void *beta,
0526                   void *C, const int ldc);
0527 void cblas_ctrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0528                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
0529                  const enum CBLAS_DIAG Diag, const int M, const int N,
0530                  const void *alpha, const void *A, const int lda,
0531                  void *B, const int ldb);
0532 void cblas_ctrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0533                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
0534                  const enum CBLAS_DIAG Diag, const int M, const int N,
0535                  const void *alpha, const void *A, const int lda,
0536                  void *B, const int ldb);
0537 
0538 void cblas_zgemm(const enum CBLAS_ORDER Order, const enum CBLAS_TRANSPOSE TransA,
0539                  const enum CBLAS_TRANSPOSE TransB, const int M, const int N,
0540                  const int K, const void *alpha, const void *A,
0541                  const int lda, const void *B, const int ldb,
0542                  const void *beta, void *C, const int ldc);
0543 void cblas_zsymm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0544                  const enum CBLAS_UPLO Uplo, const int M, const int N,
0545                  const void *alpha, const void *A, const int lda,
0546                  const void *B, const int ldb, const void *beta,
0547                  void *C, const int ldc);
0548 void cblas_zsyrk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
0549                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
0550                  const void *alpha, const void *A, const int lda,
0551                  const void *beta, void *C, const int ldc);
0552 void cblas_zsyr2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
0553                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
0554                   const void *alpha, const void *A, const int lda,
0555                   const void *B, const int ldb, const void *beta,
0556                   void *C, const int ldc);
0557 void cblas_ztrmm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0558                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
0559                  const enum CBLAS_DIAG Diag, const int M, const int N,
0560                  const void *alpha, const void *A, const int lda,
0561                  void *B, const int ldb);
0562 void cblas_ztrsm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0563                  const enum CBLAS_UPLO Uplo, const enum CBLAS_TRANSPOSE TransA,
0564                  const enum CBLAS_DIAG Diag, const int M, const int N,
0565                  const void *alpha, const void *A, const int lda,
0566                  void *B, const int ldb);
0567 
0568 
0569 /* 
0570  * Routines with prefixes C and Z only
0571  */
0572 void cblas_chemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0573                  const enum CBLAS_UPLO Uplo, const int M, const int N,
0574                  const void *alpha, const void *A, const int lda,
0575                  const void *B, const int ldb, const void *beta,
0576                  void *C, const int ldc);
0577 void cblas_cherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
0578                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
0579                  const float alpha, const void *A, const int lda,
0580                  const float beta, void *C, const int ldc);
0581 void cblas_cher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
0582                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
0583                   const void *alpha, const void *A, const int lda,
0584                   const void *B, const int ldb, const float beta,
0585                   void *C, const int ldc);
0586 
0587 void cblas_zhemm(const enum CBLAS_ORDER Order, const enum CBLAS_SIDE Side,
0588                  const enum CBLAS_UPLO Uplo, const int M, const int N,
0589                  const void *alpha, const void *A, const int lda,
0590                  const void *B, const int ldb, const void *beta,
0591                  void *C, const int ldc);
0592 void cblas_zherk(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
0593                  const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
0594                  const double alpha, const void *A, const int lda,
0595                  const double beta, void *C, const int ldc);
0596 void cblas_zher2k(const enum CBLAS_ORDER Order, const enum CBLAS_UPLO Uplo,
0597                   const enum CBLAS_TRANSPOSE Trans, const int N, const int K,
0598                   const void *alpha, const void *A, const int lda,
0599                   const void *B, const int ldb, const double beta,
0600                   void *C, const int ldc);
0601 
0602 void cblas_xerbla(int p, const char *rout, const char *form, ...);
0603 
0604 __END_DECLS
0605 
0606 #endif /* __GSL_CBLAS_H__ */