/*
 * cblas_f77.h
 * Written by Keita Teranishi
 *
 * Updated by Jeff Horner
 * Merged cblas_f77.h and cblas_fortran_header.h
 */

#ifndef CBLAS_F77_H
#define CBLAS_F77_H

#define FCHAR char *
#define FINT const int *

/*
 * Level 1 BLAS
 */
// Google-local: Nonstandard xerbla name to avoid collisions with LAPACK.
#define F77_xerbla cblas_f77_xerbla_
#define F77_srotg      srotg_
#define F77_srotmg     srotmg_
#define F77_srot       srot_
#define F77_srotm      srotm_
#define F77_drotg      drotg_
#define F77_drotmg     drotmg_
#define F77_drot       drot_
#define F77_drotm      drotm_
#define F77_sswap      sswap_
#define F77_scopy      scopy_
#define F77_saxpy      saxpy_
#define F77_dswap      dswap_
#define F77_dcopy      dcopy_
#define F77_daxpy      daxpy_
#define F77_cswap      cswap_
#define F77_ccopy      ccopy_
#define F77_caxpy      caxpy_
#define F77_zswap      zswap_
#define F77_zcopy      zcopy_
#define F77_zaxpy      zaxpy_
#define F77_sscal      sscal_
#define F77_dscal      dscal_
#define F77_cscal      cscal_
#define F77_zscal      zscal_
#define F77_csscal      csscal_
#define F77_zdscal      zdscal_

// Google-local: Use the function version of these, so that we don't need
// the built-in Fortran wrappers.
#define F77_sdot   sdot_
#define F77_ddot   ddot_
#define F77_dsdot   dsdot_
#define F77_sdsdot   sdsdot_
#define F77_snrm2  snrm2_
#define F77_sasum  sasum_
#define F77_dnrm2  dnrm2_
#define F77_dasum  dasum_
#define F77_isamax isamax_
#define F77_idamax idamax_
#define F77_icamax icamax_
#define F77_izamax izamax_
#define F77_scnrm2  scnrm2_
#define F77_scasum  scasum_
#define F77_dznrm2  dznrm2_
#define F77_dzasum  dzasum_

// Google-local: Use Eigen's "subroutine" versions of these functions, not
// the built-in Fortran wrappers.
#define F77_cdotc_sub  cdotcw_
#define F77_cdotu_sub  cdotuw_
#define F77_zdotu_sub  zdotuw_
#define F77_zdotc_sub  zdotcw_

/*
 * Level 2 BLAS
 */
#define F77_ssymv      ssymv_
#define F77_ssbmv      ssbmv_
#define F77_sspmv      sspmv_
#define F77_sger       sger_
#define F77_ssyr       ssyr_
#define F77_sspr       sspr_
#define F77_ssyr2      ssyr2_
#define F77_sspr2      sspr2_
#define F77_dsymv      dsymv_
#define F77_dsbmv      dsbmv_
#define F77_dspmv      dspmv_
#define F77_dger       dger_
#define F77_dsyr       dsyr_
#define F77_dspr       dspr_
#define F77_dsyr2      dsyr2_
#define F77_dspr2      dspr2_
#define F77_chemv      chemv_
#define F77_chbmv      chbmv_
#define F77_chpmv      chpmv_
#define F77_cgeru      cgeru_
#define F77_cgerc      cgerc_
#define F77_cher       cher_
#define F77_chpr       chpr_
#define F77_cher2      cher2_
#define F77_chpr2      chpr2_
#define F77_zhemv      zhemv_
#define F77_zhbmv      zhbmv_
#define F77_zhpmv      zhpmv_
#define F77_zgeru      zgeru_
#define F77_zgerc      zgerc_
#define F77_zher       zher_
#define F77_zhpr       zhpr_
#define F77_zher2      zher2_
#define F77_zhpr2      zhpr2_
#define F77_sgemv      sgemv_
#define F77_sgbmv      sgbmv_
#define F77_strmv      strmv_
#define F77_stbmv      stbmv_
#define F77_stpmv      stpmv_
#define F77_strsv      strsv_
#define F77_stbsv      stbsv_
#define F77_stpsv      stpsv_
#define F77_dgemv      dgemv_
#define F77_dgbmv      dgbmv_
#define F77_dtrmv      dtrmv_
#define F77_dtbmv      dtbmv_
#define F77_dtpmv      dtpmv_
#define F77_dtrsv      dtrsv_
#define F77_dtbsv      dtbsv_
#define F77_dtpsv      dtpsv_
#define F77_cgemv      cgemv_
#define F77_cgbmv      cgbmv_
#define F77_ctrmv      ctrmv_
#define F77_ctbmv      ctbmv_
#define F77_ctpmv      ctpmv_
#define F77_ctrsv      ctrsv_
#define F77_ctbsv      ctbsv_
#define F77_ctpsv      ctpsv_
#define F77_zgemv      zgemv_
#define F77_zgbmv      zgbmv_
#define F77_ztrmv      ztrmv_
#define F77_ztbmv      ztbmv_
#define F77_ztpmv      ztpmv_
#define F77_ztrsv      ztrsv_
#define F77_ztbsv      ztbsv_
#define F77_ztpsv      ztpsv_
/*
 * Level 3 BLAS
 */
#define F77_chemm      chemm_
#define F77_cherk      cherk_
#define F77_cher2k     cher2k_
#define F77_zhemm      zhemm_
#define F77_zherk      zherk_
#define F77_zher2k     zher2k_
#define F77_sgemm      sgemm_
#define F77_ssymm      ssymm_
#define F77_ssyrk      ssyrk_
#define F77_ssyr2k     ssyr2k_
#define F77_strmm      strmm_
#define F77_strsm      strsm_
#define F77_dgemm      dgemm_
#define F77_dsymm      dsymm_
#define F77_dsyrk      dsyrk_
#define F77_dsyr2k     dsyr2k_
#define F77_dtrmm      dtrmm_
#define F77_dtrsm      dtrsm_
#define F77_cgemm      cgemm_
#define F77_csymm      csymm_
#define F77_csyrk      csyrk_
#define F77_csyr2k     csyr2k_
#define F77_ctrmm      ctrmm_
#define F77_ctrsm      ctrsm_
#define F77_zgemm      zgemm_
#define F77_zsymm      zsymm_
#define F77_zsyrk      zsyrk_
#define F77_zsyr2k     zsyr2k_
#define F77_ztrmm      ztrmm_
#define F77_ztrsm      ztrsm_

#ifdef __cplusplus
extern "C" {
#endif

   void F77_xerbla(FCHAR, void *);
/*
 * Level 1 Fortran Prototypes
 */

/* Single Precision */

   void F77_srot(FINT, float *, FINT, float *, FINT, const float *, const float *);
   void F77_srotg(float *,float *,float *,float *);    
   void F77_srotm( FINT, float *, FINT, float *, FINT, const float *);
   void F77_srotmg(float *,float *,float *,const float *, float *);
   void F77_sswap( FINT, float *, FINT, float *, FINT);
   void F77_scopy( FINT, const float *, FINT, float *, FINT);
   void F77_saxpy( FINT, const float *, const float *, FINT, float *, FINT);
   void F77_sscal( FINT, const float *, float *, FINT);

   // Google-local: Use the function version of these, so that we don't need
   // the built-in Fortran wrappers.
   float F77_sdot(FINT, const float *, FINT, const float *, FINT);
   float F77_sdsdot( FINT, const float *, const float *, FINT, const float *, FINT);
   float F77_snrm2( FINT, const float *, FINT);
   float F77_sasum( FINT, const float *, FINT);
   int F77_isamax( FINT, const float *, FINT);

/* Double Precision */

   void F77_drot(FINT, double *, FINT, double *, FINT, const double *, const double *);
   void F77_drotg(double *,double *,double *,double *);    
   void F77_drotm( FINT, double *, FINT, double *, FINT, const double *);
   void F77_drotmg(double *,double *,double *,const double *, double *);
   void F77_dswap( FINT, double *, FINT, double *, FINT);
   void F77_dcopy( FINT, const double *, FINT, double *, FINT);
   void F77_daxpy( FINT, const double *, const double *, FINT, double *, FINT);
   void F77_dswap( FINT, double *, FINT, double *, FINT);
   void F77_dscal( FINT, const double *, double *, FINT);

   // Google-local: Use the function version of these, so that we don't need
   // the built-in Fortran wrappers.
   double F77_ddot(FINT, const double *, FINT, const double *, FINT);
   double F77_dsdot(FINT, const float *, FINT, const float *, FINT);
   double F77_dnrm2( FINT, const double *, FINT);
   double F77_dasum( FINT, const double *, FINT);
   int F77_idamax( FINT, const double * , FINT);

/* Single Complex Precision */

   void F77_cswap( FINT, void *, FINT, void *, FINT);
   void F77_ccopy( FINT, const void *, FINT, void *, FINT);
   void F77_caxpy( FINT, const void *, const void *, FINT, void *, FINT);
   void F77_cswap( FINT, void *, FINT, void *, FINT);
   void F77_cdotc_sub( FINT, const void *, FINT, const void *, FINT, void *);
   void F77_cdotu_sub( FINT, const void *, FINT, const void *, FINT, void *);
   void F77_cscal( FINT, const void *, void *, FINT);
   void F77_csscal( FINT, const float *, void *, FINT);

   // Google-local: Use the function version of these, so that we don't need
   // the built-in Fortran wrappers.
   int F77_icamax( FINT, const void *, FINT);
   float F77_scnrm2( FINT, const void *, FINT);
   float F77_scasum( FINT, const void *, FINT);

/* Double Complex Precision */

   void F77_zswap( FINT, void *, FINT, void *, FINT);
   void F77_zcopy( FINT, const void *, FINT, void *, FINT);
   void F77_zaxpy( FINT, const void *, const void *, FINT, void *, FINT);
   void F77_zswap( FINT, void *, FINT, void *, FINT);
   void F77_zdotc_sub( FINT, const void *, FINT, const void *, FINT, void *);
   void F77_zdotu_sub( FINT, const void *, FINT, const void *, FINT, void *);
   void F77_zdscal( FINT, const double *, void *, FINT);
   void F77_zscal( FINT, const void *, void *, FINT);

   // Google-local: Use the function version of these, so that we don't need
   // the built-in Fortran wrappers.
   int F77_izamax( FINT, const void *, FINT);
   double F77_dznrm2( FINT, const void *, FINT);
   double F77_dzasum( FINT, const void *, FINT);

/*
 * Level 2 Fortran Prototypes
 */

/* Single Precision */

   void F77_sgemv(FCHAR, FINT, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT);
   void F77_sgbmv(FCHAR, FINT, FINT, FINT, FINT, const float *,  const float *, FINT, const float *, FINT, const float *, float *, FINT);
   void F77_ssymv(FCHAR, FINT, const float *, const float *, FINT, const float *,  FINT, const float *, float *, FINT);
   void F77_ssbmv(FCHAR, FINT, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT);
   void F77_sspmv(FCHAR, FINT, const float *, const float *, const float *, FINT, const float *, float *, FINT);
   void F77_strmv( FCHAR, FCHAR, FCHAR, FINT, const float *, FINT, float *, FINT);
   void F77_stbmv( FCHAR, FCHAR, FCHAR, FINT, FINT, const float *, FINT, float *, FINT);
   void F77_strsv( FCHAR, FCHAR, FCHAR, FINT, const float *, FINT, float *, FINT);
   void F77_stbsv( FCHAR, FCHAR, FCHAR, FINT, FINT, const float *, FINT, float *, FINT);
   void F77_stpmv( FCHAR, FCHAR, FCHAR, FINT, const float *, float *, FINT);
   void F77_stpsv( FCHAR, FCHAR, FCHAR, FINT, const float *, float *, FINT);
   void F77_sger( FINT, FINT, const float *, const float *, FINT, const float *, FINT, float *, FINT);
   void F77_ssyr(FCHAR, FINT, const float *, const float *, FINT, float *, FINT);
   void F77_sspr(FCHAR, FINT, const float *, const float *, FINT, float *); 
   void F77_sspr2(FCHAR, FINT, const float *, const float *, FINT, const float *, FINT,  float *); 
   void F77_ssyr2(FCHAR, FINT, const float *, const float *, FINT, const float *, FINT,  float *, FINT);

/* Double Precision */

   void F77_dgemv(FCHAR, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT);
   void F77_dgbmv(FCHAR, FINT, FINT, FINT, FINT, const double *,  const double *, FINT, const double *, FINT, const double *, double *, FINT);
   void F77_dsymv(FCHAR, FINT, const double *, const double *, FINT, const double *,  FINT, const double *, double *, FINT);
   void F77_dsbmv(FCHAR, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT);
   void F77_dspmv(FCHAR, FINT, const double *, const double *, const double *, FINT, const double *, double *, FINT);
   void F77_dtrmv( FCHAR, FCHAR, FCHAR, FINT, const double *, FINT, double *, FINT);
   void F77_dtbmv( FCHAR, FCHAR, FCHAR, FINT, FINT, const double *, FINT, double *, FINT);
   void F77_dtrsv( FCHAR, FCHAR, FCHAR, FINT, const double *, FINT, double *, FINT);
   void F77_dtbsv( FCHAR, FCHAR, FCHAR, FINT, FINT, const double *, FINT, double *, FINT);
   void F77_dtpmv( FCHAR, FCHAR, FCHAR, FINT, const double *, double *, FINT);
   void F77_dtpsv( FCHAR, FCHAR, FCHAR, FINT, const double *, double *, FINT);
   void F77_dger( FINT, FINT, const double *, const double *, FINT, const double *, FINT, double *, FINT);
   void F77_dsyr(FCHAR, FINT, const double *, const double *, FINT, double *, FINT);
   void F77_dspr(FCHAR, FINT, const double *, const double *, FINT, double *); 
   void F77_dspr2(FCHAR, FINT, const double *, const double *, FINT, const double *, FINT,  double *); 
   void F77_dsyr2(FCHAR, FINT, const double *, const double *, FINT, const double *, FINT,  double *, FINT);

/* Single Complex Precision */

   void F77_cgemv(FCHAR, FINT, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT);
   void F77_cgbmv(FCHAR, FINT, FINT, FINT, FINT, const void *,  const void *, FINT, const void *, FINT, const void *, void *, FINT);
   void F77_chemv(FCHAR, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT);
   void F77_chbmv(FCHAR, FINT, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT);
   void F77_chpmv(FCHAR, FINT, const void *, const void *, const void *, FINT, const void *, void *, FINT);
   void F77_ctrmv( FCHAR, FCHAR, FCHAR, FINT, const void *, FINT, void *, FINT);
   void F77_ctbmv( FCHAR, FCHAR, FCHAR, FINT, FINT, const void *, FINT, void *, FINT);
   void F77_ctpmv( FCHAR, FCHAR, FCHAR, FINT, const void *, void *, FINT);
   void F77_ctrsv( FCHAR, FCHAR, FCHAR, FINT, const void *, FINT, void *, FINT);
   void F77_ctbsv( FCHAR, FCHAR, FCHAR, FINT, FINT, const void *, FINT, void *, FINT);
   void F77_ctpsv( FCHAR, FCHAR, FCHAR, FINT, const void *, void *,FINT);
   void F77_cgerc( FINT, FINT, const void *, const void *, FINT, const void *, FINT, void *, FINT);
   void F77_cgeru( FINT, FINT, const void *, const void *, FINT, const void *, FINT, void *,  FINT);
   void F77_cher(FCHAR, FINT, const float *, const void *, FINT, void *, FINT);
   void F77_cher2(FCHAR, FINT, const void *, const void *, FINT, const void *, FINT, void *, FINT);
   void F77_chpr(FCHAR, FINT, const float *, const void *, FINT, void *);
   void F77_chpr2(FCHAR, FINT, const float *, const void *, FINT, const void *, FINT, void *);

/* Double Complex Precision */

   void F77_zgemv(FCHAR, FINT, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT);
   void F77_zgbmv(FCHAR, FINT, FINT, FINT, FINT, const void *,  const void *, FINT, const void *, FINT, const void *, void *, FINT);
   void F77_zhemv(FCHAR, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT);
   void F77_zhbmv(FCHAR, FINT, FINT, const void *, const void *, FINT, const void *, FINT, const void *, void *, FINT);
   void F77_zhpmv(FCHAR, FINT, const void *, const void *, const void *, FINT, const void *, void *, FINT);
   void F77_ztrmv( FCHAR, FCHAR, FCHAR, FINT, const void *, FINT, void *, FINT);
   void F77_ztbmv( FCHAR, FCHAR, FCHAR, FINT, FINT, const void *, FINT, void *, FINT);
   void F77_ztpmv( FCHAR, FCHAR, FCHAR, FINT, const void *, void *, FINT);
   void F77_ztrsv( FCHAR, FCHAR, FCHAR, FINT, const void *, FINT, void *, FINT);
   void F77_ztbsv( FCHAR, FCHAR, FCHAR, FINT, FINT, const void *, FINT, void *, FINT);
   void F77_ztpsv( FCHAR, FCHAR, FCHAR, FINT, const void *, void *,FINT);
   void F77_zgerc( FINT, FINT, const void *, const void *, FINT, const void *, FINT, void *, FINT);
   void F77_zgeru( FINT, FINT, const void *, const void *, FINT, const void *, FINT, void *,  FINT);
   void F77_zher(FCHAR, FINT, const double *, const void *, FINT, void *, FINT);
   void F77_zher2(FCHAR, FINT, const void *, const void *, FINT, const void *, FINT, void *, FINT);
   void F77_zhpr(FCHAR, FINT, const double *, const void *, FINT, void *);
   void F77_zhpr2(FCHAR, FINT, const double *, const void *, FINT, const void *, FINT, void *);

/*
 * Level 3 Fortran Prototypes
 */

/* Single Precision */

   void F77_sgemm(FCHAR, FCHAR, FINT, FINT, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT);
   void F77_ssymm(FCHAR, FCHAR, FINT, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT);
   void F77_ssyrk(FCHAR, FCHAR, FINT, FINT, const float *, const float *, FINT, const float *, float *, FINT);
   void F77_ssyr2k(FCHAR, FCHAR, FINT, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT);
   void F77_strmm(FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const float *, const float *, FINT, float *, FINT);
   void F77_strsm(FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const float *, const float *, FINT, float *, FINT);

/* Double Precision */

   void F77_dgemm(FCHAR, FCHAR, FINT, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT);
   void F77_dsymm(FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT);
   void F77_dsyrk(FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, const double *, double *, FINT);
   void F77_dsyr2k(FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT);
   void F77_dtrmm(FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, double *, FINT);
   void F77_dtrsm(FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, double *, FINT);

/* Single Complex Precision */

   void F77_cgemm(FCHAR, FCHAR, FINT, FINT, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT);
   void F77_csymm(FCHAR, FCHAR, FINT, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT);
   void F77_chemm(FCHAR, FCHAR, FINT, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT);
   void F77_csyrk(FCHAR, FCHAR, FINT, FINT, const float *, const float *, FINT, const float *, float *, FINT);
   void F77_cherk(FCHAR, FCHAR, FINT, FINT, const float *, const float *, FINT, const float *, float *, FINT);
   void F77_csyr2k(FCHAR, FCHAR, FINT, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT);
   void F77_cher2k(FCHAR, FCHAR, FINT, FINT, const float *, const float *, FINT, const float *, FINT, const float *, float *, FINT);
   void F77_ctrmm(FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const float *, const float *, FINT, float *, FINT);
   void F77_ctrsm(FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const float *, const float *, FINT, float *, FINT);

/* Double Complex Precision */

   void F77_zgemm(FCHAR, FCHAR, FINT, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT);
   void F77_zsymm(FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT);
   void F77_zhemm(FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT);
   void F77_zsyrk(FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, const double *, double *, FINT);
   void F77_zherk(FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, const double *, double *, FINT);
   void F77_zsyr2k(FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT);
   void F77_zher2k(FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, const double *, FINT, const double *, double *, FINT);
   void F77_ztrmm(FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, double *, FINT);
   void F77_ztrsm(FCHAR, FCHAR, FCHAR, FCHAR, FINT, FINT, const double *, const double *, FINT, double *, FINT);

#ifdef __cplusplus
}
#endif

#endif /*  CBLAS_F77_H */
