# This code was automatically generated by CWrap version 0.0.0

cdef extern from "pastix.h":

    complex cacos(complex)

    complex casin(complex)

    complex catan(complex)

    complex ccos(complex)

    complex csin(complex)

    complex ctan(complex)

    complex cacosh(complex)

    complex casinh(complex)

    complex catanh(complex)

    complex ccosh(complex)

    complex csinh(complex)

    complex ctanh(complex)

    complex cexp(complex)

    complex clog(complex)

    double cabs(complex)

    complex cpow(complex, complex)

    complex csqrt(complex)

    double carg(complex)

    double cimag(complex)

    complex conj(complex)

    complex cproj(complex)

    double creal(complex)

    complex cacosl(complex)

    complex casinl(complex)

    complex catanl(complex)

    complex ccosl(complex)

    complex csinl(complex)

    complex ctanl(complex)

    complex cacoshl(complex)

    complex casinhl(complex)

    complex catanhl(complex)

    complex ccoshl(complex)

    complex csinhl(complex)

    complex ctanhl(complex)

    complex cexpl(complex)

    complex clogl(complex)

    long double cabsl(complex)

    complex cpowl(complex, complex)

    complex csqrtl(complex)

    long double cargl(complex)

    long double cimagl(complex)

    complex conjl(complex)

    complex cprojl(complex)

    long double creall(complex)

    complex cacosf(complex)

    complex casinf(complex)

    complex catanf(complex)

    complex ccosf(complex)

    complex csinf(complex)

    complex ctanf(complex)

    complex cacoshf(complex)

    complex casinhf(complex)

    complex catanhf(complex)

    complex ccoshf(complex)

    complex csinhf(complex)

    complex ctanhf(complex)

    complex cexpf(complex)

    complex clogf(complex)

    float cabsf(complex)

    complex cpowf(complex, complex)

    complex csqrtf(complex)

    float cargf(complex)

    float cimagf(complex)

    complex conjf(complex)

    complex cprojf(complex)

    float crealf(complex)

    ctypedef int pastix_int_t

    ctypedef unsigned int pastix_uint_t

    ctypedef double pastix_float_t

    cdef struct pastix_data_t:
        pass

    void pastix(pastix_data_t **pastix_data, MPI_Comm pastix_comm, pastix_int_t n, pastix_int_t *colptr, pastix_int_t *row, pastix_float_t *avals, pastix_int_t *perm, pastix_int_t *invp, pastix_float_t *b, pastix_int_t rhs, pastix_int_t *iparm, double *dparm)

    void s_pastix(pastix_data_t **pastix_data, MPI_Comm pastix_comm, pastix_int_t n, pastix_int_t *colptr, pastix_int_t *row, float *avals, pastix_int_t *perm, pastix_int_t *invp, float *b, pastix_int_t rhs, pastix_int_t *iparm, double *dparm)

    void d_pastix(pastix_data_t **pastix_data, MPI_Comm pastix_comm, pastix_int_t n, pastix_int_t *colptr, pastix_int_t *row, double *avals, pastix_int_t *perm, pastix_int_t *invp, double *b, pastix_int_t rhs, pastix_int_t *iparm, double *dparm)

    void c_pastix(pastix_data_t **pastix_data, MPI_Comm pastix_comm, pastix_int_t n, pastix_int_t *colptr, pastix_int_t *row, complex *avals, pastix_int_t *perm, pastix_int_t *invp, complex *b, pastix_int_t rhs, pastix_int_t *iparm, double *dparm)

    void z_pastix(pastix_data_t **pastix_data, MPI_Comm pastix_comm, pastix_int_t n, pastix_int_t *colptr, pastix_int_t *row, complex *avals, pastix_int_t *perm, pastix_int_t *invp, complex *b, pastix_int_t rhs, pastix_int_t *iparm, double *dparm)

    void dpastix(pastix_data_t **pastix_data, MPI_Comm pastix_comm, pastix_int_t n, pastix_int_t *colptr, pastix_int_t *row, pastix_float_t *avals, pastix_int_t *loc2glob, pastix_int_t *perm, pastix_int_t *invp, pastix_float_t *b, pastix_int_t rhs, pastix_int_t *iparm, double *dparm)

    void s_dpastix(pastix_data_t **pastix_data, MPI_Comm pastix_comm, pastix_int_t n, pastix_int_t *colptr, pastix_int_t *row, float *avals, pastix_int_t *loc2glob, pastix_int_t *perm, pastix_int_t *invp, float *b, pastix_int_t rhs, pastix_int_t *iparm, double *dparm)

    void d_dpastix(pastix_data_t **pastix_data, MPI_Comm pastix_comm, pastix_int_t n, pastix_int_t *colptr, pastix_int_t *row, double *avals, pastix_int_t *loc2glob, pastix_int_t *perm, pastix_int_t *invp, double *b, pastix_int_t rhs, pastix_int_t *iparm, double *dparm)

    void c_dpastix(pastix_data_t **pastix_data, MPI_Comm pastix_comm, pastix_int_t n, pastix_int_t *colptr, pastix_int_t *row, complex *avals, pastix_int_t *loc2glob, pastix_int_t *perm, pastix_int_t *invp, complex *b, pastix_int_t rhs, pastix_int_t *iparm, double *dparm)

    void z_dpastix(pastix_data_t **pastix_data, MPI_Comm pastix_comm, pastix_int_t n, pastix_int_t *colptr, pastix_int_t *row, complex *avals, pastix_int_t *loc2glob, pastix_int_t *perm, pastix_int_t *invp, complex *b, pastix_int_t rhs, pastix_int_t *iparm, double *dparm)

    void pastix_bindThreads(pastix_data_t *pastix_data, pastix_int_t thrdnbr, pastix_int_t *bindtab)

    void s_pastix_bindThreads(pastix_data_t *pastix_data, pastix_int_t thrdnbr, pastix_int_t *bindtab)

    void d_pastix_bindThreads(pastix_data_t *pastix_data, pastix_int_t thrdnbr, pastix_int_t *bindtab)

    void c_pastix_bindThreads(pastix_data_t *pastix_data, pastix_int_t thrdnbr, pastix_int_t *bindtab)

    void z_pastix_bindThreads(pastix_data_t *pastix_data, pastix_int_t thrdnbr, pastix_int_t *bindtab)

    pastix_int_t pastix_checkMatrix(MPI_Comm pastix_comm, pastix_int_t verb, pastix_int_t flagsym, pastix_int_t flagcor, pastix_int_t n, pastix_int_t **colptr, pastix_int_t **row, pastix_float_t **avals, pastix_int_t **loc2glob, pastix_int_t dof)

    pastix_int_t s_pastix_checkMatrix(MPI_Comm pastix_comm, pastix_int_t verb, pastix_int_t flagsym, pastix_int_t flagcor, pastix_int_t n, pastix_int_t **colptr, pastix_int_t **row, float **avals, pastix_int_t **loc2glob, pastix_int_t dof)

    pastix_int_t d_pastix_checkMatrix(MPI_Comm pastix_comm, pastix_int_t verb, pastix_int_t flagsym, pastix_int_t flagcor, pastix_int_t n, pastix_int_t **colptr, pastix_int_t **row, double **avals, pastix_int_t **loc2glob, pastix_int_t dof)

    pastix_int_t c_pastix_checkMatrix(MPI_Comm pastix_comm, pastix_int_t verb, pastix_int_t flagsym, pastix_int_t flagcor, pastix_int_t n, pastix_int_t **colptr, pastix_int_t **row, complex **avals, pastix_int_t **loc2glob, pastix_int_t dof)

    pastix_int_t z_pastix_checkMatrix(MPI_Comm pastix_comm, pastix_int_t verb, pastix_int_t flagsym, pastix_int_t flagcor, pastix_int_t n, pastix_int_t **colptr, pastix_int_t **row, complex **avals, pastix_int_t **loc2glob, pastix_int_t dof)

    pastix_int_t pastix_getLocalNodeNbr(pastix_data_t **pastix_data)

    pastix_int_t s_pastix_getLocalNodeNbr(pastix_data_t **pastix_data)

    pastix_int_t d_pastix_getLocalNodeNbr(pastix_data_t **pastix_data)

    pastix_int_t c_pastix_getLocalNodeNbr(pastix_data_t **pastix_data)

    pastix_int_t z_pastix_getLocalNodeNbr(pastix_data_t **pastix_data)

    pastix_int_t pastix_getLocalNodeLst(pastix_data_t **pastix_data, pastix_int_t *nodelst)

    pastix_int_t s_pastix_getLocalNodeLst(pastix_data_t **pastix_data, pastix_int_t *nodelst)

    pastix_int_t d_pastix_getLocalNodeLst(pastix_data_t **pastix_data, pastix_int_t *nodelst)

    pastix_int_t c_pastix_getLocalNodeLst(pastix_data_t **pastix_data, pastix_int_t *nodelst)

    pastix_int_t z_pastix_getLocalNodeLst(pastix_data_t **pastix_data, pastix_int_t *nodelst)

    pastix_int_t pastix_getLocalUnknownNbr(pastix_data_t **pastix_data)

    pastix_int_t s_pastix_getLocalUnknownNbr(pastix_data_t **pastix_data)

    pastix_int_t d_pastix_getLocalUnknownNbr(pastix_data_t **pastix_data)

    pastix_int_t c_pastix_getLocalUnknownNbr(pastix_data_t **pastix_data)

    pastix_int_t z_pastix_getLocalUnknownNbr(pastix_data_t **pastix_data)

    pastix_int_t pastix_getLocalUnknownLst(pastix_data_t **pastix_data, pastix_int_t *unknownlst)

    pastix_int_t s_pastix_getLocalUnknownLst(pastix_data_t **pastix_data, pastix_int_t *unknownlst)

    pastix_int_t d_pastix_getLocalUnknownLst(pastix_data_t **pastix_data, pastix_int_t *unknownlst)

    pastix_int_t c_pastix_getLocalUnknownLst(pastix_data_t **pastix_data, pastix_int_t *unknownlst)

    pastix_int_t z_pastix_getLocalUnknownLst(pastix_data_t **pastix_data, pastix_int_t *unknownlst)

    pastix_int_t pastix_setSchurUnknownList(pastix_data_t *pastix_data, pastix_int_t n, pastix_int_t *list)

    pastix_int_t s_pastix_setSchurUnknownList(pastix_data_t *pastix_data, pastix_int_t n, pastix_int_t *list)

    pastix_int_t d_pastix_setSchurUnknownList(pastix_data_t *pastix_data, pastix_int_t n, pastix_int_t *list)

    pastix_int_t c_pastix_setSchurUnknownList(pastix_data_t *pastix_data, pastix_int_t n, pastix_int_t *list)

    pastix_int_t z_pastix_setSchurUnknownList(pastix_data_t *pastix_data, pastix_int_t n, pastix_int_t *list)

    pastix_int_t pastix_getSchurLocalNodeNbr(pastix_data_t *pastix_data, pastix_int_t *nodeNbr)

    pastix_int_t s_pastix_getSchurLocalNodeNbr(pastix_data_t *pastix_data, pastix_int_t *nodeNbr)

    pastix_int_t d_pastix_getSchurLocalNodeNbr(pastix_data_t *pastix_data, pastix_int_t *nodeNbr)

    pastix_int_t c_pastix_getSchurLocalNodeNbr(pastix_data_t *pastix_data, pastix_int_t *nodeNbr)

    pastix_int_t z_pastix_getSchurLocalNodeNbr(pastix_data_t *pastix_data, pastix_int_t *nodeNbr)

    pastix_int_t pastix_getSchurLocalUnkownNbr(pastix_data_t *pastix_data, pastix_int_t *unknownNbr)

    pastix_int_t s_pastix_getSchurLocalUnkownNbr(pastix_data_t *pastix_data, pastix_int_t *unknownNbr)

    pastix_int_t d_pastix_getSchurLocalUnkownNbr(pastix_data_t *pastix_data, pastix_int_t *unknownNbr)

    pastix_int_t c_pastix_getSchurLocalUnkownNbr(pastix_data_t *pastix_data, pastix_int_t *unknownNbr)

    pastix_int_t z_pastix_getSchurLocalUnkownNbr(pastix_data_t *pastix_data, pastix_int_t *unknownNbr)

    pastix_int_t pastix_getSchurLocalNodeList(pastix_data_t *pastix_data, pastix_int_t *nodes)

    pastix_int_t s_pastix_getSchurLocalNodeList(pastix_data_t *pastix_data, pastix_int_t *nodes)

    pastix_int_t d_pastix_getSchurLocalNodeList(pastix_data_t *pastix_data, pastix_int_t *nodes)

    pastix_int_t c_pastix_getSchurLocalNodeList(pastix_data_t *pastix_data, pastix_int_t *nodes)

    pastix_int_t z_pastix_getSchurLocalNodeList(pastix_data_t *pastix_data, pastix_int_t *nodes)

    pastix_int_t pastix_getSchurLocalUnknownList(pastix_data_t *pastix_data, pastix_int_t *unknowns)

    pastix_int_t s_pastix_getSchurLocalUnknownList(pastix_data_t *pastix_data, pastix_int_t *unknowns)

    pastix_int_t d_pastix_getSchurLocalUnknownList(pastix_data_t *pastix_data, pastix_int_t *unknowns)

    pastix_int_t c_pastix_getSchurLocalUnknownList(pastix_data_t *pastix_data, pastix_int_t *unknowns)

    pastix_int_t z_pastix_getSchurLocalUnknownList(pastix_data_t *pastix_data, pastix_int_t *unknowns)

    pastix_int_t pastix_setSchurArray(pastix_data_t *pastix_data, pastix_float_t *array)

    pastix_int_t s_pastix_setSchurArray(pastix_data_t *pastix_data, float *array)

    pastix_int_t d_pastix_setSchurArray(pastix_data_t *pastix_data, double *array)

    pastix_int_t c_pastix_setSchurArray(pastix_data_t *pastix_data, complex *array)

    pastix_int_t z_pastix_setSchurArray(pastix_data_t *pastix_data, complex *array)

    pastix_int_t pastix_getSchur(pastix_data_t *pastix_data, pastix_float_t *schur)

    pastix_int_t s_pastix_getSchur(pastix_data_t *pastix_data, float *schur)

    pastix_int_t d_pastix_getSchur(pastix_data_t *pastix_data, double *schur)

    pastix_int_t c_pastix_getSchur(pastix_data_t *pastix_data, complex *schur)

    pastix_int_t z_pastix_getSchur(pastix_data_t *pastix_data, complex *schur)

    void pastix_initParam(pastix_int_t *iparm, double *dparm)

    void s_pastix_initParam(pastix_int_t *iparm, double *dparm)

    void d_pastix_initParam(pastix_int_t *iparm, double *dparm)

    void c_pastix_initParam(pastix_int_t *iparm, double *dparm)

    void z_pastix_initParam(pastix_int_t *iparm, double *dparm)

    void pastix_unscale(pastix_data_t *pastix_data, pastix_int_t sym)

    void s_pastix_unscale(pastix_data_t *pastix_data, pastix_int_t sym)

    void d_pastix_unscale(pastix_data_t *pastix_data, pastix_int_t sym)

    void c_pastix_unscale(pastix_data_t *pastix_data, pastix_int_t sym)

    void z_pastix_unscale(pastix_data_t *pastix_data, pastix_int_t sym)

    unsigned long pastix_getMemoryUsage()

    unsigned long s_pastix_getMemoryUsage()

    unsigned long d_pastix_getMemoryUsage()

    unsigned long c_pastix_getMemoryUsage()

    unsigned long z_pastix_getMemoryUsage()

    unsigned long pastix_getMaxMemoryUsage()

    unsigned long s_pastix_getMaxMemoryUsage()

    unsigned long d_pastix_getMaxMemoryUsage()

    unsigned long c_pastix_getMaxMemoryUsage()

    unsigned long z_pastix_getMaxMemoryUsage()

    cdef enum IPARM_ACCESS:
        IPARM_MODIFY_PARAMETER
        IPARM_START_TASK
        IPARM_END_TASK
        IPARM_VERBOSE
        IPARM_DOF_NBR
        IPARM_ITERMAX
        IPARM_MATRIX_VERIFICATION
        IPARM_MC64
        IPARM_ONLY_RAFF
        IPARM_CSCD_CORRECT
        IPARM_NBITER
        IPARM_TRACEFMT
        IPARM_GRAPHDIST
        IPARM_AMALGAMATION_LEVEL
        IPARM_ORDERING
        IPARM_DEFAULT_ORDERING
        IPARM_ORDERING_SWITCH_LEVEL
        IPARM_ORDERING_CMIN
        IPARM_ORDERING_CMAX
        IPARM_ORDERING_FRAT
        IPARM_STATIC_PIVOTING
        IPARM_METIS_PFACTOR
        IPARM_NNZEROS
        IPARM_ALLOCATED_TERMS
        IPARM_BASEVAL
        IPARM_MIN_BLOCKSIZE
        IPARM_MAX_BLOCKSIZE
        IPARM_SCHUR
        IPARM_ISOLATE_ZEROS
        IPARM_RHSD_CHECK
        IPARM_FACTORIZATION
        IPARM_NNZEROS_BLOCK_LOCAL
        IPARM_CPU_BY_NODE
        IPARM_BINDTHRD
        IPARM_THREAD_NBR
        IPARM_DISTRIBUTION_LEVEL
        IPARM_LEVEL_OF_FILL
        IPARM_IO_STRATEGY
        IPARM_RHS_MAKING
        IPARM_REFINEMENT
        IPARM_SYM
        IPARM_INCOMPLETE
        IPARM_ABS
        IPARM_ESP
        IPARM_GMRES_IM
        IPARM_FREE_CSCUSER
        IPARM_FREE_CSCPASTIX
        IPARM_OOC_LIMIT
        IPARM_OOC_THREAD
        IPARM_OOC_ID
        IPARM_NB_SMP_NODE_USED
        IPARM_THREAD_COMM_MODE
        IPARM_NB_THREAD_COMM
        IPARM_FILL_MATRIX
        IPARM_INERTIA
        IPARM_ESP_NBTASKS
        IPARM_ESP_THRESHOLD
        IPARM_DOF_COST
        IPARM_MURGE_REFINEMENT
        IPARM_STARPU
        IPARM_AUTOSPLIT_COMM
        IPARM_FLOAT
        IPARM_PID
        IPARM_ERROR_NUMBER
        IPARM_CUDA_NBR
        IPARM_TRANSPOSE_SOLVE
        IPARM_STARPU_CTX_DEPTH
        IPARM_STARPU_CTX_NBR
        IPARM_PRODUCE_STATS
        IPARM_SIZE

    cdef enum DPARM_ACCESS:
        DPARM_FILL_IN
        DPARM_MEM_MAX
        DPARM_EPSILON_REFINEMENT
        DPARM_RELATIVE_ERROR
        DPARM_SCALED_RESIDUAL
        DPARM_EPSILON_MAGN_CTRL
        DPARM_ANALYZE_TIME
        DPARM_PRED_FACT_TIME
        DPARM_FACT_TIME
        DPARM_SOLV_TIME
        DPARM_FACT_FLOPS
        DPARM_SOLV_FLOPS
        DPARM_RAFF_TIME
        DPARM_SIZE

    cdef enum API_TASK:
        API_TASK_INIT
        API_TASK_ORDERING
        API_TASK_SYMBFACT
        API_TASK_ANALYSE
        API_TASK_NUMFACT
        API_TASK_SOLVE
        API_TASK_REFINE
        API_TASK_CLEAN

    cdef enum API_TASK_OLD:
        API_TASK_SCOTCH
        API_TASK_FAX
        API_TASK_BLEND
        API_TASK_SOPALIN
        API_TASK_UPDOWN
        API_TASK_REFINEMENT

    cdef enum API_VERBOSE:
        API_VERBOSE_NOT
        API_VERBOSE_NO
        API_VERBOSE_YES
        API_VERBOSE_CHATTERBOX
        API_VERBOSE_UNBEARABLE

    cdef enum API_IO:
        API_IO_NO
        API_IO_LOAD
        API_IO_SAVE
        API_IO_LOAD_GRAPH
        API_IO_SAVE_GRAPH
        API_IO_LOAD_CSC
        API_IO_SAVE_CSC

    cdef enum API_RHS:
        API_RHS_B
        API_RHS_1
        API_RHS_I
        API_RHS_0

    cdef enum API_RAF:
        API_RAF_GMRES
        API_RAF_GRAD
        API_RAF_PIVOT
        API_RAF_BCGSTAB

    cdef enum API_FACT:
        API_FACT_LLT
        API_FACT_LDLT
        API_FACT_LU
        API_FACT_LDLH

    cdef enum API_SYM:
        API_SYM_YES
        API_SYM_NO
        API_SYM_HER

    cdef enum API_ERASE_CSC:
        API_CSC_PRESERVE
        API_CSC_FREE

    cdef enum API_THREAD_MODE:
        API_THREAD_MULTIPLE
        API_THREAD_FUNNELED
        API_THREAD_COMM_ONE
        API_THREAD_COMM_DEFINED
        API_THREAD_COMM_NBPROC

    cdef enum API_BIND_MODE:
        API_BIND_NO
        API_BIND_AUTO
        API_BIND_TAB

    cdef enum API_BOOLEAN:
        API_NO
        API_YES

    cdef enum API_TRACEFMT:
        API_TRACE_PICL
        API_TRACE_PAJE
        API_TRACE_HUMREAD
        API_TRACE_UNFORMATED

    cdef enum API_ORDER:
        API_ORDER_SCOTCH
        API_ORDER_METIS
        API_ORDER_PERSONAL
        API_ORDER_LOAD

    cdef enum API_FLOAT:
        API_REALSINGLE
        API_REALDOUBLE
        API_COMPLEXSINGLE
        API_COMPLEXDOUBLE

    cdef enum MODULES:
        MOD_UNKNOWN
        MOD_SOPALIN
        MOD_BLEND
        MOD_SCOTCH
        MOD_FAX
        MOD_ORDER
        MOD_COMMON
        MOD_SI
        MOD_GRAPH
        MOD_SYMBOL
        MOD_KASS
        MOD_BUBBLE
        MOD_MURGE

    cdef enum ERR_NUMBERS:
        NO_ERR
        UNKNOWN_ERR
        ALLOC_ERR
        ASSERT_ERR
        NOTIMPLEMENTED_ERR
        OUTOFMEMORY_ERR
        THREAD_ERR
        INTERNAL_ERR
        BADPARAMETER_ERR
        FILE_ERR
        BAD_DEFINE_ERR
        INTEGER_TYPE_ERR
        IO_ERR
        MATRIX_ERR
        FLOAT_TYPE_ERR
        STEP_ORDER_ERR
        MPI_ERR


