#define EXP             e
/*  definition of type and intrinsic functions */
#define DCOMPLEX        complex(KIND=sp)
#define DREAL           real(KIND=sp) 
#define SQROOT          sqrt
#define REALPART        real
#define CONJUG          conjg

/*  definition of own types */
#define XSP_MATRIX      CSP_MATRIX
#define XSPMAT          cspmat
#define ACCESSDATA_XSP  accessdata_csp
#define NEW_XSP         new_csp
#define DEL_XSP         del_csp
#define XSP_DATA        csp_data
#define XSP_HANDLE      csp_handle
#define XSP_LINKNODE    csp_linknode
#define XINS_INIT       cins_init
#define XSP_INIT        csp_init
#define XSP_FIRST       csp_first
#define XSP_LAST        csp_last
#define X_MATRIX        c_matrix
#define XMATRIX         cmatrix
#define X_MATRIX_start  c_matrix_start
#define X_ELEMENT_start c_element_start
#define X_INELEMENT     c_inelement
#define X_ELEMENT       c_element 
#define XPMATRIX        cpmatrix
#define XTYPES          ctypes

/* definition of the constants */
#define ZZERO           (0.0e0, 0.0e0)
#define ZONE            (1.0e0, 0.0e0)
#define ZEROREAL        0.0e0
#define ONEREAL         1.0e0

/*  definition of own routines */
#define XLMBV_BCO       clmbv_bco
#define XLMBV_BDI       clmbv_bdi
#define XLMBV_BSC       clmbv_bsc
#define XLMBV_BSR       clmbv_bsr
#define XLMBV_COO       clmbv_coo
#define XLMBV_CSC       clmbv_csc
#define XLMBV_CSR       clmbv_csr
#define XLMBV_DIA       clmbv_dia
#define XLMBV_VBR       clmbv_vbr
#define XLSBV_BCO       clsbv_bco
#define XLSBV_BDI       clsbv_bdi
#define XLSBV_BSC       clsbv_bsc
#define XLSBV_BSR       clsbv_bsr
#define XLSBV_COO       clsbv_coo
#define XLSBV_CSC       clsbv_csc
#define XLSBV_CSR       clsbv_csr
#define XLSBV_DIA       clsbv_dia
#define XLSBV_VBR       clsbv_vbr
#define XRMBV_BCO       crmbv_bco
#define XRMBV_BDI       crmbv_bdi
#define XRMBV_BSC       crmbv_bsc
#define XRMBV_BSR       crmbv_bsr
#define XRMBV_COO       crmbv_coo
#define XRMBV_CSC       crmbv_csc
#define XRMBV_CSR       crmbv_csr
#define XRMBV_DIA       crmbv_dia
#define XRMBV_VBR       crmbv_vbr
#define XRSBV_BCO       crsbv_bco
#define XRSBV_BDI       crsbv_bdi
#define XRSBV_BSC       crsbv_bsc
#define XRSBV_BSR       crsbv_bsr
#define XRSBV_COO       crsbv_coo
#define XRSBV_CSC       crsbv_csc
#define XRSBV_CSR       crsbv_csr
#define XRSBV_DIA       crsbv_dia
#define XRSBV_VBR       crsbv_vbr
#define XUSCR_BCO       cuscr_bco
#define XUSCR_BDI       cuscr_bdi
#define XUSCR_BSC       cuscr_bsc
#define XUSCR_BSR       cuscr_bsr
#define XUSCR_COO       cuscr_coo
#define XUSCR_CSC       cuscr_csc
#define XUSCR_CSR       cuscr_csr
#define XUSCR_DIA       cuscr_dia
#define XUSCR_VBR       cuscr_vbr
#define XUSMV           cusmv
#define XUSMM           cusmm
#define XUSSV           cussv
#define XUSSM           cussm
#define XBLOCK_MULT     cblock_mult_vec
#define XBLOCK_Z_MULT   cblock_Z_mult_vec
#define XBLOCK_T_MULT   cblock_T_mult_vec
#define XBLOCK_H_MULT   cblock_H_mult_vec
#define XINV_LL         cinvert_left_lower
#define XINV_T_LL       cinvert_T_left_lower
#define XINV_RU         cinvert_right_upper
#define XINV_T_RU       cinvert_T_right_upper
#define XBLOCK_R_MULT   cblock_r_mult_vec
#define XBLOCK_L_MULT   cblock_l_mult_vec
#define XINV_R_LL       cinvert_r_left_lower
#define XINV_L_LL       cinvert_l_left_lower
#define XINV_L_RU       cinvert_l_right_upper
#define XINV_R_RU       cinvert_r_right_upper
#define XUSDOT          cusdot
#define XUSAXPY         cusaxpy
#define XUSGA           cusga
#define XUSGZ           cusgz
#define XUSSC           cussc
#define XB_UP_ORDER     cb_up_order
#define XA_ROW_COL      cA_row_col
#define XDETECT_DIAG    cdetect_diag
#define XAB_ROW_COL     cAb_row_col
#define XDETECT_BDIAG   cdetect_bdiag
#define XPRE_COO2DIA    cpre_usconv_coo2dia
#define XPRE_DIA2COO    cpre_usconv_dia2coo
#define XPRE_BCO2BDI    cpre_usconv_bco2bdi
#define XPRE_BDI2BCO    cpre_usconv_bdi2bco 
#define XPRE_COO2CSR    cpre_usconv_coo2csr
#define XPRE_COO2CSC    cpre_usconv_coo2csc
#define XPRE_BCO2BSR    cpre_usconv_bco2bsr
#define XPRE_BCO2BSC    cpre_usconv_bco2bsc
#define XBCO2BDI        cusconv_bco2bdi
#define XBDI2BCO        cusconv_bdi2bco 
#define XCOO2CSR        cusconv_coo2csr
#define XCOO2CSC        cusconv_coo2csc
#define XBCO2BSR        cusconv_bco2bsr
#define XBCO2BSC        cusconv_bco2bsc
#define XCOO2DIA         cusconv_coo2dia
#define XDIA2COO         cusconv_dia2coo
#define XCSR2COO        cusconv_csr2coo
#define XCSC2COO        cusconv_csc2coo
#define XBSC2BCO        cusconv_bsc2bco
#define XBSR2BCO        cusconv_bsr2bco
#define NEW_X_MATRIX    new_c_matrix
#define DELOC_X_MATRIX  dealloc_c_matrix
#define XACCESS_MATRIX  caccess_matrix
#define NEW_X_ELEMENT   new_c_element
#define DELOC_X_ELEMENT dealloc_c_element
#define XACCESS_ELEMENT caccess_element
#define X_ELEMENT_NUM   c_element_num
#define X_DEALLOC       c_dealloc
#define XINS_entry      cINS_entry
#define XINS_block      cINS_block
#define XINS_bl_entr    cINS_bl_entr
#define XINS_varblock   cINS_varblock
#define XINS_varbl_entr cINS_varbl_entr
#define XUSCR_varend    cuscr_varend
#define XUSCR_normend   cuscr_normend
#define XUSCR_blockend  cuscr_blockend
#define XUSCR_BEGIN     cuscr_begin
#define XUSCR_BLOCK_BEGIN  cuscr_block_begin
#define XUSCR_V_B_BEGIN  cuscr_variable_block_begin
#define XUSCR_INSERT_ENTRY cuscr_insert_entry
#define  XUSCR_INSERT_ENTRIES cuscr_insert_entries
#define XUSCR_INSERT_COL cuscr_insert_col
#define XUSCR_INSERT_ROW cuscr_insert_row
#define XUSCR_INSERT_CLIQUE cuscr_insert_clique
#define XUSCR_INSERT_BLOCK  cuscr_insert_block
#define XUSCR_END        cuscr_end
#define  XUSGP           cusgp
#define  XUSSP           cussp
