/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*             ********   ***                                 SparseLib++    */
/*          *******  **  ***       ***      ***               v. 1.5c        */
/*           *****      ***     ******** ********                            */
/*            *****    ***     ******** ********              R. Pozo        */
/*       **  *******  ***   **   ***      ***                 K. Remington   */
/*        ********   ********                                 A. Lumsdaine   */
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
/*                                                                           */
/*                                                                           */
/*                     SparseLib++ : Sparse Matrix Library                   */
/*                                                                           */
/*               National Institute of Standards and Technology              */
/*                        University of Notre Dame                           */
/*              Authors: R. Pozo, K. Remington, A. Lumsdaine                 */
/*                                                                           */
/*                                 NOTICE                                    */
/*                                                                           */
/* Permission to use, copy, modify, and distribute this software and         */
/* its documentation for any purpose and without fee is hereby granted       */
/* provided that the above notice appear in all copies and supporting        */
/* documentation.                                                            */
/*                                                                           */
/* Neither the Institutions (National Institute of Standards and Technology, */
/* University of Notre Dame) nor the Authors make any representations about  */
/* the suitability of this software for any purpose.  This software is       */
/* provided ``as is'' without expressed or implied warranty.                 */
/*                                                                           */
/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/


#ifndef SPBLAS_H
#define SPBLAS_H

// #ifndef F77NAME
// # include "generic.h"
// # if defined(RIOS)
// #  define F77NAME(x) x
// # else
// #  define F77NAME(x) name2(x,_)
// # endif
// #endif

#ifdef COMPLEX_SUPPORT
#include "complex.h"
#endif

extern "C" {

void scoomm
  (const int &transa, const int &m, const int &n, const int &k, 
   const float &alpha, 
   const int descra[], const float *val, 
   const int *indx, const int *jndx, const int &nnz, 
   const float *b, const int &ldb, 
   const float &beta, float *c, const int &ldc, 
   float *work, const int &lwork);

void scscmm
  (const int &transa, const int &m, const int &n, const int &k, 
   const float &alpha, 
   const int descra[], const float *val, 
   const int *indx, const int *pntr, const float *b, int &ldb, 
   const float &beta, float *c, const int &ldc, 
   float *work, const int &lwork);
   
void scsrmm
  (const int &transa, const int &m, const int &n, const int &k, 
   const float &alpha, 
   const int descra[], const float *val, 
   const int *indx, const int *pntr, const float *b, int &ldb, 
   const float &beta, float *c, const int &ldc, 
   float *work, const int &lwork);
   
void dcoomm
  (const int &transa, const int &m, const int &n, const int &k, 
   const double &alpha, 
   const int descra[], const double *val, 
   const int *indx, const int *jndx, const int &nnz, 
   const double *b, const int &ldb, 
   const double &beta, double *c, const int &ldc, 
   double *work, const int &lwork);

void dcscmm
  (const int &transa, const int &m, const int &n, const int &k, 
   const double &alpha, 
   const int descra[], const double *val, 
   const int *indx, const int *pntr, const double *b, int &ldb, 
   const double &beta, double *c, const int &ldc, 
   double *work, const int &lwork);
   
void dcsrmm
  (const int &transa, const int &m, const int &n, const int &k, 
   const double &alpha, 
   const int descra[], const double *val, 
   const int *indx, const int *pntr, const double *b, int &ldb, 
   const double &beta, double *c, const int &ldc, 
   double *work, const int &lwork);
  

void dcscsm
  (const int &transa, const int &m, const int &n,
   const int &unitd, const double *dv, const double &alpha, 
   const int descra[], const double *val, 
   const int *indx, const int *pntr, const double *b, int &ldb, 
   const double &beta, double *c, const int &ldc, 
   double *work, const int &lwork);

void dcsrsm
  (const int &transa, const int &m, const int &n,
   const int &unitd, const double *dv, const double &alpha, 
   const int descra[], const double *val, 
   const int *indx, const int *pntr, const double *b, int &ldb, 
   const double &beta, double *c, const int &ldc, 
   double *work, const int &lwork);

void scscsm
  (const int &transa, const int &m, const int &n,
   const int &unitd, const float *dv, const float &alpha, 
   const int descra[], const float *val, 
   const int *indx, const int *pntr, const float *b, int &ldb, 
   const float &beta, float *c, const int &ldc, 
   float *work, const int &lwork);

void scsrsm
  (const int &transa, const int &m, const int &n,
   const int &unitd, const float *dv, const float &alpha, 
   const int descra[], const float *val, 
   const int *indx, const int *pntr, const float *b, int &ldb, 
   const float &beta, float *c, const int &ldc, 
   float *work, const int &lwork);

#ifdef COMPLEX_SUPPORT

void zcoomm
  (const int &transa, const int &m, const int &n, const int &k, 
   const complex &alpha, 
   const int descra[], const complex *val, 
   const int *indx, const int *jndx, const int &nnz, 
   const complex *b, const int &ldb, 
   const complex &beta, complex *c, const int &ldc, 
   complex *work, const int &lwork);

void zcscmm
  (const int &transa, const int &m, const int &n, const int &k, 
   const complex &alpha, 
   const int descra[], const complex *val, 
   const int *indx, const int *pntr, const complex *b, int &ldb, 
   const complex &beta, complex *c, const int &ldc, 
   complex *work, const int &lwork);
   
void zcsrmm
  (const int &transa, const int &m, const int &n, const int &k, 
   const complex &alpha, 
   const int descra[], const complex *val, 
   const int *indx, const int *pntr, const complex *b, int &ldb, 
   const complex &beta, complex *c, const int &ldc, 
   complex *work, const int &lwork);

void zcscsm
  (const int &transa, const int &m, const int &n,
   const int &unitd, const complex *dv, const complex &alpha, 
   const int descra[], const complex *val, 
   const int *indx, const int *pntr, const complex *b, int &ldb, 
   const complex &beta, complex *c, const int &ldc, 
   complex *work, const int &lwork);

void zcsrsm
  (const int &transa, const int &m, const int &n,
   const int &unitd, const complex *dv, const complex &alpha, 
   const int descra[], const complex *val, 
   const int *indx, const int *pntr, const complex *b, int &ldb, 
   const complex &beta, complex *c, const int &ldc, 
   complex *work, const int &lwork);


#endif
// COMPLEX_SUPPORT



}

#endif


syntax highlighted by Code2HTML, v. 0.9.1