#define EXP             d
/*  definition of type and intrinsic functions */
#define DCOMPLEX        complex(KIND=dp)
#define DREAL           real(KIND=dp)
#define SQROOT          dsqrt
#define REALPART        dreal
#define CONJUG          conjg

/*  definition of own types, etc */
#define XSP_MATRIX      ZSP_MATRIX
#define XSPMAT          zspmat
#define ACCESSDATA_XSP  accessdata_zsp
#define NEW_XSP         new_zsp
#define DEL_XSP         del_zsp
#define XSP_DATA        zsp_data
#define XSP_HANDLE      zsp_handle
#define XSP_LINKNODE    zsp_linknode
#define XINS_INIT       zins_init
#define XSP_INIT        zsp_init
#define XSP_FIRST       zsp_first
#define XSP_LAST        zsp_last
#define X_MATRIX        z_matrix
#define XMATRIX         zmatrix
#define X_MATRIX_start  z_matrix_start
#define X_ELEMENT_start z_element_start
#define X_INELEMENT     z_inelement
#define X_ELEMENT       z_element 
#define XPMATRIX        zpmatrix
#define XTYPES          ztypes


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

/*  definition of own routines */
#define XLMBV_BCO       zlmbv_bco
#define XLMBV_BDI       zlmbv_bdi
#define XLMBV_BSC       zlmbv_bsc
#define XLMBV_BSR       zlmbv_bsr
#define XLMBV_COO       zlmbv_coo
#define XLMBV_CSC       zlmbv_csc
#define XLMBV_CSR       zlmbv_csr
#define XLMBV_DIA       zlmbv_dia
#define XLMBV_VBR       zlmbv_vbr
#define XLSBV_BCO       zlsbv_bco
#define XLSBV_BDI       zlsbv_bdi
#define XLSBV_BSC       zlsbv_bsc
#define XLSBV_BSR       zlsbv_bsr
#define XLSBV_COO       zlsbv_coo
#define XLSBV_CSC       zlsbv_csc
#define XLSBV_CSR       zlsbv_csr
#define XLSBV_DIA       zlsbv_dia
#define XLSBV_VBR       zlsbv_vbr
#define XRMBV_BCO       zrmbv_bco
#define XRMBV_BDI       zrmbv_bdi
#define XRMBV_BSC       zrmbv_bsc
#define XRMBV_BSR       zrmbv_bsr
#define XRMBV_COO       zrmbv_coo
#define XRMBV_CSC       zrmbv_csc
#define XRMBV_CSR       zrmbv_csr
#define XRMBV_DIA       zrmbv_dia
#define XRMBV_VBR       zrmbv_vbr
#define XRSBV_BCO       zrsbv_bco
#define XRSBV_BDI       zrsbv_bdi
#define XRSBV_BSC       zrsbv_bsc
#define XRSBV_BSR       zrsbv_bsr
#define XRSBV_COO       zrsbv_coo
#define XRSBV_CSC       zrsbv_csc
#define XRSBV_CSR       zrsbv_csr
#define XRSBV_DIA       zrsbv_dia
#define XRSBV_VBR       zrsbv_vbr
#define XUSCR_BCO       zuscr_bco
#define XUSCR_BDI       zuscr_bdi
#define XUSCR_BSC       zuscr_bsc
#define XUSCR_BSR       zuscr_bsr
#define XUSCR_COO       zuscr_coo
#define XUSCR_CSC       zuscr_csc
#define XUSCR_CSR       zuscr_csr
#define XUSCR_DIA       zuscr_dia
#define XUSCR_VBR       zuscr_vbr
#define XUSMV           zusmv
#define XUSMM           zusmm
#define XUSSV           zussv
#define XUSSM           zussm
#define XBLOCK_MULT     zblock_mult_vec
#define XBLOCK_Z_MULT   zblock_Z_mult_vec
#define XBLOCK_T_MULT   zblock_T_mult_vec
#define XBLOCK_H_MULT   zblock_H_mult_vec
#define XINV_LL         zinvert_left_lower
#define XINV_T_LL       zinvert_T_left_lower
#define XINV_RU         zinvert_right_upper
#define XINV_T_RU       zinvert_T_right_upper
#define XBLOCK_R_MULT   zblock_r_mult_vec
#define XBLOCK_L_MULT   zblock_l_mult_vec
#define XINV_R_LL       zinvert_r_left_lower
#define XINV_L_LL       zinvert_l_left_lower
#define XINV_L_RU       zinvert_l_right_upper
#define XINV_R_RU       zinvert_r_right_upper
#define XUSDOT          zusdot
#define XUSAXPY         zusaxpy
#define XUSGA           zusga
#define XUSGZ           zusgz
#define XUSSC           zussc
#define XB_UP_ORDER     zb_up_order
#define XA_ROW_COL      zA_row_col
#define XDETECT_DIAG    zdetect_diag
#define XAB_ROW_COL     zAb_row_col
#define XDETECT_BDIAG   zdetect_bdiag
#define XPRE_COO2DIA    zpre_usconv_coo2dia
#define XPRE_DIA2COO    zpre_usconv_dia2coo
#define XPRE_BCO2BDI    zpre_usconv_bco2bdi
#define XPRE_BDI2BCO    zpre_usconv_bdi2bco 
#define XPRE_COO2CSR    zpre_usconv_coo2csr
#define XPRE_COO2CSC    zpre_usconv_coo2csc
#define XPRE_BCO2BSR    zpre_usconv_bco2bsr
#define XPRE_BCO2BSC    zpre_usconv_bco2bsc
#define XBCO2BDI        zusconv_bco2bdi
#define XBDI2BCO        zusconv_bdi2bco 
#define XCOO2CSR        zusconv_coo2csr
#define XCOO2CSC        zusconv_coo2csc
#define XBCO2BSR        zusconv_bco2bsr
#define XBCO2BSC        zusconv_bco2bsc
#define XCOO2DIA         zusconv_coo2dia
#define XDIA2COO         zusconv_dia2coo
#define XCSR2COO        zusconv_csr2coo
#define XCSC2COO        zusconv_csc2coo
#define XBSC2BCO        zusconv_bsc2bco
#define XBSR2BCO        zusconv_bsr2bco
#define NEW_X_MATRIX    new_z_matrix
#define DELOC_X_MATRIX  dealloc_z_matrix
#define XACCESS_MATRIX  zaccess_matrix
#define NEW_X_ELEMENT   new_z_element
#define X_ELEMENT_start z_element_start
#define DELOC_X_ELEMENT dealloc_z_element
#define XACCESS_ELEMENT zaccess_element
#define X_ELEMENT_NUM   z_element_num
#define X_DEALLOC       z_dealloc
#define XINS_entry      zINS_entry
#define XINS_bl_entr    zINS_bl_entr
#define XINS_block      zINS_block
#define XINS_varblock   zINS_varblock
#define XINS_varbl_entr zINS_varbl_entr
#define XUSCR_varend    zuscr_varend
#define XUSCR_normend   zuscr_normend
#define XUSCR_blockend  zuscr_blockend
#define XUSCR_BEGIN     zuscr_begin
#define XUSCR_BLOCK_BEGIN  zuscr_block_begin
#define XUSCR_V_B_BEGIN  zuscr_variable_block_begin
#define XUSCR_INSERT_ENTRY zuscr_insert_entry
#define XUSCR_INSERT_ENTRIES zuscr_insert_entries
#define XUSCR_INSERT_COL zuscr_insert_col
#define XUSCR_INSERT_ROW zuscr_insert_row
#define XUSCR_INSERT_CLIQUE zuscr_insert_clique
#define XUSCR_INSERT_BLOCK  zuscr_insert_block
#define XUSCR_END        zuscr_end
#define  XUSGP           zusgp
#define  XUSSP           zussp

