/*! @file slu_Cnames.h
* \brief Macros defining how C routines will be called
*
* <pre>
* -- SuperLU routine (version 2.0) --
* Univ. of California Berkeley, Xerox Palo Alto Research Center,
* and Lawrence Berkeley National Lab.
* November 1, 1997
*
* These macros define how C routines will be called. ADD_ assumes that
* they will be called by fortran, which expects C routines to have an
* underscore postfixed to the name (Suns, and the Intel expect this).
* NOCHANGE indicates that fortran will be calling, and that it expects
* the name called by fortran to be identical to that compiled by the C
* (RS6K's do this). UPCASE says it expects C routines called by fortran
* to be in all upcase (CRAY wants this).
* </pre>
*/
#ifndef __SUPERLU_CNAMES /* allow multiple inclusions */
#define __SUPERLU_CNAMES
#define ADD_ 0
#define ADD__ 1
#define NOCHANGE 2
#define UPCASE 3
#define OLD_CRAY 4
#define C_CALL 5
#ifdef UpCase
#define F77_CALL_C UPCASE
#endif
#ifdef NoChange
#define F77_CALL_C NOCHANGE
#endif
#ifdef Add_
#define F77_CALL_C ADD_
#endif
#ifdef Add__
#define F77_CALL_C ADD__
#endif
#ifdef _CRAY
#define F77_CALL_C OLD_CRAY
#endif
/* Default */
#ifndef F77_CALL_C
#define F77_CALL_C ADD_
#endif
#if (F77_CALL_C == ADD_)
/*
* These defines set up the naming scheme required to have a fortran 77
* routine call a C routine
* No redefinition necessary to have following Fortran to C interface:
* FORTRAN CALL C DECLARATION
* call dgemm(...) void dgemm_(...)
*
* This is the default.
*/
#endif
#if (F77_CALL_C == ADD__)
/*
* These defines set up the naming scheme required to have a fortran 77
* routine call a C routine
* for following Fortran to C interface:
* FORTRAN CALL C DECLARATION
* call dgemm(...) void dgemm__(...)
*/
/* BLAS */
#define sswap_ sswap__
#define saxpy_ saxpy__
#define sasum_ sasum__
#define isamax_ isamax__
#define scopy_ scopy__
#define sscal_ sscal__
#define sger_ sger__
#define snrm2_ snrm2__
#define ssymv_ ssymv__
#define sdot_ sdot__
#define saxpy_ saxpy__
#define ssyr2_ ssyr2__
#define srot_ srot__
#define sgemv_ sgemv__
#define strsv_ strsv__
#define sgemm_ sgemm__
#define strsm_ strsm__
#define dswap_ dswap__
#define daxpy_ daxpy__
#define dasum_ dasum__
#define idamax_ idamax__
#define dcopy_ dcopy__
#define dscal_ dscal__
#define dger_ dger__
#define dnrm2_ dnrm2__
#define dsymv_ dsymv__
#define ddot_ ddot__
#define dsyr2_ dsyr2__
#define drot_ drot__
#define dgemv_ dgemv__
#define dtrsv_ dtrsv__
#define dgemm_ dgemm__
#define dtrsm_ dtrsm__
#define cswap_ cswap__
#define caxpy_ caxpy__
#define scasum_ scasum__
#define icamax_ icamax__
#define ccopy_ ccopy__
#define cscal_ cscal__
#define scnrm2_ scnrm2__
#define caxpy_ caxpy__
#define cgemv_ cgemv__
#define ctrsv_ ctrsv__
#define cgemm_ cgemm__
#define ctrsm_ ctrsm__
#define cgerc_ cgerc__
#define chemv_ chemv__
#define cher2_ cher2__
#define zswap_ zswap__
#define zaxpy_ zaxpy__
#define dzasum_ dzasum__
#define izamax_ izamax__
#define zcopy_ zcopy__
#define zscal_ zscal__
#define dznrm2_ dznrm2__
#define zaxpy_ zaxpy__
#define zgemv_ zgemv__
#define ztrsv_ ztrsv__
#define zgemm_ zgemm__
#define ztrsm_ ztrsm__
#define zgerc_ zgerc__
#define zhemv_ zhemv__
#define zher2_ zher2__
/* LAPACK */
#define dlamch_ dlamch__
#define slamch_ slamch__
#define xerbla_ xerbla__
#define lsame_ lsame__
#define dlacon_ dlacon__
#define slacon_ slacon__
#define icmax1_ icmax1__
#define scsum1_ scsum1__
#define clacon_ clacon__
#define dzsum1_ dzsum1__
#define izmax1_ izmax1__
#define zlacon_ zlacon__
/* Fortran interface */
#define c_bridge_dgssv_ c_bridge_dgssv__
#define c_fortran_sgssv_ c_fortran_sgssv__
#define c_fortran_dgssv_ c_fortran_dgssv__
#define c_fortran_cgssv_ c_fortran_cgssv__
#define c_fortran_zgssv_ c_fortran_zgssv__
#endif
#if (F77_CALL_C == UPCASE)
/*
* These defines set up the naming scheme required to have a fortran 77
* routine call a C routine
* following Fortran to C interface:
* FORTRAN CALL C DECLARATION
* call dgemm(...) void DGEMM(...)
*/
/* BLAS */
#define sswap_ SSWAP
#define saxpy_ SAXPY
#define sasum_ SASUM
#define isamax_ ISAMAX
#define scopy_ SCOPY
#define sscal_ SSCAL
#define sger_ SGER
#define snrm2_ SNRM2
#define ssymv_ SSYMV
#define sdot_ SDOT
#define saxpy_ SAXPY
#define ssyr2_ SSYR2
#define srot_ SROT
#define sgemv_ SGEMV
#define strsv_ STRSV
#define sgemm_ SGEMM
#define strsm_ STRSM
#define dswap_ DSWAP
#define daxpy_ DAXPY
#define dasum_ DASUM
#define idamax_ IDAMAX
#define dcopy_ DCOPY
#define dscal_ DSCAL
#define dger_ DGER
#define dnrm2_ DNRM2
#define dsymv_ DSYMV
#define ddot_ DDOT
#define dsyr2_ DSYR2
#define drot_ DROT
#define dgemv_ DGEMV
#define dtrsv_ DTRSV
#define dgemm_ DGEMM
#define dtrsm_ DTRSM
#define cswap_ CSWAP
#define caxpy_ CAXPY
#define scasum_ SCASUM
#define icamax_ ICAMAX
#define ccopy_ CCOPY
#define cscal_ CSCAL
#define scnrm2_ SCNRM2
#define cgemv_ CGEMV
#define ctrsv_ CTRSV
#define cgemm_ CGEMM
#define ctrsm_ CTRSM
#define cgerc_ CGERC
#define chemv_ CHEMV
#define cher2_ CHER2
#define zswap_ ZSWAP
#define zaxpy_ ZAXPY
#define dzasum_ DZASUM
#define izamax_ IZAMAX
#define zcopy_ ZCOPY
#define zscal_ ZSCAL
#define dznrm2_ DZNRM2
#define zgemv_ ZGEMV
#define ztrsv_ ZTRSV
#define zgemm_ ZGEMM
#define ztrsm_ ZTRSM
#define zgerc_ ZGERC
#define zhemv_ ZHEMV
#define zher2_ ZHER2
/* LAPACK */
#define dlamch_ DLAMCH
#define slamch_ SLAMCH
#define xerbla_ XERBLA
#define lsame_ LSAME
#define dlacon_ DLACON
#define slacon_ SLACON
#define icmax1_ ICMAX1
#define scsum1_ SCSUM1
#define clacon_ CLACON
#define dzsum1_ DZSUM1
#define izmax1_ IZMAX1
#define zlacon_ ZLACON
/* Fortran interface */
#define c_bridge_dgssv_ C_BRIDGE_DGSSV
#define c_fortran_sgssv_ C_FORTRAN_SGSSV
#define c_fortran_dgssv_ C_FORTRAN_DGSSV
#define c_fortran_cgssv_ C_FORTRAN_CGSSV
#define c_fortran_zgssv_ C_FORTRAN_ZGSSV
#endif
#if (F77_CALL_C == OLD_CRAY)
/*
* These defines set up the naming scheme required to have a fortran 77
* routine call a C routine
* following Fortran to C interface:
* FORTRAN CALL C DECLARATION
* call dgemm(...) void SGEMM(...)
*/
/* BLAS */
#define sswap_ SSWAP
#define saxpy_ SAXPY
#define sasum_ SASUM
#define isamax_ ISAMAX
#define scopy_ SCOPY
#define sscal_ SSCAL
#define sger_ SGER
#define snrm2_ SNRM2
#define ssymv_ SSYMV
#define sdot_ SDOT
#define ssyr2_ SSYR2
#define srot_ SROT
#define sgemv_ SGEMV
#define strsv_ STRSV
#define sgemm_ SGEMM
#define strsm_ STRSM
#define dswap_ SSWAP
#define daxpy_ SAXPY
#define dasum_ SASUM
#define idamax_ ISAMAX
#define dcopy_ SCOPY
#define dscal_ SSCAL
#define dger_ SGER
#define dnrm2_ SNRM2
#define dsymv_ SSYMV
#define ddot_ SDOT
#define dsyr2_ SSYR2
#define drot_ SROT
#define dgemv_ SGEMV
#define dtrsv_ STRSV
#define dgemm_ SGEMM
#define dtrsm_ STRSM
#define cswap_ CSWAP
#define caxpy_ CAXPY
#define scasum_ SCASUM
#define icamax_ ICAMAX
#define ccopy_ CCOPY
#define cscal_ CSCAL
#define scnrm2_ SCNRM2
#define caxpy_ CAXPY
#define cgemv_ CGEMV
#define ctrsv_ CTRSV
#define cgemm_ CGEMM
#define ctrsm_ CTRSM
#define cgerc_ CGERC
#define chemv_ CHEMV
#define cher2_ CHER2
#define zswap_ ZSWAP
#define zaxpy_ ZAXPY
#define dzasum_ DZASUM
#define izamax_ IZAMAX
#define zcopy_ ZCOPY
#define zscal_ ZSCAL
#define dznrm2_ DZNRM2
#define zgemv_ ZGEMV
#define ztrsv_ ZTRSV
#define zgemm_ ZGEMM
#define ztrsm_ ZTRSM
#define zgerc_ ZGERC
#define zhemv_ ZHEMV
#define zher2_ ZHER2
/* LAPACK */
#define dlamch_ DLAMCH
#define slamch_ SLAMCH
#define xerbla_ XERBLA
#define lsame_ LSAME
#define dlacon_ DLACON
#define slacon_ SLACON
#define icmax1_ ICMAX1
#define scsum1_ SCSUM1
#define clacon_ CLACON
#define dzsum1_ DZSUM1
#define izmax1_ IZMAX1
#define zlacon_ ZLACON
/* Fortran interface */
#define c_bridge_dgssv_ C_BRIDGE_DGSSV
#define c_fortran_sgssv_ C_FORTRAN_SGSSV
#define c_fortran_dgssv_ C_FORTRAN_DGSSV
#define c_fortran_cgssv_ C_FORTRAN_CGSSV
#define c_fortran_zgssv_ C_FORTRAN_ZGSSV
#endif
#if (F77_CALL_C == NOCHANGE)
/*
* These defines set up the naming scheme required to have a fortran 77
* routine call a C routine
* for following Fortran to C interface:
* FORTRAN CALL C DECLARATION
* call dgemm(...) void dgemm(...)
*/
/* BLAS */
#define sswap_ sswap
#define saxpy_ saxpy
#define sasum_ sasum
#define isamax_ isamax
#define scopy_ scopy
#define sscal_ sscal
#define sger_ sger
#define snrm2_ snrm2
#define ssymv_ ssymv
#define sdot_ sdot
#define saxpy_ saxpy
#define ssyr2_ ssyr2
#define srot_ srot
#define sgemv_ sgemv
#define strsv_ strsv
#define sgemm_ sgemm
#define strsm_ strsm
#define dswap_ dswap
#define daxpy_ daxpy
#define dasum_ dasum
#define idamax_ idamax
#define dcopy_ dcopy
#define dscal_ dscal
#define dger_ dger
#define dnrm2_ dnrm2
#define dsymv_ dsymv
#define ddot_ ddot
#define dsyr2_ dsyr2
#define drot_ drot
#define dgemv_ dgemv
#define dtrsv_ dtrsv
#define dgemm_ dgemm
#define dtrsm_ dtrsm
#define cswap_ cswap
#define caxpy_ caxpy
#define scasum_ scasum
#define icamax_ icamax
#define ccopy_ ccopy
#define cscal_ cscal
#define scnrm2_ scnrm2
#define cgemv_ cgemv
#define ctrsv_ ctrsv
#define cgemm_ cgemm
#define ctrsm_ ctrsm
#define cgerc_ cgerc
#define chemv_ chemv
#define cher2_ cher2
#define zswap_ zswap
#define zaxpy_ zaxpy
#define dzasum_ dzasum
#define izamax_ izamax
#define zcopy_ zcopy
#define zscal_ zscal
#define dznrm2_ dznrm2
#define zgemv_ zgemv
#define ztrsv_ ztrsv
#define zgemm_ zgemm
#define ztrsm_ ztrsm
#define zgerc_ zgerc
#define zhemv_ zhemv
#define zher2_ zher2
/* LAPACK */
#define dlamch_ dlamch
#define slamch_ slamch
#define xerbla_ xerbla
#define lsame_ lsame
#define dlacon_ dlacon
#define slacon_ slacon
#define icmax1_ icmax1
#define scsum1_ scsum1
#define clacon_ clacon
#define dzsum1_ dzsum1
#define izmax1_ izmax1
#define zlacon_ zlacon
/* Fortran interface */
#define c_bridge_dgssv_ c_bridge_dgssv
#define c_fortran_sgssv_ c_fortran_sgssv
#define c_fortran_dgssv_ c_fortran_dgssv
#define c_fortran_cgssv_ c_fortran_cgssv
#define c_fortran_zgssv_ c_fortran_zgssv
#endif
#endif /* __SUPERLU_CNAMES */