/* Generated by Cython 0.20.2 on Fri Aug  1 14:04:51 2014 */

#define PY_SSIZE_T_CLEAN
#ifndef CYTHON_USE_PYLONG_INTERNALS
#ifdef PYLONG_BITS_IN_DIGIT
#define CYTHON_USE_PYLONG_INTERNALS 0
#else
#include "pyconfig.h"
#ifdef PYLONG_BITS_IN_DIGIT
#define CYTHON_USE_PYLONG_INTERNALS 1
#else
#define CYTHON_USE_PYLONG_INTERNALS 0
#endif
#endif
#endif
#include "Python.h"
#ifndef Py_PYTHON_H
    #error Python headers needed to compile C extensions, please install development version of Python.
#elif PY_VERSION_HEX < 0x02040000
    #error Cython requires Python 2.4+.
#else
#define CYTHON_ABI "0_20_2"
#include <stddef.h> /* For offsetof */
#ifndef offsetof
#define offsetof(type, member) ( (size_t) & ((type*)0) -> member )
#endif
#if !defined(WIN32) && !defined(MS_WINDOWS)
  #ifndef __stdcall
    #define __stdcall
  #endif
  #ifndef __cdecl
    #define __cdecl
  #endif
  #ifndef __fastcall
    #define __fastcall
  #endif
#endif
#ifndef DL_IMPORT
  #define DL_IMPORT(t) t
#endif
#ifndef DL_EXPORT
  #define DL_EXPORT(t) t
#endif
#ifndef PY_LONG_LONG
  #define PY_LONG_LONG LONG_LONG
#endif
#ifndef Py_HUGE_VAL
  #define Py_HUGE_VAL HUGE_VAL
#endif
#ifdef PYPY_VERSION
#define CYTHON_COMPILING_IN_PYPY 1
#define CYTHON_COMPILING_IN_CPYTHON 0
#else
#define CYTHON_COMPILING_IN_PYPY 0
#define CYTHON_COMPILING_IN_CPYTHON 1
#endif
#if CYTHON_COMPILING_IN_PYPY && PY_VERSION_HEX < 0x02070600
#define Py_OptimizeFlag 0
#endif
#if PY_VERSION_HEX < 0x02050000
  typedef int Py_ssize_t;
  #define PY_SSIZE_T_MAX INT_MAX
  #define PY_SSIZE_T_MIN INT_MIN
  #define PY_FORMAT_SIZE_T ""
  #define CYTHON_FORMAT_SSIZE_T ""
  #define PyInt_FromSsize_t(z) PyInt_FromLong(z)
  #define PyInt_AsSsize_t(o)   __Pyx_PyInt_As_int(o)
  #define PyNumber_Index(o)    ((PyNumber_Check(o) && !PyFloat_Check(o)) ? PyNumber_Int(o) : \
                                (PyErr_Format(PyExc_TypeError, \
                                              "expected index value, got %.200s", Py_TYPE(o)->tp_name), \
                                 (PyObject*)0))
  #define __Pyx_PyIndex_Check(o) (PyNumber_Check(o) && !PyFloat_Check(o) && \
                                  !PyComplex_Check(o))
  #define PyIndex_Check __Pyx_PyIndex_Check
  #define PyErr_WarnEx(category, message, stacklevel) PyErr_Warn(category, message)
  #define __PYX_BUILD_PY_SSIZE_T "i"
#else
  #define __PYX_BUILD_PY_SSIZE_T "n"
  #define CYTHON_FORMAT_SSIZE_T "z"
  #define __Pyx_PyIndex_Check PyIndex_Check
#endif
#if PY_VERSION_HEX < 0x02060000
  #define Py_REFCNT(ob) (((PyObject*)(ob))->ob_refcnt)
  #define Py_TYPE(ob)   (((PyObject*)(ob))->ob_type)
  #define Py_SIZE(ob)   (((PyVarObject*)(ob))->ob_size)
  #define PyVarObject_HEAD_INIT(type, size) \
          PyObject_HEAD_INIT(type) size,
  #define PyType_Modified(t)
  typedef struct {
     void *buf;
     PyObject *obj;
     Py_ssize_t len;
     Py_ssize_t itemsize;
     int readonly;
     int ndim;
     char *format;
     Py_ssize_t *shape;
     Py_ssize_t *strides;
     Py_ssize_t *suboffsets;
     void *internal;
  } Py_buffer;
  #define PyBUF_SIMPLE 0
  #define PyBUF_WRITABLE 0x0001
  #define PyBUF_FORMAT 0x0004
  #define PyBUF_ND 0x0008
  #define PyBUF_STRIDES (0x0010 | PyBUF_ND)
  #define PyBUF_C_CONTIGUOUS (0x0020 | PyBUF_STRIDES)
  #define PyBUF_F_CONTIGUOUS (0x0040 | PyBUF_STRIDES)
  #define PyBUF_ANY_CONTIGUOUS (0x0080 | PyBUF_STRIDES)
  #define PyBUF_INDIRECT (0x0100 | PyBUF_STRIDES)
  #define PyBUF_RECORDS (PyBUF_STRIDES | PyBUF_FORMAT | PyBUF_WRITABLE)
  #define PyBUF_FULL (PyBUF_INDIRECT | PyBUF_FORMAT | PyBUF_WRITABLE)
  typedef int (*getbufferproc)(PyObject *, Py_buffer *, int);
  typedef void (*releasebufferproc)(PyObject *, Py_buffer *);
#endif
#if PY_MAJOR_VERSION < 3
  #define __Pyx_BUILTIN_MODULE_NAME "__builtin__"
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
          PyCode_New(a+k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
  #define __Pyx_DefaultClassType PyClass_Type
#else
  #define __Pyx_BUILTIN_MODULE_NAME "builtins"
  #define __Pyx_PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos) \
          PyCode_New(a, k, l, s, f, code, c, n, v, fv, cell, fn, name, fline, lnos)
  #define __Pyx_DefaultClassType PyType_Type
#endif
#if PY_VERSION_HEX < 0x02060000
  #define PyUnicode_FromString(s) PyUnicode_Decode(s, strlen(s), "UTF-8", "strict")
#endif
#if PY_MAJOR_VERSION >= 3
  #define Py_TPFLAGS_CHECKTYPES 0
  #define Py_TPFLAGS_HAVE_INDEX 0
#endif
#if (PY_VERSION_HEX < 0x02060000) || (PY_MAJOR_VERSION >= 3)
  #define Py_TPFLAGS_HAVE_NEWBUFFER 0
#endif
#if PY_VERSION_HEX < 0x02060000
  #define Py_TPFLAGS_HAVE_VERSION_TAG 0
#endif
#if PY_VERSION_HEX < 0x02060000 && !defined(Py_TPFLAGS_IS_ABSTRACT)
  #define Py_TPFLAGS_IS_ABSTRACT 0
#endif
#if PY_VERSION_HEX < 0x030400a1 && !defined(Py_TPFLAGS_HAVE_FINALIZE)
  #define Py_TPFLAGS_HAVE_FINALIZE 0
#endif
#if PY_VERSION_HEX > 0x03030000 && defined(PyUnicode_KIND)
  #define CYTHON_PEP393_ENABLED 1
  #define __Pyx_PyUnicode_READY(op)       (likely(PyUnicode_IS_READY(op)) ? \
                                              0 : _PyUnicode_Ready((PyObject *)(op)))
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_LENGTH(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) PyUnicode_READ_CHAR(u, i)
  #define __Pyx_PyUnicode_KIND(u)         PyUnicode_KIND(u)
  #define __Pyx_PyUnicode_DATA(u)         PyUnicode_DATA(u)
  #define __Pyx_PyUnicode_READ(k, d, i)   PyUnicode_READ(k, d, i)
#else
  #define CYTHON_PEP393_ENABLED 0
  #define __Pyx_PyUnicode_READY(op)       (0)
  #define __Pyx_PyUnicode_GET_LENGTH(u)   PyUnicode_GET_SIZE(u)
  #define __Pyx_PyUnicode_READ_CHAR(u, i) ((Py_UCS4)(PyUnicode_AS_UNICODE(u)[i]))
  #define __Pyx_PyUnicode_KIND(u)         (sizeof(Py_UNICODE))
  #define __Pyx_PyUnicode_DATA(u)         ((void*)PyUnicode_AS_UNICODE(u))
  #define __Pyx_PyUnicode_READ(k, d, i)   ((void)(k), (Py_UCS4)(((Py_UNICODE*)d)[i]))
#endif
#if CYTHON_COMPILING_IN_PYPY
  #define __Pyx_PyUnicode_Concat(a, b)      PyNumber_Add(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  PyNumber_Add(a, b)
#else
  #define __Pyx_PyUnicode_Concat(a, b)      PyUnicode_Concat(a, b)
  #define __Pyx_PyUnicode_ConcatSafe(a, b)  ((unlikely((a) == Py_None) || unlikely((b) == Py_None)) ? \
      PyNumber_Add(a, b) : __Pyx_PyUnicode_Concat(a, b))
#endif
#define __Pyx_PyString_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : __Pyx_PyString_Format(a, b))
#define __Pyx_PyUnicode_FormatSafe(a, b)  ((unlikely((a) == Py_None)) ? PyNumber_Remainder(a, b) : PyUnicode_Format(a, b))
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyString_Format(a, b)  PyUnicode_Format(a, b)
#else
  #define __Pyx_PyString_Format(a, b)  PyString_Format(a, b)
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBaseString_Type            PyUnicode_Type
  #define PyStringObject               PyUnicodeObject
  #define PyString_Type                PyUnicode_Type
  #define PyString_Check               PyUnicode_Check
  #define PyString_CheckExact          PyUnicode_CheckExact
#endif
#if PY_VERSION_HEX < 0x02060000
  #define PyBytesObject                PyStringObject
  #define PyBytes_Type                 PyString_Type
  #define PyBytes_Check                PyString_Check
  #define PyBytes_CheckExact           PyString_CheckExact
  #define PyBytes_FromString           PyString_FromString
  #define PyBytes_FromStringAndSize    PyString_FromStringAndSize
  #define PyBytes_FromFormat           PyString_FromFormat
  #define PyBytes_DecodeEscape         PyString_DecodeEscape
  #define PyBytes_AsString             PyString_AsString
  #define PyBytes_AsStringAndSize      PyString_AsStringAndSize
  #define PyBytes_Size                 PyString_Size
  #define PyBytes_AS_STRING            PyString_AS_STRING
  #define PyBytes_GET_SIZE             PyString_GET_SIZE
  #define PyBytes_Repr                 PyString_Repr
  #define PyBytes_Concat               PyString_Concat
  #define PyBytes_ConcatAndDel         PyString_ConcatAndDel
#endif
#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyBaseString_Check(obj) PyUnicode_Check(obj)
  #define __Pyx_PyBaseString_CheckExact(obj) PyUnicode_CheckExact(obj)
#else
  #define __Pyx_PyBaseString_Check(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj) || \
                                         PyString_Check(obj) || PyUnicode_Check(obj))
  #define __Pyx_PyBaseString_CheckExact(obj) (PyString_CheckExact(obj) || PyUnicode_CheckExact(obj))
#endif
#if PY_VERSION_HEX < 0x02060000
  #define PySet_Check(obj)             PyObject_TypeCheck(obj, &PySet_Type)
  #define PyFrozenSet_Check(obj)       PyObject_TypeCheck(obj, &PyFrozenSet_Type)
#endif
#ifndef PySet_CheckExact
  #define PySet_CheckExact(obj)        (Py_TYPE(obj) == &PySet_Type)
#endif
#define __Pyx_TypeCheck(obj, type) PyObject_TypeCheck(obj, (PyTypeObject *)type)
#if PY_MAJOR_VERSION >= 3
  #define PyIntObject                  PyLongObject
  #define PyInt_Type                   PyLong_Type
  #define PyInt_Check(op)              PyLong_Check(op)
  #define PyInt_CheckExact(op)         PyLong_CheckExact(op)
  #define PyInt_FromString             PyLong_FromString
  #define PyInt_FromUnicode            PyLong_FromUnicode
  #define PyInt_FromLong               PyLong_FromLong
  #define PyInt_FromSize_t             PyLong_FromSize_t
  #define PyInt_FromSsize_t            PyLong_FromSsize_t
  #define PyInt_AsLong                 PyLong_AsLong
  #define PyInt_AS_LONG                PyLong_AS_LONG
  #define PyInt_AsSsize_t              PyLong_AsSsize_t
  #define PyInt_AsUnsignedLongMask     PyLong_AsUnsignedLongMask
  #define PyInt_AsUnsignedLongLongMask PyLong_AsUnsignedLongLongMask
  #define PyNumber_Int                 PyNumber_Long
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyBoolObject                 PyLongObject
#endif
#if PY_VERSION_HEX < 0x030200A4
  typedef long Py_hash_t;
  #define __Pyx_PyInt_FromHash_t PyInt_FromLong
  #define __Pyx_PyInt_AsHash_t   PyInt_AsLong
#else
  #define __Pyx_PyInt_FromHash_t PyInt_FromSsize_t
  #define __Pyx_PyInt_AsHash_t   PyInt_AsSsize_t
#endif
#if (PY_MAJOR_VERSION < 3) || (PY_VERSION_HEX >= 0x03010300)
  #define __Pyx_PySequence_GetSlice(obj, a, b) PySequence_GetSlice(obj, a, b)
  #define __Pyx_PySequence_SetSlice(obj, a, b, value) PySequence_SetSlice(obj, a, b, value)
  #define __Pyx_PySequence_DelSlice(obj, a, b) PySequence_DelSlice(obj, a, b)
#else
  #define __Pyx_PySequence_GetSlice(obj, a, b) (unlikely(!(obj)) ? \
        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), (PyObject*)0) : \
        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_GetSlice(obj, a, b)) : \
            (PyErr_Format(PyExc_TypeError, "'%.200s' object is unsliceable", (obj)->ob_type->tp_name), (PyObject*)0)))
  #define __Pyx_PySequence_SetSlice(obj, a, b, value) (unlikely(!(obj)) ? \
        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_SetSlice(obj, a, b, value)) : \
            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice assignment", (obj)->ob_type->tp_name), -1)))
  #define __Pyx_PySequence_DelSlice(obj, a, b) (unlikely(!(obj)) ? \
        (PyErr_SetString(PyExc_SystemError, "null argument to internal routine"), -1) : \
        (likely((obj)->ob_type->tp_as_mapping) ? (PySequence_DelSlice(obj, a, b)) : \
            (PyErr_Format(PyExc_TypeError, "'%.200s' object doesn't support slice deletion", (obj)->ob_type->tp_name), -1)))
#endif
#if PY_MAJOR_VERSION >= 3
  #define PyMethod_New(func, self, klass) ((self) ? PyMethod_New(func, self) : PyInstanceMethod_New(func))
#endif
#if PY_VERSION_HEX < 0x02050000
  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),((char *)(n)))
  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),((char *)(n)),(a))
  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),((char *)(n)))
#else
  #define __Pyx_GetAttrString(o,n)   PyObject_GetAttrString((o),(n))
  #define __Pyx_SetAttrString(o,n,a) PyObject_SetAttrString((o),(n),(a))
  #define __Pyx_DelAttrString(o,n)   PyObject_DelAttrString((o),(n))
#endif
#if PY_VERSION_HEX < 0x02050000
  #define __Pyx_NAMESTR(n) ((char *)(n))
  #define __Pyx_DOCSTR(n)  ((char *)(n))
#else
  #define __Pyx_NAMESTR(n) (n)
  #define __Pyx_DOCSTR(n)  (n)
#endif
#ifndef CYTHON_INLINE
  #if defined(__GNUC__)
    #define CYTHON_INLINE __inline__
  #elif defined(_MSC_VER)
    #define CYTHON_INLINE __inline
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_INLINE inline
  #else
    #define CYTHON_INLINE
  #endif
#endif
#ifndef CYTHON_RESTRICT
  #if defined(__GNUC__)
    #define CYTHON_RESTRICT __restrict__
  #elif defined(_MSC_VER) && _MSC_VER >= 1400
    #define CYTHON_RESTRICT __restrict
  #elif defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L
    #define CYTHON_RESTRICT restrict
  #else
    #define CYTHON_RESTRICT
  #endif
#endif
#ifdef NAN
#define __PYX_NAN() ((float) NAN)
#else
static CYTHON_INLINE float __PYX_NAN() {
  /* Initialize NaN. The sign is irrelevant, an exponent with all bits 1 and
   a nonzero mantissa means NaN. If the first bit in the mantissa is 1, it is
   a quiet NaN. */
  float value;
  memset(&value, 0xFF, sizeof(value));
  return value;
}
#endif
#ifdef __cplusplus
template<typename T>
void __Pyx_call_destructor(T* x) {
    x->~T();
}
#endif


#if PY_MAJOR_VERSION >= 3
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_TrueDivide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceTrueDivide(x,y)
#else
  #define __Pyx_PyNumber_Divide(x,y)         PyNumber_Divide(x,y)
  #define __Pyx_PyNumber_InPlaceDivide(x,y)  PyNumber_InPlaceDivide(x,y)
#endif

#ifndef __PYX_EXTERN_C
  #ifdef __cplusplus
    #define __PYX_EXTERN_C extern "C"
  #else
    #define __PYX_EXTERN_C extern
  #endif
#endif

#if defined(WIN32) || defined(MS_WINDOWS)
#define _USE_MATH_DEFINES
#endif
#include <math.h>
#define __PYX_HAVE__ecyglpki
#define __PYX_HAVE_API__ecyglpki
#include "glpk.h"
#include "limits.h"
#include "float.h"
#ifdef _OPENMP
#include <omp.h>
#endif /* _OPENMP */

#ifdef PYREX_WITHOUT_ASSERTIONS
#define CYTHON_WITHOUT_ASSERTIONS
#endif

#ifndef CYTHON_UNUSED
# if defined(__GNUC__)
#   if !(defined(__cplusplus)) || (__GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4))
#     define CYTHON_UNUSED __attribute__ ((__unused__))
#   else
#     define CYTHON_UNUSED
#   endif
# elif defined(__ICC) || (defined(__INTEL_COMPILER) && !defined(_MSC_VER))
#   define CYTHON_UNUSED __attribute__ ((__unused__))
# else
#   define CYTHON_UNUSED
# endif
#endif
typedef struct {PyObject **p; char *s; const Py_ssize_t n; const char* encoding;
                const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry; /*proto*/

#define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
#define __PYX_DEFAULT_STRING_ENCODING ""
#define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
#define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#define __Pyx_fits_Py_ssize_t(v, type, is_signed)  (    \
    (sizeof(type) < sizeof(Py_ssize_t))  ||             \
    (sizeof(type) > sizeof(Py_ssize_t) &&               \
          likely(v < (type)PY_SSIZE_T_MAX ||            \
                 v == (type)PY_SSIZE_T_MAX)  &&         \
          (!is_signed || likely(v > (type)PY_SSIZE_T_MIN ||       \
                                v == (type)PY_SSIZE_T_MIN)))  ||  \
    (sizeof(type) == sizeof(Py_ssize_t) &&              \
          (is_signed || likely(v < (type)PY_SSIZE_T_MAX ||        \
                               v == (type)PY_SSIZE_T_MAX)))  )
static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject*);
static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject*, Py_ssize_t* length);
#define __Pyx_PyByteArray_FromString(s) PyByteArray_FromStringAndSize((const char*)s, strlen((const char*)s))
#define __Pyx_PyByteArray_FromStringAndSize(s, l) PyByteArray_FromStringAndSize((const char*)s, l)
#define __Pyx_PyBytes_FromString        PyBytes_FromString
#define __Pyx_PyBytes_FromStringAndSize PyBytes_FromStringAndSize
static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char*);
#if PY_MAJOR_VERSION < 3
    #define __Pyx_PyStr_FromString        __Pyx_PyBytes_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
#else
    #define __Pyx_PyStr_FromString        __Pyx_PyUnicode_FromString
    #define __Pyx_PyStr_FromStringAndSize __Pyx_PyUnicode_FromStringAndSize
#endif
#define __Pyx_PyObject_AsSString(s)    ((signed char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_AsUString(s)    ((unsigned char*) __Pyx_PyObject_AsString(s))
#define __Pyx_PyObject_FromUString(s)  __Pyx_PyObject_FromString((const char*)s)
#define __Pyx_PyBytes_FromUString(s)   __Pyx_PyBytes_FromString((const char*)s)
#define __Pyx_PyByteArray_FromUString(s)   __Pyx_PyByteArray_FromString((const char*)s)
#define __Pyx_PyStr_FromUString(s)     __Pyx_PyStr_FromString((const char*)s)
#define __Pyx_PyUnicode_FromUString(s) __Pyx_PyUnicode_FromString((const char*)s)
#if PY_MAJOR_VERSION < 3
static CYTHON_INLINE size_t __Pyx_Py_UNICODE_strlen(const Py_UNICODE *u)
{
    const Py_UNICODE *u_end = u;
    while (*u_end++) ;
    return (size_t)(u_end - u - 1);
}
#else
#define __Pyx_Py_UNICODE_strlen Py_UNICODE_strlen
#endif
#define __Pyx_PyUnicode_FromUnicode(u)       PyUnicode_FromUnicode(u, __Pyx_Py_UNICODE_strlen(u))
#define __Pyx_PyUnicode_FromUnicodeAndLength PyUnicode_FromUnicode
#define __Pyx_PyUnicode_AsUnicode            PyUnicode_AsUnicode
#define __Pyx_Owned_Py_None(b) (Py_INCREF(Py_None), Py_None)
#define __Pyx_PyBool_FromLong(b) ((b) ? (Py_INCREF(Py_True), Py_True) : (Py_INCREF(Py_False), Py_False))
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject*);
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x);
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject*);
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t);
#if CYTHON_COMPILING_IN_CPYTHON
#define __pyx_PyFloat_AsDouble(x) (PyFloat_CheckExact(x) ? PyFloat_AS_DOUBLE(x) : PyFloat_AsDouble(x))
#else
#define __pyx_PyFloat_AsDouble(x) PyFloat_AsDouble(x)
#endif
#define __pyx_PyFloat_AsFloat(x) ((float) __pyx_PyFloat_AsDouble(x))
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
static int __Pyx_sys_getdefaultencoding_not_ascii;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    PyObject* ascii_chars_u = NULL;
    PyObject* ascii_chars_b = NULL;
    const char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    if (strcmp(default_encoding_c, "ascii") == 0) {
        __Pyx_sys_getdefaultencoding_not_ascii = 0;
    } else {
        char ascii_chars[128];
        int c;
        for (c = 0; c < 128; c++) {
            ascii_chars[c] = c;
        }
        __Pyx_sys_getdefaultencoding_not_ascii = 1;
        ascii_chars_u = PyUnicode_DecodeASCII(ascii_chars, 128, NULL);
        if (!ascii_chars_u) goto bad;
        ascii_chars_b = PyUnicode_AsEncodedString(ascii_chars_u, default_encoding_c, NULL);
        if (!ascii_chars_b || !PyBytes_Check(ascii_chars_b) || memcmp(ascii_chars, PyBytes_AS_STRING(ascii_chars_b), 128) != 0) {
            PyErr_Format(
                PyExc_ValueError,
                "This module compiled with c_string_encoding=ascii, but default encoding '%.200s' is not a superset of ascii.",
                default_encoding_c);
            goto bad;
        }
        Py_DECREF(ascii_chars_u);
        Py_DECREF(ascii_chars_b);
    }
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    Py_XDECREF(ascii_chars_u);
    Py_XDECREF(ascii_chars_b);
    return -1;
}
#endif
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT && PY_MAJOR_VERSION >= 3
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_DecodeUTF8(c_str, size, NULL)
#else
#define __Pyx_PyUnicode_FromStringAndSize(c_str, size) PyUnicode_Decode(c_str, size, __PYX_DEFAULT_STRING_ENCODING, NULL)
#if __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
static char* __PYX_DEFAULT_STRING_ENCODING;
static int __Pyx_init_sys_getdefaultencoding_params(void) {
    PyObject* sys;
    PyObject* default_encoding = NULL;
    char* default_encoding_c;
    sys = PyImport_ImportModule("sys");
    if (!sys) goto bad;
    default_encoding = PyObject_CallMethod(sys, (char*) (const char*) "getdefaultencoding", NULL);
    Py_DECREF(sys);
    if (!default_encoding) goto bad;
    default_encoding_c = PyBytes_AsString(default_encoding);
    if (!default_encoding_c) goto bad;
    __PYX_DEFAULT_STRING_ENCODING = (char*) malloc(strlen(default_encoding_c));
    if (!__PYX_DEFAULT_STRING_ENCODING) goto bad;
    strcpy(__PYX_DEFAULT_STRING_ENCODING, default_encoding_c);
    Py_DECREF(default_encoding);
    return 0;
bad:
    Py_XDECREF(default_encoding);
    return -1;
}
#endif
#endif


/* Test for GCC > 2.95 */
#if defined(__GNUC__)     && (__GNUC__ > 2 || (__GNUC__ == 2 && (__GNUC_MINOR__ > 95)))
  #define likely(x)   __builtin_expect(!!(x), 1)
  #define unlikely(x) __builtin_expect(!!(x), 0)
#else /* !__GNUC__ or GCC < 2.95 */
  #define likely(x)   (x)
  #define unlikely(x) (x)
#endif /* __GNUC__ */

static PyObject *__pyx_m;
static PyObject *__pyx_d;
static PyObject *__pyx_b;
static PyObject *__pyx_empty_tuple;
static PyObject *__pyx_empty_bytes;
static int __pyx_lineno;
static int __pyx_clineno = 0;
static const char * __pyx_cfilenm= __FILE__;
static const char *__pyx_filename;


static const char *__pyx_f[] = {
  "ecyglpki-problem.pxi",
  "ecyglpki-tree.pxi",
  "ecyglpki.pyx",
  "ecyglpki-smcp.pxi",
  "ecyglpki-bfcp.pxi",
  "ecyglpki-iptcp.pxi",
  "ecyglpki-iocp.pxi",
  "ecyglpki-graph.pxi",
};

/*--- Type declarations ---*/
struct __pyx_obj_8ecyglpki_SimplexControls;
struct __pyx_obj_8ecyglpki_FactorizationControls;
struct __pyx_obj_8ecyglpki_IPointControls;
struct __pyx_obj_8ecyglpki_CallbackFunction;
struct __pyx_obj_8ecyglpki_CallbackInfo;
struct __pyx_obj_8ecyglpki_IntOptControls;
struct __pyx_obj_8ecyglpki_Problem;
struct __pyx_obj_8ecyglpki_Tree;
struct __pyx_obj_8ecyglpki_Vertex;
struct __pyx_obj_8ecyglpki_Arc;
struct __pyx_obj_8ecyglpki_Graph;
struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix;
struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr;
struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob;
struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr;
struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran;
struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr;
struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr;
struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran;
struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr;
struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr;

/* "glpk.pxd":25
 * 
 * 
 * ctypedef void* CBInfo             # <<<<<<<<<<<<<<
 * ctypedef void (*CBFunc)(Tree*, CBInfo)
 * 
 */
typedef void *__pyx_t_4glpk_CBInfo;

/* "glpk.pxd":26
 * 
 * ctypedef void* CBInfo
 * ctypedef void (*CBFunc)(Tree*, CBInfo)             # <<<<<<<<<<<<<<
 * 
 * ctypedef void* VData
 */
typedef void (*__pyx_t_4glpk_CBFunc)(struct glp_tree *, __pyx_t_4glpk_CBInfo);

/* "glpk.pxd":28
 * ctypedef void (*CBFunc)(Tree*, CBInfo)
 * 
 * ctypedef void* VData             # <<<<<<<<<<<<<<
 * ctypedef void* VTemp
 * 
 */
typedef void *__pyx_t_4glpk_VData;

/* "glpk.pxd":29
 * 
 * ctypedef void* VData
 * ctypedef void* VTemp             # <<<<<<<<<<<<<<
 * 
 * ctypedef void* AData
 */
typedef void *__pyx_t_4glpk_VTemp;

/* "glpk.pxd":31
 * ctypedef void* VTemp
 * 
 * ctypedef void* AData             # <<<<<<<<<<<<<<
 * ctypedef void* ATemp
 * 
 */
typedef void *__pyx_t_4glpk_AData;

/* "glpk.pxd":32
 * 
 * ctypedef void* AData
 * ctypedef void* ATemp             # <<<<<<<<<<<<<<
 * 
 * 
 */
typedef void *__pyx_t_4glpk_ATemp;

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":48
 * 
 * 
 * cdef class SimplexControls:             # <<<<<<<<<<<<<<
 *     """The simplex solver control parameter object
 * 
 */
struct __pyx_obj_8ecyglpki_SimplexControls {
  PyObject_HEAD
  glp_smcp _smcp;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":37
 * 
 * 
 * cdef class FactorizationControls:             # <<<<<<<<<<<<<<
 *     """The basis factorization control parameter object
 * 
 */
struct __pyx_obj_8ecyglpki_FactorizationControls {
  PyObject_HEAD
  glp_bfcp _bfcp;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":35
 * 
 * 
 * cdef class IPointControls:             # <<<<<<<<<<<<<<
 *     """The interior point solver control parameter object
 * 
 */
struct __pyx_obj_8ecyglpki_IPointControls {
  PyObject_HEAD
  glp_iptcp _iptcp;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":25
 * 
 * 
 * cdef class CallbackFunction:             # <<<<<<<<<<<<<<
 *     """The callback function wrapper"""
 * 
 */
struct __pyx_obj_8ecyglpki_CallbackFunction {
  PyObject_HEAD
  __pyx_t_4glpk_CBFunc _cb_func;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":34
 * 
 * 
 * cdef class CallbackInfo:             # <<<<<<<<<<<<<<
 *     """The callback function info reference"""
 * 
 */
struct __pyx_obj_8ecyglpki_CallbackInfo {
  PyObject_HEAD
  __pyx_t_4glpk_CBInfo _cb_info;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":72
 * 
 * 
 * cdef class IntOptControls:             # <<<<<<<<<<<<<<
 *     """The integer optimization solver control parameter object
 * 
 */
struct __pyx_obj_8ecyglpki_IntOptControls {
  PyObject_HEAD
  glp_iocp _iocp;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":231
 * 
 * 
 * cdef class Problem:             # <<<<<<<<<<<<<<
 *     """A GLPK problem"""
 * 
 */
struct __pyx_obj_8ecyglpki_Problem {
  PyObject_HEAD
  struct glp_prob *_prob;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":60
 * 
 * 
 * cdef class Tree:             # <<<<<<<<<<<<<<
 *     """A GLPK search tree"""
 * 
 */
struct __pyx_obj_8ecyglpki_Tree {
  PyObject_HEAD
  struct glp_tree *_tree;
  struct __pyx_obj_8ecyglpki_Problem *problem;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":25
 * 
 * 
 * cdef class Vertex:             # <<<<<<<<<<<<<<
 *     """A GLPK graph vertex"""
 * 
 */
struct __pyx_obj_8ecyglpki_Vertex {
  PyObject_HEAD
  struct glp_vertex *_vertex;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":69
 * 
 * 
 * cdef class Arc:             # <<<<<<<<<<<<<<
 *     """A GLPK graph arc"""
 * 
 */
struct __pyx_obj_8ecyglpki_Arc {
  PyObject_HEAD
  struct glp_arc *_arc;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":135
 * 
 * 
 * cdef class Graph:             # <<<<<<<<<<<<<<
 *     """A GLPK graph"""
 * 
 */
struct __pyx_obj_8ecyglpki_Graph {
  PyObject_HEAD
  struct glp_graph *_graph;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":397
 *         glpk.set_mat_col(self._prob, col, 0, NULL, NULL)
 * 
 *     def load_matrix(self, coeffs):             # <<<<<<<<<<<<<<
 *         """Load (replace) the whole constraint matrix
 * 
 */
struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix {
  PyObject_HEAD
  PyObject *__pyx_v_coeffs;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":405
 *         """
 *         _coeffscheck(coeffs)
 *         if not all(isinstance(key, tuple) and (len(key) is 2)             # <<<<<<<<<<<<<<
 *                    for key in coeffs.keys()):
 *             raise TypeError("Coefficient keys must be pairs, " +
 */
struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr {
  PyObject_HEAD
  struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix *__pyx_outer_scope;
  PyObject *__pyx_v_key;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
  PyObject *(*__pyx_t_2)(PyObject *);
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":687
 *         return glpk.get_sjj(self._prob, col)
 * 
 *     def scale_prob(self, *algorithms):             # <<<<<<<<<<<<<<
 *         """Scale problem data
 * 
 */
struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob {
  PyObject_HEAD
  PyObject *__pyx_v_algorithms;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":695
 *         """
 *         if len(algorithms) is not 0:
 *             glpk.scale_prob(self._prob, sum(str2scalopt[algorithm]             # <<<<<<<<<<<<<<
 *                                             for algorithm in algorithms))
 * 
 */
struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr {
  PyObject_HEAD
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob *__pyx_outer_scope;
  PyObject *__pyx_v_algorithm;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1016
 *         return glpk.get_col_bind(self._prob, col)
 * 
 *     def ftran(self, tuple rhs):             # <<<<<<<<<<<<<<
 *         """Perform forward transformation (solve system B*x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):
 */
struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran {
  PyObject_HEAD
  int __pyx_v_m;
  PyObject *__pyx_v_rhs;
  double *__pyx_v_rhs_pre_x_post;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1018
 *     def ftran(self, tuple rhs):
 *         """Perform forward transformation (solve system B*x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):             # <<<<<<<<<<<<<<
 *             raise TypeError("Right-hand side must contain 'Real' numbers " +
 *                             "only.")
 */
struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr {
  PyObject_HEAD
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *__pyx_outer_scope;
  PyObject *__pyx_v_value;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1030
 *             rhs_pre_x_post[i] = value
 *         glpk.ftran(self._prob, rhs_pre_x_post)
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))             # <<<<<<<<<<<<<<
 * 
 *     def btran(self, tuple rhs):
 */
struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr {
  PyObject_HEAD
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *__pyx_outer_scope;
  long __pyx_v_i;
  long __pyx_t_0;
  long __pyx_t_1;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1032
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))
 * 
 *     def btran(self, tuple rhs):             # <<<<<<<<<<<<<<
 *         """Perform backward transformation (solve system B'x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):
 */
struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran {
  PyObject_HEAD
  int __pyx_v_m;
  PyObject *__pyx_v_rhs;
  double *__pyx_v_rhs_pre_x_post;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1034
 *     def btran(self, tuple rhs):
 *         """Perform backward transformation (solve system B'x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):             # <<<<<<<<<<<<<<
 *             raise TypeError("Right-hand side must contain 'Real' numbers " +
 *                             "only.")
 */
struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr {
  PyObject_HEAD
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *__pyx_outer_scope;
  PyObject *__pyx_v_value;
  PyObject *__pyx_t_0;
  Py_ssize_t __pyx_t_1;
};


/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1046
 *             rhs_pre_x_post[i] = value
 *         glpk.btran(self._prob, rhs_pre_x_post)
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))             # <<<<<<<<<<<<<<
 * 
 *     def warm_up(self):
 */
struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr {
  PyObject_HEAD
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *__pyx_outer_scope;
  long __pyx_v_i;
  long __pyx_t_0;
  long __pyx_t_1;
};

#ifndef CYTHON_REFNANNY
  #define CYTHON_REFNANNY 0
#endif
#if CYTHON_REFNANNY
  typedef struct {
    void (*INCREF)(void*, PyObject*, int);
    void (*DECREF)(void*, PyObject*, int);
    void (*GOTREF)(void*, PyObject*, int);
    void (*GIVEREF)(void*, PyObject*, int);
    void* (*SetupContext)(const char*, int, const char*);
    void (*FinishContext)(void**);
  } __Pyx_RefNannyAPIStruct;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNanny = NULL;
  static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname); /*proto*/
  #define __Pyx_RefNannyDeclarations void *__pyx_refnanny = NULL;
#ifdef WITH_THREAD
  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
          if (acquire_gil) { \
              PyGILState_STATE __pyx_gilstate_save = PyGILState_Ensure(); \
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
              PyGILState_Release(__pyx_gilstate_save); \
          } else { \
              __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__); \
          }
#else
  #define __Pyx_RefNannySetupContext(name, acquire_gil) \
          __pyx_refnanny = __Pyx_RefNanny->SetupContext((name), __LINE__, __FILE__)
#endif
  #define __Pyx_RefNannyFinishContext() \
          __Pyx_RefNanny->FinishContext(&__pyx_refnanny)
  #define __Pyx_INCREF(r)  __Pyx_RefNanny->INCREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_DECREF(r)  __Pyx_RefNanny->DECREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GOTREF(r)  __Pyx_RefNanny->GOTREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_GIVEREF(r) __Pyx_RefNanny->GIVEREF(__pyx_refnanny, (PyObject *)(r), __LINE__)
  #define __Pyx_XINCREF(r)  do { if((r) != NULL) {__Pyx_INCREF(r); }} while(0)
  #define __Pyx_XDECREF(r)  do { if((r) != NULL) {__Pyx_DECREF(r); }} while(0)
  #define __Pyx_XGOTREF(r)  do { if((r) != NULL) {__Pyx_GOTREF(r); }} while(0)
  #define __Pyx_XGIVEREF(r) do { if((r) != NULL) {__Pyx_GIVEREF(r);}} while(0)
#else
  #define __Pyx_RefNannyDeclarations
  #define __Pyx_RefNannySetupContext(name, acquire_gil)
  #define __Pyx_RefNannyFinishContext()
  #define __Pyx_INCREF(r) Py_INCREF(r)
  #define __Pyx_DECREF(r) Py_DECREF(r)
  #define __Pyx_GOTREF(r)
  #define __Pyx_GIVEREF(r)
  #define __Pyx_XINCREF(r) Py_XINCREF(r)
  #define __Pyx_XDECREF(r) Py_XDECREF(r)
  #define __Pyx_XGOTREF(r)
  #define __Pyx_XGIVEREF(r)
#endif /* CYTHON_REFNANNY */
#define __Pyx_XDECREF_SET(r, v) do {                            \
        PyObject *tmp = (PyObject *) r;                         \
        r = v; __Pyx_XDECREF(tmp);                              \
    } while (0)
#define __Pyx_DECREF_SET(r, v) do {                             \
        PyObject *tmp = (PyObject *) r;                         \
        r = v; __Pyx_DECREF(tmp);                               \
    } while (0)
#define __Pyx_CLEAR(r)    do { PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);} while(0)
#define __Pyx_XCLEAR(r)   do { if((r) != NULL) {PyObject* tmp = ((PyObject*)(r)); r = NULL; __Pyx_DECREF(tmp);}} while(0)

#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject* attr_name) {
    PyTypeObject* tp = Py_TYPE(obj);
    if (likely(tp->tp_getattro))
        return tp->tp_getattro(obj, attr_name);
#if PY_MAJOR_VERSION < 3
    if (likely(tp->tp_getattr))
        return tp->tp_getattr(obj, PyString_AS_STRING(attr_name));
#endif
    return PyObject_GetAttr(obj, attr_name);
}
#else
#define __Pyx_PyObject_GetAttrStr(o,n) PyObject_GetAttr(o,n)
#endif

static PyObject *__Pyx_GetBuiltinName(PyObject *name); /*proto*/

#include <string.h>

static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors));

#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw); /*proto*/
#else
#define __Pyx_PyObject_Call(func, arg, kw) PyObject_Call(func, arg, kw)
#endif

static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb); /*proto*/
static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb); /*proto*/

static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause); /*proto*/

static void __Pyx_RaiseArgtupleInvalid(const char* func_name, int exact,
    Py_ssize_t num_min, Py_ssize_t num_max, Py_ssize_t num_found); /*proto*/

static CYTHON_INLINE int __Pyx_CheckKeywordStrings(PyObject *kwdict, const char* function_name, int kw_allowed); /*proto*/

#define __Pyx_GetItemInt(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \
    __Pyx_GetItemInt_Fast(o, (Py_ssize_t)i, is_list, wraparound, boundscheck) : \
    (is_list ? (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL) : \
               __Pyx_GetItemInt_Generic(o, to_py_func(i))))
#define __Pyx_GetItemInt_List(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \
    __Pyx_GetItemInt_List_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) : \
    (PyErr_SetString(PyExc_IndexError, "list index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
#define __Pyx_GetItemInt_Tuple(o, i, type, is_signed, to_py_func, is_list, wraparound, boundscheck) \
    (__Pyx_fits_Py_ssize_t(i, type, is_signed) ? \
    __Pyx_GetItemInt_Tuple_Fast(o, (Py_ssize_t)i, wraparound, boundscheck) : \
    (PyErr_SetString(PyExc_IndexError, "tuple index out of range"), (PyObject*)NULL))
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j);
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                     int is_list, int wraparound, int boundscheck);

static double __Pyx__PyObject_AsDouble(PyObject* obj); /* proto */
#if CYTHON_COMPILING_IN_PYPY
#define __Pyx_PyObject_AsDouble(obj) \
(likely(PyFloat_CheckExact(obj)) ? PyFloat_AS_DOUBLE(obj) : \
 likely(PyInt_CheckExact(obj)) ? \
 PyFloat_AsDouble(obj) : __Pyx__PyObject_AsDouble(obj))
#else
#define __Pyx_PyObject_AsDouble(obj) \
((likely(PyFloat_CheckExact(obj))) ? \
 PyFloat_AS_DOUBLE(obj) : __Pyx__PyObject_AsDouble(obj))
#endif

static void __Pyx_RaiseDoubleKeywordsError(const char* func_name, PyObject* kw_name); /*proto*/

static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[], \
    PyObject *kwds2, PyObject *values[], Py_ssize_t num_pos_args, \
    const char* function_name); /*proto*/

static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
    const char *name, int exact); /*proto*/

static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name); /*proto*/

static CYTHON_INLINE int __Pyx_PySequence_Contains(PyObject* item, PyObject* seq, int eq) {
    int result = PySequence_Contains(seq, item);
    return unlikely(result < 0) ? result : (result == (eq == Py_EQ));
}

#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE int __Pyx_ListComp_Append(PyObject* list, PyObject* x) {
    PyListObject* L = (PyListObject*) list;
    Py_ssize_t len = Py_SIZE(list);
    if (likely(L->allocated > len)) {
        Py_INCREF(x);
        PyList_SET_ITEM(list, len, x);
        Py_SIZE(list) = len+1;
        return 0;
    }
    return PyList_Append(list, x);
}
#else
#define __Pyx_ListComp_Append(L,x) PyList_Append(L,x)
#endif

static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected);

static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index);

static CYTHON_INLINE int __Pyx_IterFinish(void); /*proto*/

static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected); /*proto*/

static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb); /*proto*/

static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb); /*proto*/

static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb); /*proto*/
static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb); /*proto*/

static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname);

#if PY_MAJOR_VERSION >= 3
static PyObject *__Pyx_PyDict_GetItem(PyObject *d, PyObject* key) {
    PyObject *value;
    value = PyDict_GetItemWithError(d, key);
    if (unlikely(!value)) {
        if (!PyErr_Occurred()) {
            PyObject* args = PyTuple_Pack(1, key);
            if (likely(args))
                PyErr_SetObject(PyExc_KeyError, args);
            Py_XDECREF(args);
        }
        return NULL;
    }
    Py_INCREF(value);
    return value;
}
#else
    #define __Pyx_PyDict_GetItem(d, key) PyObject_GetItem(d, key)
#endif

static PyObject* __Pyx_PyObject_CallMethodTuple(PyObject* obj, PyObject* method_name, PyObject* args) {
    PyObject *method, *result = NULL;
    if (unlikely(!args)) return NULL;
    method = __Pyx_PyObject_GetAttrStr(obj, method_name);
    if (unlikely(!method)) goto bad;
    result = __Pyx_PyObject_Call(method, args, NULL);
    Py_DECREF(method);
bad:
    Py_DECREF(args);
    return result;
}
#define __Pyx_PyObject_CallMethod3(obj, name, arg1, arg2, arg3) \
    __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(3, arg1, arg2, arg3))
#define __Pyx_PyObject_CallMethod2(obj, name, arg1, arg2) \
    __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(2, arg1, arg2))
#define __Pyx_PyObject_CallMethod1(obj, name, arg1) \
    __Pyx_PyObject_CallMethodTuple(obj, name, PyTuple_Pack(1, arg1))
#define __Pyx_PyObject_CallMethod0(obj, name) \
    __Pyx_PyObject_CallMethodTuple(obj, name, (Py_INCREF(__pyx_empty_tuple), __pyx_empty_tuple))

static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d); /*proto*/

#if PY_VERSION_HEX < 0x02050000
#ifndef PyAnySet_CheckExact
#define PyAnySet_CheckExact(ob) \
    ((ob)->ob_type == &PySet_Type || \
     (ob)->ob_type == &PyFrozenSet_Type)
#define PySet_New(iterable) \
    PyObject_CallFunctionObjArgs((PyObject *)&PySet_Type, (iterable), NULL)
#define PyFrozenSet_New(iterable) \
    PyObject_CallFunctionObjArgs((PyObject *)&PyFrozenSet_Type, (iterable), NULL)
#define PySet_Size(anyset) \
    PyObject_Size((anyset))
#define PySet_GET_SIZE(anyset) \
    PyObject_Size((anyset))
#define PySet_Contains(anyset, key) \
    PySequence_Contains((anyset), (key))
#define PySet_Pop(set) \
    PyObject_CallMethod((set), (char*)"pop", NULL)
static CYTHON_INLINE int PySet_Clear(PyObject *set) {
    PyObject *ret = PyObject_CallMethod(set, (char*)"clear", NULL);
    if (!ret) return -1;
    Py_DECREF(ret); return 0;
}
static CYTHON_INLINE int PySet_Discard(PyObject *set, PyObject *key) {
    PyObject *ret = PyObject_CallMethod(set, (char*)"discard", (char*)"(O)", key);
    if (!ret) return -1;
    Py_DECREF(ret); return 0;
}
static CYTHON_INLINE int PySet_Add(PyObject *set, PyObject *key) {
    PyObject *ret = PyObject_CallMethod(set, (char*)"add", (char*)"(O)", key);
    if (!ret) return -1;
    Py_DECREF(ret); return 0;
}
#endif /* PyAnySet_CheckExact (<= Py2.4) */
#endif /* < Py2.5  */

static CYTHON_INLINE PyObject* __Pyx_PyFrozenSet_New(PyObject* it) {
    if (it) {
        PyObject* result;
        if (PyFrozenSet_CheckExact(it)) {
            Py_INCREF(it);
            return it;
        }
        result = PyFrozenSet_New(it);
        if (unlikely(!result))
            return NULL;
        if (likely(PySet_GET_SIZE(result)))
            return result;
        Py_DECREF(result);
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    return PyFrozenSet_Type.tp_new(&PyFrozenSet_Type, __pyx_empty_tuple, NULL);
    #else
    return PyObject_Call((PyObject*)&PyFrozenSet_Type, __pyx_empty_tuple, NULL);
    #endif
}

static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name); /*proto*/

static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level); /*proto*/

static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value);

static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *);

static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value);

static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *);

#include "descrobject.h"
static PyObject* __Pyx_Method_ClassMethod(PyObject *method); /*proto*/

static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type);

#define __Pyx_Generator_USED
#include <structmember.h>
#include <frameobject.h>
typedef PyObject *(*__pyx_generator_body_t)(PyObject *, PyObject *);
typedef struct {
    PyObject_HEAD
    __pyx_generator_body_t body;
    PyObject *closure;
    PyObject *exc_type;
    PyObject *exc_value;
    PyObject *exc_traceback;
    PyObject *gi_weakreflist;
    PyObject *classobj;
    PyObject *yieldfrom;
    int resume_label;
    char is_running;
} __pyx_GeneratorObject;
static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body,
                                                  PyObject *closure);
static int __pyx_Generator_init(void);
static int __Pyx_Generator_clear(PyObject* self);
#if 1 || PY_VERSION_HEX < 0x030300B0
static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue);
#else
#define __Pyx_PyGen_FetchStopIterationValue(pvalue) PyGen_FetchStopIterationValue(pvalue)
#endif

static int __Pyx_check_binary_version(void);

typedef struct {
    int code_line;
    PyCodeObject* code_object;
} __Pyx_CodeObjectCacheEntry;
struct __Pyx_CodeObjectCache {
    int count;
    int max_count;
    __Pyx_CodeObjectCacheEntry* entries;
};
static struct __Pyx_CodeObjectCache __pyx_code_cache = {0,0,NULL};
static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line);
static PyCodeObject *__pyx_find_code_object(int code_line);
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object);

static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename); /*proto*/

static int __Pyx_InitStrings(__Pyx_StringTabEntry *t); /*proto*/


/* Module declarations from 'glpk' */

/* Module declarations from 'cpython.ref' */

/* Module declarations from 'cpython.pycapsule' */

/* Module declarations from 'libc.limits' */

/* Module declarations from 'libc.float' */

/* Module declarations from 'ecyglpki' */
static PyTypeObject *__pyx_ptype_8ecyglpki_SimplexControls = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki_FactorizationControls = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki_IPointControls = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki_CallbackFunction = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki_CallbackInfo = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki_IntOptControls = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki_Problem = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki_Tree = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki_Vertex = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki_Arc = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki_Graph = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki___pyx_scope_struct__load_matrix = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki___pyx_scope_struct_1_genexpr = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki___pyx_scope_struct_2_scale_prob = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki___pyx_scope_struct_3_genexpr = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki___pyx_scope_struct_4_ftran = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki___pyx_scope_struct_5_genexpr = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki___pyx_scope_struct_6_genexpr = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki___pyx_scope_struct_7_btran = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki___pyx_scope_struct_8_genexpr = 0;
static PyTypeObject *__pyx_ptype_8ecyglpki___pyx_scope_struct_9_genexpr = 0;
static PyObject *__pyx_v_8ecyglpki_str2meth = 0;
static PyObject *__pyx_v_8ecyglpki_meth2str = 0;
static PyObject *__pyx_v_8ecyglpki_str2pricing = 0;
static PyObject *__pyx_v_8ecyglpki_pricing2str = 0;
static PyObject *__pyx_v_8ecyglpki_str2rtest = 0;
static PyObject *__pyx_v_8ecyglpki_rtest2str = 0;
static PyObject *__pyx_v_8ecyglpki_strpair2bftype = 0;
static PyObject *__pyx_v_8ecyglpki_bftype2strpair = 0;
static PyObject *__pyx_v_8ecyglpki_str2ordalg = 0;
static PyObject *__pyx_v_8ecyglpki_ordalg2str = 0;
static PyObject *__pyx_v_8ecyglpki_str2brtech = 0;
static PyObject *__pyx_v_8ecyglpki_brtech2str = 0;
static PyObject *__pyx_v_8ecyglpki_str2bttech = 0;
static PyObject *__pyx_v_8ecyglpki_bttech2str = 0;
static PyObject *__pyx_v_8ecyglpki_str2pptech = 0;
static PyObject *__pyx_v_8ecyglpki_pptech2str = 0;
static int __pyx_v_8ecyglpki_int_MAX;
static double __pyx_v_8ecyglpki_double_MAX;
static PyObject *__pyx_v_8ecyglpki_str2msglev = 0;
static PyObject *__pyx_v_8ecyglpki_msglev2str = 0;
static PyObject *__pyx_v_8ecyglpki_str2optdir = 0;
static PyObject *__pyx_v_8ecyglpki_optdir2str = 0;
static PyObject *__pyx_v_8ecyglpki_str2varkind = 0;
static PyObject *__pyx_v_8ecyglpki_varkind2str = 0;
static PyObject *__pyx_v_8ecyglpki_pair2vartype = 0;
static PyObject *__pyx_v_8ecyglpki_vartype2str = 0;
static PyObject *__pyx_v_8ecyglpki_str2vartype = 0;
static PyObject *__pyx_v_8ecyglpki_str2varstat = 0;
static PyObject *__pyx_v_8ecyglpki_varstat2str = 0;
static PyObject *__pyx_v_8ecyglpki_compatible_status = 0;
static PyObject *__pyx_v_8ecyglpki_str2scalopt = 0;
static PyObject *__pyx_v_8ecyglpki_str2solind = 0;
static PyObject *__pyx_v_8ecyglpki_solstat2str = 0;
static PyObject *__pyx_v_8ecyglpki_smretcode2error = 0;
static PyObject *__pyx_v_8ecyglpki_smretcode2str = 0;
static PyObject *__pyx_v_8ecyglpki_iptretcode2error = 0;
static PyObject *__pyx_v_8ecyglpki_ioretcode2error = 0;
static PyObject *__pyx_v_8ecyglpki_pair2condind = 0;
static PyObject *__pyx_v_8ecyglpki_str2mpsfmt = 0;
static PyObject *__pyx_v_8ecyglpki_reascode2str = 0;
static PyObject *__pyx_v_8ecyglpki_origin2str = 0;
static PyObject *__pyx_v_8ecyglpki_klass2str = 0;
static PyObject *__pyx_v_8ecyglpki_str2klass = 0;
static PyObject *__pyx_v_8ecyglpki_str2branchdir = 0;
static PyObject *__pyx_v_8ecyglpki_str2asnform = 0;
static char *__pyx_f_8ecyglpki_str2chars(PyObject *); /*proto*/
static char *__pyx_f_8ecyglpki_name2chars(PyObject *); /*proto*/
static PyObject *__pyx_f_8ecyglpki_chars2name(char const *); /*proto*/
static PyObject *__pyx_f_8ecyglpki__bounds(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_8ecyglpki__statuscheck(PyObject *, PyObject *); /*proto*/
static PyObject *__pyx_f_8ecyglpki__coeffscheck(PyObject *); /*proto*/
#define __Pyx_MODULE_NAME "ecyglpki"
int __pyx_module_is_main_ecyglpki = 0;

/* Implementation of 'ecyglpki' */
static PyObject *__pyx_builtin_ValueError;
static PyObject *__pyx_builtin_RuntimeError;
static PyObject *__pyx_builtin_StopIteration;
static PyObject *__pyx_builtin_ArithmeticError;
static PyObject *__pyx_builtin_OverflowError;
static PyObject *__pyx_builtin_TypeError;
static PyObject *__pyx_builtin_all;
static PyObject *__pyx_builtin_enumerate;
static PyObject *__pyx_builtin_range;
static PyObject *__pyx_builtin_sum;
static PyObject *__pyx_builtin_Exception;
static PyObject *__pyx_pf_8ecyglpki_GLPK_version(CYTHON_UNUSED PyObject *__pyx_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls___cinit__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_7msg_lev___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_7msg_lev_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_4meth___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_4meth_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_7pricing___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_7pricing_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_6r_test___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_6r_test_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_7tol_bnd___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_7tol_bnd_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_6tol_dj___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_6tol_dj_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_7tol_piv___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_7tol_piv_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_6obj_ll___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_6obj_ll_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_6obj_ul___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_6obj_ul_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_6it_lim___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_6it_lim_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_6tm_lim___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_6tm_lim_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_7out_frq___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_7out_frq_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_7out_dly___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_7out_dly_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_8presolve___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_15SimplexControls_8presolve_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8ecyglpki_21FactorizationControls___cinit__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, struct __pyx_obj_8ecyglpki_Problem *__pyx_v_problem); /* proto */
static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_4type___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_21FactorizationControls_4type_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_7piv_tol___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_21FactorizationControls_7piv_tol_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_7piv_lim___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_21FactorizationControls_7piv_lim_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_4suhl___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_21FactorizationControls_4suhl_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_7eps_tol___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_21FactorizationControls_7eps_tol_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_7nfs_max___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_21FactorizationControls_7nfs_max_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_7nrs_max___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_21FactorizationControls_7nrs_max_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8ecyglpki_14IPointControls___cinit__(struct __pyx_obj_8ecyglpki_IPointControls *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IPointControls_7msg_lev___get__(struct __pyx_obj_8ecyglpki_IPointControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IPointControls_7msg_lev_2__set__(struct __pyx_obj_8ecyglpki_IPointControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IPointControls_7ord_alg___get__(struct __pyx_obj_8ecyglpki_IPointControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IPointControls_7ord_alg_2__set__(struct __pyx_obj_8ecyglpki_IPointControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8ecyglpki_16CallbackFunction___cinit__(struct __pyx_obj_8ecyglpki_CallbackFunction *__pyx_v_self, PyObject *__pyx_v_cbfunc_ptr); /* proto */
static int __pyx_pf_8ecyglpki_12CallbackInfo___cinit__(struct __pyx_obj_8ecyglpki_CallbackInfo *__pyx_v_self, PyObject *__pyx_v_cbinfo_ptr); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls___cinit__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7msg_lev___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7msg_lev_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7out_frq___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7out_frq_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7out_dly___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7out_dly_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7cb_func___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7cb_func_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, struct __pyx_obj_8ecyglpki_CallbackFunction *__pyx_v_callback); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7cb_info___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7cb_info_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, struct __pyx_obj_8ecyglpki_CallbackInfo *__pyx_v_info); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7cb_size___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7cb_size_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_6tm_lim___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_6tm_lim_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7br_tech___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7br_tech_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7bt_tech___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7bt_tech_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7pp_tech___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7pp_tech_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7fp_heur___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7fp_heur_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7ps_heur___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7ps_heur_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_9ps_tm_lim___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_9ps_tm_lim_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_8gmi_cuts___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_8gmi_cuts_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_8mir_cuts___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_8mir_cuts_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_8cov_cuts___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_8cov_cuts_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_8clq_cuts___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_8clq_cuts_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7tol_int___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7tol_int_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7tol_obj___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7tol_obj_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7mip_gap___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_7mip_gap_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_8presolve___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_8presolve_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_8binarize___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_14IntOptControls_8binarize_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value); /* proto */
static int __pyx_pf_8ecyglpki_7Problem___cinit__(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_prob_ptr); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_2_prob_ptr(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static void __pyx_pf_8ecyglpki_7Problem_4__dealloc__(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_6set_prob_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_8set_obj_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_10set_obj_dir(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_direction); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_12add_rows(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_number); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_14add_named_rows(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_names); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_16add_cols(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_number); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_18add_named_cols(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_names); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_20set_row_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_22set_col_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_24set_row_bnds(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row, PyObject *__pyx_v_lower, PyObject *__pyx_v_upper); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_26set_col_bnds(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_lower, PyObject *__pyx_v_upper); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_28set_obj_coef(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, double __pyx_v_coeff); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_30set_obj_const(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, double __pyx_v_coeff); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_32set_mat_row(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row, PyObject *__pyx_v_coeffs); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_34clear_mat_row(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_36set_mat_col(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_coeffs); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_38clear_mat_col(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_11load_matrix_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_40load_matrix(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_coeffs); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_42sort_matrix(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_44clear_matrix(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_46del_rows(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_rows); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_48del_cols(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_cols); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_50copy_prob(PyObject *__pyx_v_cls, struct __pyx_obj_8ecyglpki_Problem *__pyx_v_source, int __pyx_v_copy_names); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_52erase_prob(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_54get_prob_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_56get_obj_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_58get_obj_dir(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_60get_num_rows(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_62get_num_cols(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_64get_row_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_66get_row_name_if(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_row, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_68get_col_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_70get_col_name_if(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_col, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_72get_row_or_col_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_ind); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_74get_row_or_col_name_if(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_ind, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_76get_row_type(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_78get_row_lb(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_80get_row_ub(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_82get_col_type(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_84get_col_lb(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_86get_col_ub(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_88get_obj_coef(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_90get_obj_const(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_92get_num_nz(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_94get_mat_row(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_96get_mat_col(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_98find_row(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_100find_row_as_needed(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_102find_col(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_104find_col_as_needed(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_106find_row_or_col_as_needed(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_ind); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_108set_rii(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row, double __pyx_v_sf); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_110set_sjj(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, double __pyx_v_sf); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_112get_rii(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_114get_sjj(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_10scale_prob_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_116scale_prob(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_algorithms); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_118unscale_prob(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_120set_row_stat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_122set_col_stat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_status); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_124std_basis(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_126adv_basis(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_128cpx_basis(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_130simplex(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_controls); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_132exact(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_controls); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_134get_status(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_136get_prim_stat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_138get_dual_stat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_140get_obj_val(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_142get_row_stat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_144get_row_prim(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_146get_row_dual(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_148get_col_stat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_150get_col_prim(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_152get_col_dual(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_154get_unbnd_ray(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_156interior(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, struct __pyx_obj_8ecyglpki_IPointControls *__pyx_v_controls); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_158ipt_status(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_160ipt_obj_val(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_162ipt_row_prim(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_164ipt_row_dual(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_166ipt_col_prim(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_168ipt_col_dual(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_170set_col_kind(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_kind); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_172get_col_kind(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_174get_num_int(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_176get_num_bin(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_178intopt(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_controls); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_180mip_status(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_182mip_obj_val(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_184mip_row_val(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_186mip_col_val(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_188check_kkt(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_solver, PyObject *__pyx_v_condition, int __pyx_v_dual, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_190print_sol(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_192read_sol(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_194write_sol(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_196print_ranges(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row_or_cols, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_198print_ipt(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_200read_ipt(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_202write_ipt(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_204print_mip(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_206read_mip(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_208write_mip(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_210bf_exists(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_212factorize(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_214bf_updated(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_216get_bfcp(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_218set_bfcp(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_controls); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_220get_bhead(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_k, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_222get_row_bind(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_224get_col_bind(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_5ftran_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_5ftran_3genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_226ftran(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_5btran_genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_5btran_3genexpr(PyObject *__pyx_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_228btran(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_rhs); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_230warm_up(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_232eval_tab_row(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_ind, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_234eval_tab_col(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_ind, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_236transform_row(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_coeffs, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_238transform_col(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_coeffs, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_240prim_rtest(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_coeffs, int __pyx_v_direction, double __pyx_v_eps, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_242dual_rtest(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_coeffs, int __pyx_v_direction, double __pyx_v_eps, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_244analyze_bound(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_ind, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_246analyze_coef(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_ind, PyObject *__pyx_v_names_preferred); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_248read_mps(PyObject *__pyx_v_cls, PyObject *__pyx_v_format, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_250write_mps(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_format, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_252read_lp(PyObject *__pyx_v_cls, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_254write_lp(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_256read_prob(PyObject *__pyx_v_cls, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_258write_prob(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_260read_cnfsat(PyObject *__pyx_v_cls, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_262check_cnfsat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_264write_cnfsat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_266minisat1(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_7Problem_268intfeas1(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_use_bound, int __pyx_v_obj_bound); /* proto */
static int __pyx_pf_8ecyglpki_4Tree___cinit__(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_2ios_reason(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_4ios_tree_size(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_6ios_curr_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_8ios_next_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_10ios_first_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_12ios_prev_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_14ios_last_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_16ios_up_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_18ios_node_level(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_20ios_node_bound(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_22ios_best_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_24ios_mip_gap(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_26ios_node_data(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_28ios_row_attr(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, PyObject *__pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_30ios_pool_size(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_32ios_add_row(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_rowclass, PyObject *__pyx_v_coeffs, PyObject *__pyx_v_vartype, double __pyx_v_rhs); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_34ios_del_row(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_row); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_36ios_clear_pool(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_38ios_can_branch(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, PyObject *__pyx_v_col); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_40ios_branch_upon(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_branchdir); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_42ios_select_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_44ios_heur_sol(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, PyObject *__pyx_v_coeffs); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_46ios_terminate(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_4Tree_7problem___get__(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_6Vertex___cinit__(struct __pyx_obj_8ecyglpki_Vertex *__pyx_v_self, PyObject *__pyx_v_vertex_ptr); /* proto */
static PyObject *__pyx_pf_8ecyglpki_6Vertex_2_vertex_ptr(struct __pyx_obj_8ecyglpki_Vertex *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_6Vertex_1i___get__(struct __pyx_obj_8ecyglpki_Vertex *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_6Vertex_4name___get__(struct __pyx_obj_8ecyglpki_Vertex *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_6Vertex_3inc___get__(struct __pyx_obj_8ecyglpki_Vertex *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_6Vertex_3out___get__(struct __pyx_obj_8ecyglpki_Vertex *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_3Arc___cinit__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self, PyObject *__pyx_v_arc_ptr); /* proto */
static PyObject *__pyx_pf_8ecyglpki_3Arc_2_arc_ptr(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_3Arc_4tail___get__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_3Arc_4head___get__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_3Arc_6t_prev___get__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_3Arc_6t_next___get__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_3Arc_6h_prev___get__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_3Arc_6h_next___get__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self); /* proto */
static int __pyx_pf_8ecyglpki_5Graph___cinit__(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, PyObject *__pyx_v_graph_ptr); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_2_graph_ptr(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self); /* proto */
static void __pyx_pf_8ecyglpki_5Graph_4__dealloc__(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_2nv___get__(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_2na___get__(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_6v_size___get__(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_6a_size___get__(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_6set_graph_name(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_8add_vertices(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_vertices); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_10add_named_vertices(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_names); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_12set_vertex_name(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_vertex, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_14add_arc(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_tail, PyObject *__pyx_v_head); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_16del_vertices(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_vertices); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_18del_arc(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, struct __pyx_obj_8ecyglpki_Arc *__pyx_v_arc); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_20erase_graph(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_22find_vertex(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_name); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_24find_vertex_as_needed(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_vertex); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_26get_vertex_object(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_vertex); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_28read_graph(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_30write_graph(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_32mincost_lp(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_copy_names, int __pyx_v_v_rhs, int __pyx_v_a_low, int __pyx_v_a_cap, int __pyx_v_a_cost); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_34mincost_okalg(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_rhs, int __pyx_v_a_low, int __pyx_v_a_cap, int __pyx_v_a_cost, int __pyx_v_a_x, int __pyx_v_v_pi); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_36mincost_relax4(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_rhs, int __pyx_v_a_low, int __pyx_v_a_cap, int __pyx_v_a_cost, int __pyx_v_crash, int __pyx_v_a_x, int __pyx_v_a_rc); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_38maxflow_lp(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_copy_names, PyObject *__pyx_v_source, PyObject *__pyx_v_sink, int __pyx_v_a_cap); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_40maxflow_ffalg(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_source, PyObject *__pyx_v_sink, int __pyx_v_a_cap, int __pyx_v_a_x, int __pyx_v_v_cut); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_42check_asnprob(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_set); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_44asnprob_lp(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_asnform, int __pyx_v_copy_names, int __pyx_v_v_set, int __pyx_v_a_cost); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_46asnprob_okalg(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_asnform, int __pyx_v_v_set, int __pyx_v_a_cost, int __pyx_v_a_x); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_48asnprob_hall(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_set, int __pyx_v_a_x); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_50cpp(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_t, int __pyx_v_v_es, int __pyx_v_v_ls); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_52read_mincost(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_v_rhs, int __pyx_v_a_low, int __pyx_v_a_cap, int __pyx_v_a_cost, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_54write_mincost(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_rhs, int __pyx_v_a_low, int __pyx_v_a_cap, int __pyx_v_a_cost, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_56read_maxflow(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_a_cap, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_58write_maxflow(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_source, PyObject *__pyx_v_sink, int __pyx_v_a_cap, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_60read_asnprob(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_v_set, int __pyx_v_a_cost, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_62write_asnprob(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_set, int __pyx_v_a_cost, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_64read_ccdata(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_v_wgt, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_66write_ccdata(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_wgt, PyObject *__pyx_v_fname); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_68netgen(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_v_rhs, int __pyx_v_a_cap, int __pyx_v_a_cost, PyObject *__pyx_v_parameters); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_70gridgen(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_v_rhs, int __pyx_v_a_cap, int __pyx_v_a_cost, PyObject *__pyx_v_parameters); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_72rmfgen(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_a_cap, PyObject *__pyx_v_parameters); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_74weak_comp(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_num); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_76strong_comp(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_num); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_78top_sort(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_num); /* proto */
static PyObject *__pyx_pf_8ecyglpki_5Graph_80wclique_exact(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_wgt, int __pyx_v_v_set); /* proto */
static PyObject *__pyx_tp_new_8ecyglpki_SimplexControls(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki_FactorizationControls(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki_IPointControls(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki_CallbackFunction(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki_CallbackInfo(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki_IntOptControls(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki_Problem(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki_Tree(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki_Vertex(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki_Arc(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki_Graph(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct__load_matrix(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_1_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_2_scale_prob(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_3_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_4_ftran(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_5_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_6_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_7_btran(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_8_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_9_genexpr(PyTypeObject *t, PyObject *a, PyObject *k); /*proto*/
static char __pyx_k_a[] = "a";
static char __pyx_k_b[] = "b";
static char __pyx_k_k[] = "k";
static char __pyx_k_LU[] = "LU";
static char __pyx_k__2[] = "";
static char __pyx_k__4[] = ".";
static char __pyx_k__5[] = ").";
static char __pyx_k__7[] = "'";
static char __pyx_k__8[] = "'.";
static char __pyx_k_c1[] = "c1";
static char __pyx_k_c2[] = "c2";
static char __pyx_k_no[] = "no";
static char __pyx_k_nv[] = "nv";
static char __pyx_k_sf[] = "sf";
static char __pyx_k_up[] = "up";
static char __pyx_k_a_x[] = "a_x";
static char __pyx_k_abc[] = "abc";
static char __pyx_k_abs[] = "abs";
static char __pyx_k_all[] = "all";
static char __pyx_k_amd[] = "amd";
static char __pyx_k_col[] = "col";
static char __pyx_k_cut[] = "cut";
static char __pyx_k_eps[] = "eps";
static char __pyx_k_ind[] = "ind";
static char __pyx_k_inf[] = "inf";
static char __pyx_k_not[] = ", not ";
static char __pyx_k_qmd[] = "qmd";
static char __pyx_k_rel[] = "rel";
static char __pyx_k_rhs[] = "rhs";
static char __pyx_k_row[] = "row";
static char __pyx_k_sum[] = "sum";
static char __pyx_k_v_t[] = "v_t";
static char __pyx_k_BTLU[] = "BTLU";
static char __pyx_k_Real[] = "Real";
static char __pyx_k_a_rc[] = "a_rc";
static char __pyx_k_args[] = "args";
static char __pyx_k_auto[] = "auto";
static char __pyx_k_down[] = "down";
static char __pyx_k_dual[] = "dual";
static char __pyx_k_file[] = "file";
static char __pyx_k_flow[] = "flow";
static char __pyx_k_free[] = "free";
static char __pyx_k_full[] = "full";
static char __pyx_k_head[] = "head";
static char __pyx_k_keys[] = "keys";
static char __pyx_k_kind[] = "kind";
static char __pyx_k_lazy[] = "lazy";
static char __pyx_k_main[] = "__main__";
static char __pyx_k_meth[] = "meth";
static char __pyx_k_name[] = "__name__";
static char __pyx_k_none[] = "none";
static char __pyx_k_only[] = "only.";
static char __pyx_k_orig[] = "orig";
static char __pyx_k_root[] = "root";
static char __pyx_k_seed[] = "seed";
static char __pyx_k_send[] = "send";
static char __pyx_k_sink[] = "sink";
static char __pyx_k_skip[] = "skip";
static char __pyx_k_tail[] = "tail";
static char __pyx_k_test[] = "__test__";
static char __pyx_k_v_es[] = "v_es";
static char __pyx_k_v_ls[] = "v_ls";
static char __pyx_k_v_pi[] = "v_pi";
static char __pyx_k_a_cap[] = "a_cap";
static char __pyx_k_a_low[] = "a_low";
static char __pyx_k_basic[] = "basic";
static char __pyx_k_bound[] = "bound";
static char __pyx_k_class[] = "class";
static char __pyx_k_close[] = "close";
static char __pyx_k_coeff[] = "coeff";
static char __pyx_k_cover[] = "cover";
static char __pyx_k_crash[] = "crash";
static char __pyx_k_depth[] = "depth";
static char __pyx_k_fixed[] = "fixed";
static char __pyx_k_fname[] = "fname";
static char __pyx_k_iarcs[] = "iarcs";
static char __pyx_k_ipcap[] = "ipcap";
static char __pyx_k_iphic[] = "iphic";
static char __pyx_k_iseed[] = "iseed";
static char __pyx_k_items[] = "items";
static char __pyx_k_itsup[] = "itsup";
static char __pyx_k_level[] = "level";
static char __pyx_k_lower[] = "lower";
static char __pyx_k_nodes[] = "nodes";
static char __pyx_k_nprob[] = "nprob";
static char __pyx_k_nsink[] = "nsink";
static char __pyx_k_nsorc[] = "nsorc";
static char __pyx_k_range[] = "range";
static char __pyx_k_round[] = "round";
static char __pyx_k_sinks[] = "sinks";
static char __pyx_k_start[] = "start";
static char __pyx_k_throw[] = "throw";
static char __pyx_k_total[] = "total";
static char __pyx_k_upper[] = "upper";
static char __pyx_k_v_cut[] = "v_cut";
static char __pyx_k_v_rhs[] = "v_rhs";
static char __pyx_k_v_set[] = "v_set";
static char __pyx_k_v_wgt[] = "v_wgt";
static char __pyx_k_width[] = "width";
static char __pyx_k_Givens[] = "Givens";
static char __pyx_k_Gomory[] = "Gomory";
static char __pyx_k_Harris[] = "Harris";
static char __pyx_k_a_cost[] = "a_cost";
static char __pyx_k_active[] = "active";
static char __pyx_k_binary[] = "binary";
static char __pyx_k_bounds[] = "bounds";
static char __pyx_k_branch[] = "branch";
static char __pyx_k_clique[] = "clique";
static char __pyx_k_coeffs[] = "coeffs";
static char __pyx_k_cutgen[] = "cutgen";
static char __pyx_k_degree[] = "degree";
static char __pyx_k_encode[] = "encode";
static char __pyx_k_format[] = "format";
static char __pyx_k_import[] = "__import__";
static char __pyx_k_intopt[] = "intopt";
static char __pyx_k_ipoint[] = "ipoint";
static char __pyx_k_maxcap[] = "maxcap";
static char __pyx_k_maxcst[] = "maxcst";
static char __pyx_k_mincap[] = "mincap";
static char __pyx_k_mincst[] = "mincst";
static char __pyx_k_name_2[] = "name";
static char __pyx_k_netgen[] = "netgen";
static char __pyx_k_normal[] = "normal";
static char __pyx_k_ntsink[] = "ntsink";
static char __pyx_k_ntsorc[] = "ntsorc";
static char __pyx_k_obj_ll[] = "obj_ll";
static char __pyx_k_obj_ul[] = "obj_ul";
static char __pyx_k_origin[] = "origin";
static char __pyx_k_primal[] = "primal";
static char __pyx_k_rmfgen[] = "rmfgen";
static char __pyx_k_rowgen[] = "rowgen";
static char __pyx_k_solver[] = "solver";
static char __pyx_k_source[] = "source";
static char __pyx_k_status[] = "status";
static char __pyx_k_symamd[] = "symamd";
static char __pyx_k_values[] = "values";
static char __pyx_k_vertex[] = "vertex";
static char __pyx_k_Dantzig[] = "Dantzig";
static char __pyx_k_Mapping[] = "Mapping";
static char __pyx_k_arc_ptr[] = "arc_ptr";
static char __pyx_k_asnform[] = "asnform";
static char __pyx_k_bounded[] = "bounded";
static char __pyx_k_breadth[] = "breadth";
static char __pyx_k_caps_lb[] = "caps_lb";
static char __pyx_k_caps_ub[] = "caps_ub";
static char __pyx_k_cost_lb[] = "cost_lb";
static char __pyx_k_cost_ub[] = "cost_ub";
static char __pyx_k_current[] = "current";
static char __pyx_k_gridgen[] = "gridgen";
static char __pyx_k_integer[] = "integer";
static char __pyx_k_maximal[] = "maximal";
static char __pyx_k_maximum[] = "maximum";
static char __pyx_k_minimal[] = "minimal";
static char __pyx_k_numbers[] = "numbers";
static char __pyx_k_optimal[] = "optimal";
static char __pyx_k_problem[] = "problem";
static char __pyx_k_read_lp[] = "read_lp";
static char __pyx_k_regular[] = "regular";
static char __pyx_k_simplex[] = "simplex.";
static char __pyx_k_sources[] = "sources";
static char __pyx_k_two_way[] = "two_way";
static char __pyx_k_vartype[] = "vartype";
static char __pyx_k_Sequence[] = "Sequence";
static char __pyx_k_add_cols[] = "add_cols";
static char __pyx_k_add_rows[] = "add_rows";
static char __pyx_k_ecyglpki[] = "ecyglpki";
static char __pyx_k_feasible[] = "feasible";
static char __pyx_k_find_col[] = "find_col";
static char __pyx_k_find_row[] = "find_row";
static char __pyx_k_heur_sol[] = "heur_sol";
static char __pyx_k_improved[] = "improved";
static char __pyx_k_maximize[] = "maximize";
static char __pyx_k_minimize[] = "minimize";
static char __pyx_k_prob_ptr[] = "_prob_ptr";
static char __pyx_k_read_mps[] = "read_mps";
static char __pyx_k_rounding[] = "rounding";
static char __pyx_k_rowclass[] = "rowclass";
static char __pyx_k_standard[] = "standard";
static char __pyx_k_steepest[] = "steepest";
static char __pyx_k_Exception[] = "Exception";
static char __pyx_k_TypeError[] = "TypeError";
static char __pyx_k_arc_ptr_2[] = "_arc_ptr";
static char __pyx_k_branchdir[] = "branchdir";
static char __pyx_k_condition[] = "condition";
static char __pyx_k_copy_prob[] = "copy_prob";
static char __pyx_k_direction[] = "direction";
static char __pyx_k_dist_caps[] = "dist_caps";
static char __pyx_k_dominated[] = "dominated";
static char __pyx_k_enumerate[] = "enumerate";
static char __pyx_k_geometric[] = "geometric";
static char __pyx_k_graph_ptr[] = "graph_ptr";
static char __pyx_k_obj_bound[] = "obj_bound";
static char __pyx_k_read_prob[] = "read_prob";
static char __pyx_k_simplex_2[] = "simplex";
static char __pyx_k_unbounded[] = "unbounded";
static char __pyx_k_undefined[] = "undefined";
static char __pyx_k_use_bound[] = "use_bound";
static char __pyx_k_warnerror[] = "warnerror";
static char __pyx_k_ValueError[] = "ValueError";
static char __pyx_k_cbfunc_ptr[] = "cbfunc_ptr";
static char __pyx_k_cbinfo_ptr[] = "cbinfo_ptr";
static char __pyx_k_continuous[] = "continuous";
static char __pyx_k_copy_names[] = "copy_names";
static char __pyx_k_dist_costs[] = "dist_costs";
static char __pyx_k_dominating[] = "dominating";
static char __pyx_k_equalities[] = "equalities";
static char __pyx_k_get_status[] = "get_status";
static char __pyx_k_infeasible[] = "infeasible";
static char __pyx_k_ipt_status[] = "ipt_status";
static char __pyx_k_mip_status[] = "mip_status";
static char __pyx_k_parameters[] = "parameters";
static char __pyx_k_preprocess[] = "preprocess";
static char __pyx_k_prob_ptr_2[] = "prob_ptr";
static char __pyx_k_projection[] = "projection";
static char __pyx_k_read_graph[] = "read_graph";
static char __pyx_k_subproblem[] = "subproblem";
static char __pyx_k_vertex_ptr[] = "vertex_ptr";
static char __pyx_k_Lower_bound[] = "Lower bound (";
static char __pyx_k_collections[] = "collections";
static char __pyx_k_find_vertex[] = "find_vertex";
static char __pyx_k_graph_ptr_2[] = "_graph_ptr";
static char __pyx_k_no_feasible[] = "no feasible";
static char __pyx_k_read_ccdata[] = "read_ccdata";
static char __pyx_k_read_cnfsat[] = "read_cnfsat";
static char __pyx_k_row_or_cols[] = "row_or_cols";
static char __pyx_k_str_str_not[] = "(str 'str'), not '";
static char __pyx_k_upper_bound[] = "upper bound (";
static char __pyx_k_GLPK_version[] = "GLPK_version";
static char __pyx_k_RuntimeError[] = "RuntimeError";
static char __pyx_k_add_vertices[] = "add_vertices";
static char __pyx_k_get_col_name[] = "get_col_name";
static char __pyx_k_get_col_type[] = "get_col_type";
static char __pyx_k_get_num_cols[] = "get_num_cols";
static char __pyx_k_get_num_rows[] = "get_num_rows";
static char __pyx_k_get_row_name[] = "get_row_name";
static char __pyx_k_get_row_type[] = "get_row_type";
static char __pyx_k_last_fracvar[] = "last_fracvar";
static char __pyx_k_most_fracvar[] = "most_fracvar";
static char __pyx_k_read_asnprob[] = "read_asnprob";
static char __pyx_k_read_maxflow[] = "read_maxflow";
static char __pyx_k_read_mincost[] = "read_mincost";
static char __pyx_k_Bartels_Golub[] = "Bartels-Golub";
static char __pyx_k_OverflowError[] = "OverflowError";
static char __pyx_k_StopIteration[] = "StopIteration";
static char __pyx_k_arc_data_size[] = "arc_data_size";
static char __pyx_k_equilibration[] = "equilibration";
static char __pyx_k_first_fracvar[] = "first_fracvar";
static char __pyx_k_ios_last_node[] = "ios_last_node";
static char __pyx_k_solution_file[] = "solution file";
static char __pyx_k_Forrest_Tomlin[] = "Forrest-Tomlin";
static char __pyx_k_Solver_failure[] = "Solver failure.";
static char __pyx_k_ios_first_node[] = "ios_first_node";
static char __pyx_k_obj_ll_reached[] = "obj_ll reached";
static char __pyx_k_obj_ul_reached[] = "obj_ul reached";
static char __pyx_k_ArithmeticError[] = "ArithmeticError";
static char __pyx_k_Driebeek_Tomlin[] = "Driebeek-Tomlin";
static char __pyx_k_collections_abc[] = "collections.abc";
static char __pyx_k_get_col_name_if[] = "get_col_name_if";
static char __pyx_k_get_row_name_if[] = "get_row_name_if";
static char __pyx_k_names_preferred[] = "names_preferred";
static char __pyx_k_Basis_is_invalid[] = "Basis is invalid.";
static char __pyx_k_Callback_routine[] = "Callback routine";
static char __pyx_k_dual_fail_primal[] = "dual_fail_primal";
static char __pyx_k_hybrid_peudocost[] = "hybrid_peudocost";
static char __pyx_k_perfect_maximize[] = "perfect_maximize";
static char __pyx_k_perfect_minimize[] = "perfect_minimize";
static char __pyx_k_vertex_data_size[] = "vertex_data_size";
static char __pyx_k_Solution_rejected[] = "Solution rejected.";
static char __pyx_k_Vertex_name_a_str[] = "Vertex name, a `str`";
static char __pyx_k_is_not_a_row_name[] = "' is not a row name.";
static char __pyx_k_must_not_dominate[] = ") must not dominate ";
static char __pyx_k_to_CNF_SAT_format[] = "to CNF SAT format.";
static char __pyx_k_find_col_as_needed[] = "find_col_as_needed";
static char __pyx_k_find_row_as_needed[] = "find_row_as_needed";
static char __pyx_k_Time_limit_exceeded[] = "Time limit exceeded.";
static char __pyx_k_get_row_or_col_name[] = "get_row_or_col_name";
static char __pyx_k_i_e_length_2_tuples[] = "i.e., length-2 tuples.";
static char __pyx_k_Head_vertex_a_Vertex[] = "Head vertex, a `.Vertex`";
static char __pyx_k_Tail_vertex_a_Vertex[] = "Tail vertex, a `.Vertex`";
static char __pyx_k_Time_limit_ms_an_int[] = "Time limit [ms], an `int`";
static char __pyx_k_is_not_a_column_name[] = "' is not a column name.";
static char __pyx_k_is_not_a_vertex_name[] = "' is not a vertex name.";
static char __pyx_k_Error_reading_LP_file[] = "Error reading LP file.";
static char __pyx_k_Error_writing_LP_file[] = "Error writing LP file.";
static char __pyx_k_Numerical_instability[] = "Numerical instability ";
static char __pyx_k_Row_status_must_be_in[] = "Row status must be in ";
static char __pyx_k_find_vertex_as_needed[] = "find_vertex_as_needed";
static char __pyx_k_Error_reading_MPS_file[] = "Error reading MPS file.";
static char __pyx_k_Error_writing_MPS_file[] = "Error writing MPS file.";
static char __pyx_k_Incorrect_bounds_given[] = "Incorrect bounds given.";
static char __pyx_k_Incorrect_vertex_index[] = "Incorrect vertex index.";
static char __pyx_k_Iteration_limit_an_int[] = "Iteration limit, an `int`";
static char __pyx_k_get_row_or_col_name_if[] = "get_row_or_col_name_if";
static char __pyx_k_Error_reading_GLPK_file[] = "Error reading GLPK file.";
static char __pyx_k_Error_writing_GLPK_file[] = "Error writing GLPK file.";
static char __pyx_k_Basis_matrix_is_singular[] = "Basis matrix is singular.";
static char __pyx_k_Iteration_limit_exceeded[] = "Iteration limit exceeded.";
static char __pyx_k_The_search_tree_is_empty[] = "The search tree is empty.";
static char __pyx_k_First_incoming_arc_an_Arc[] = "First incoming arc, an `.Arc`";
static char __pyx_k_First_outgoing_arc_an_Arc[] = "First outgoing arc, an `.Arc`";
static char __pyx_k_find_row_or_col_as_needed[] = "find_row_or_col_as_needed";
static char __pyx_k_Error_reading_CNF_SAT_file[] = "Error reading CNF-SAT file.";
static char __pyx_k_Error_writing_CNF_SAT_file[] = "Error writing CNF-SAT file.";
static char __pyx_k_LP_relaxation_is_unbounded[] = "LP relaxation is unbounded.";
static char __pyx_k_optimization_solution_file[] = "optimization solution file";
static char __pyx_k_LP_relaxation_is_infeasible[] = "LP relaxation is infeasible.";
static char __pyx_k_on_solving_Newtonian_system[] = "on solving Newtonian system.";
static char __pyx_k_Vertex_ordinal_number_an_int[] = "Vertex ordinal number, an `int`";
static char __pyx_k_ind_0_must_be_row_or_col_not[] = "'ind[0]' must be 'row' or 'col', not '";
static char __pyx_k_integer_optimization_solution[] = "integer optimization solution.";
static char __pyx_k_Coefficient_keys_must_be_pairs[] = "Coefficient keys must be pairs, ";
static char __pyx_k_Name_must_not_exceed_255_bytes[] = "Name must not exceed 255 bytes.";
static char __pyx_k_cb_size_must_be_an_int_between[] = "'cb_size' must be an int between 0 and 256.";
static char __pyx_k_direction_should_be_1_or_1_not[] = "'direction' should be +1 or -1, not ";
static char __pyx_k_row_or_cols_must_be_a_Sequence[] = "'row_or_cols' must be a 'Sequence', not ";
static char __pyx_k_vertex_must_be_a_number_int_or[] = "'vertex' must be a number ('int') or a name ";
static char __pyx_k_Basis_matrix_is_ill_conditioned[] = "Basis matrix is ill-conditioned.";
static char __pyx_k_Coefficient_values_must_be_Real[] = "Coefficient values must be 'Real'.";
static char __pyx_k_Error_assignment_problem_DIMACS[] = "Error assignment problem DIMACS file";
static char __pyx_k_Error_writing_printable_integer[] = "Error writing printable integer ";
static char __pyx_k_Number_of_extra_bytes_allocated[] = "Number of extra bytes allocated for each search tree node, an `int`\n\n        Up to 256 bytes can be allocated for each node of the branch-and-bound\n        tree to store application-specific data. On creating a node these bytes\n        are initialized by binary zeros.\n\n        .. doctest:: IntOptControls\n\n            >>> r.cb_size  # the GLPK default\n            0\n            >>> r.cb_size = 128\n            >>> r.cb_size\n            128\n\n        ";
static char __pyx_k_Number_of_pivot_candidates_that[] = "Number of pivot candidates that need to be considered, an `int` \342\211\2451";
static char __pyx_k_Presolver_Problem_has_no_primal[] = "Presolver: Problem has no primal feasible solution.";
static char __pyx_k_The_number_of_arcs_in_the_graph[] = "The number of arcs in the graph, an `int`";
static char __pyx_k_The_pricing_technique_a_str_The[] = "The pricing technique, a `str`\n\n        The possible values are\n\n        * `'Dantzig'`: standard \342\200\230textbook\342\200\231\n        * `'steepest'`: projected steepest edge\n\n        .. doctest:: SimplexControls\n\n            >>> r.pricing  # the GLPK default\n            'steepest'\n            >>> r.pricing = 'Dantzig'\n            >>> r.pricing\n            'Dantzig'\n\n        ";
static char __pyx_k_The_problem_has_no_rows_columns[] = "The problem has no rows/columns.";
static char __pyx_k_The_right_hand_side_vector_must[] = "The right-hand side vector must have the same ";
static char __pyx_k_This_is_the_search_tree_root_it[] = "This is the search tree root; it has no parent.";
static char __pyx_k_Time_limit_ms_for_the_proximity[] = "Time limit [ms] for the proximity earch heuristic, an `int`";
static char __pyx_k_Whether_to_generate_mixed_cover[] = "Whether to generate mixed cover cuts, a `bool`";
static char __pyx_k_Whether_to_use_Suhl_heuristic_a[] = "Whether to use Suhl heuristic, a `bool`";
static char __pyx_k_Whether_to_use_the_LP_presolver[] = "Whether to use the LP presolver, a `bool`";
static char __pyx_k_col_must_be_a_number_int_or_a_n[] = "'col' must be a number ('int') or a name ";
static char __pyx_k_home_equaeghe_werk_progs_ecyglp[] = "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki.pyx";
static char __pyx_k_ind_must_be_a_number_int_or_a_p[] = "'ind' must be a number ('int') or a pair, not '";
static char __pyx_k_row_must_be_a_number_int_or_a_n[] = "'row' must be a number ('int') or a name ";
static char __pyx_k_Abs_tolerance_for_LP_solution_in[] = "Abs. tolerance for LP solution integer feasibility, a |Real| number\n\n        This is the absolute tolerance used to check if the optimal solution to\n        the current LP relaxation is integer feasible.\n\n        ";
static char __pyx_k_All_problem_parameters_must_be_i[] = "All problem parameters must be integer.";
static char __pyx_k_Assignment_problem_data_is_incor[] = "Assignment problem data is incorrect, code ";
static char __pyx_k_Branch_and_cut_callback_terminat[] = "Branch-and-cut callback terminated solver.";
static char __pyx_k_Coefficients_must_be_passed_in_a[] = "Coefficients must be passed in a 'Mapping', not ";
static char __pyx_k_Condition_is_either_equalities_o[] = "Condition is either 'equalities' or 'bounds'.";
static char __pyx_k_Dual_conditions_cannot_be_checke[] = "Dual conditions cannot be checked for the ";
static char __pyx_k_Error_reading_basic_solution_fil[] = "Error reading basic solution file";
static char __pyx_k_Error_reading_graph_DIMACS_cliqu[] = "Error reading graph DIMACS clique/coloring ";
static char __pyx_k_Error_reading_graph_from_plain_t[] = "Error reading graph from plain text file";
static char __pyx_k_Error_reading_integer_optimizati[] = "Error reading integer optimization solution ";
static char __pyx_k_Error_reading_interior_point_sol[] = "Error reading interior point solution file";
static char __pyx_k_Error_reading_maximum_flow_probl[] = "Error reading maximum flow problem DIMACS ";
static char __pyx_k_Error_reading_min_cost_flow_prob[] = "Error reading min-cost flow problem DIMACS ";
static char __pyx_k_Error_writing_assignment_problem[] = "Error writing assignment problem DIMACS file";
static char __pyx_k_Error_writing_basic_solution_fil[] = "Error writing basic solution file";
static char __pyx_k_Error_writing_graph_DIMACS_cliqu[] = "Error writing graph DIMACS clique/coloring ";
static char __pyx_k_Error_writing_graph_plain_text_f[] = "Error writing graph plain text file";
static char __pyx_k_Error_writing_integer_optimizati[] = "Error writing integer optimization solution ";
static char __pyx_k_Error_writing_interior_point_sol[] = "Error writing interior point solution file";
static char __pyx_k_Error_writing_maximum_flow_probl[] = "Error writing maximum flow problem DIMACS ";
static char __pyx_k_Error_writing_min_cost_flow_prob[] = "Error writing min-cost flow problem DIMACS ";
static char __pyx_k_Error_writing_printable_basic_so[] = "Error writing printable basic solution file";
static char __pyx_k_Error_writing_printable_interior[] = "Error writing printable interior point ";
static char __pyx_k_Integer_overflow_occurred_when_t[] = "Integer overflow occurred when transforming ";
static char __pyx_k_Lower_bound_must_be_None_or_Real[] = "Lower bound must be 'None' or 'Real', not ";
static char __pyx_k_Lower_limit_of_the_objective_fun[] = "Lower limit of the objective function, a |Real| number\n\n        (Used only if *meth* is `'dual'`.)\n\n        ";
static char __pyx_k_Markowitz_threshold_pivoting_tol[] = "Markowitz threshold pivoting tolerance, a |Real| number\n\n        (Value must lie between 0 and 1.)\n\n        ";
static char __pyx_k_Maximal_number_of_additional_row[] = "Maximal number of additional row-like factors, an `int`\n\n        (Used only when *type* contains `'Forrest-Tomlin'`.)\n\n        ";
static char __pyx_k_Network_generator_parameters_are[] = "Network generator parameters are inconsistent";
static char __pyx_k_Next_arc_having_the_same_head_en[] = "Next arc having the same head endpoint, an `.Arc`";
static char __pyx_k_Next_arc_having_the_same_tail_en[] = "Next arc having the same tail endpoint, an `.Arc`";
static char __pyx_k_No_optimal_LP_relaxation_basis_p[] = "No optimal LP relaxation basis provided.";
static char __pyx_k_Objective_function_limits_only_w[] = "Objective function limits only with dual ";
static char __pyx_k_Only_primal_simplex_with_exact_a[] = "Only primal simplex with exact arithmetic.";
static char __pyx_k_Output_delay_ms_of_current_LP_re[] = "Output delay [ms] of current LP relaxation solution, an `int`";
static char __pyx_k_Output_delay_ms_of_solution_proc[] = "Output delay [ms] of solution process information, an `int`";
static char __pyx_k_Output_frequency_iterations_of_i[] = "Output frequency [iterations] of informational messages, an `int`";
static char __pyx_k_Output_frequency_ms_of_informati[] = "Output frequency [ms] of informational messages, an `int`";
static char __pyx_k_Presolver_Problem_has_no_dual_fe[] = "Presolver: Problem has no dual feasible solution.";
static char __pyx_k_Previous_arc_having_the_same_hea[] = "Previous arc having the same head endpoint, an `.Arc`";
static char __pyx_k_Previous_arc_having_the_same_tai[] = "Previous arc having the same tail endpoint, an `.Arc`";
static char __pyx_k_Rel_tolerance_of_LP_objective_op[] = "Rel. tolerance of LP objective optimality, a |Real| number\n\n        This is the relative tolerance used to check if the objective value in\n        the optimal solution to the current LP relaxation is not better than in\n        the best known integer feasible solution.\n\n        ";
static char __pyx_k_Relative_mip_gap_tolerance_has_b[] = "Relative mip gap tolerance has been reached";
static char __pyx_k_Right_hand_side_must_contain_Rea[] = "Right-hand side must contain 'Real' numbers ";
static char __pyx_k_Size_of_data_associated_with_eac[] = "Size of data associated with each vertex, an `int`";
static char __pyx_k_The_backtracking_technique_a_str[] = "The backtracking technique, a `str`\n\n        The possible values are\n\n        * `'depth'`: depth first search\n        * `'breadth'`: breadth first search\n        * `'bound'`: best local bound\n        * `'projection'`: best projection heuristic\n\n        ";
static char __pyx_k_The_basis_factorization_type_str[] = "The basis factorization type, `str` pairs\n\n        Possible first components:\n\n        * `'LU'`: plain LU factorization\n        * `'BTLU'`: block-triangular LU factorization\n\n        Possible second components\n\n        * `'Forrest-Tomlin'`: `Forrest\342\200\223Tomlin`_ update applied to U\n          (only with plain LU factorization)\n        * `'Bartels-Golub'`: `Bartels\342\200\223Golub`_ update applied to Schur\n          complement\n        * `'Givens'`: Givens rotation update applied to Schur complement\n\n        .. _Forrest\342\200\223Tomlin: http://dx.doi.org/10.1007/BF01584548\n        .. _Bartels\342\200\223Golub: http://dx.doi.org/10.1145/362946.362974\n\n        .. doctest:: FactorizationControls\n\n            >>> r.type  # the GLPK default\n            ('LU', 'Forrest-Tomlin')\n\n        ";
static char __pyx_k_The_branching_technique_a_str_Th[] = "The branching technique, a `str`\n\n        The possible values are\n\n        * `'first_fracvar'`: first fractional variable\n        * `'last_fracvar'`: last fractional variable\n        * `'most_fracvar'`: most fractional variable\n        * `'Driebeek-Tomlin'`: heuristic by Driebeek_ & Tomlin\n        * `'hybrid_peudocost'`: hybrid pseudocost heuristic\n\n        .. _Driebeek: http://dx.doi.org/10.1287/ijoc.4.3.267\n\n        ";
static char __pyx_k_The_message_level_a_str_The_poss[] = "The message level, a `str`\n\n        The possible values are\n\n        * `'no'`: no output\n        * `'warnerror'`: warnings and errors only\n        * `'normal'`: normal output\n        * `'full'`: normal output and informational messages\n\n        .. doctest:: SimplexControls\n\n            >>> r.msg_lev  # the GLPK default\n            'full'\n            >>> r.msg_lev = 'no'\n            >>> r.msg_lev\n            'no'\n\n        ";
static char __pyx_k_The_number_of_vertices_in_the_gr[] = "The number of vertices in the graph, an `int`";
static char __pyx_k_The_ordering_algorithm_used_prio[] = "The ordering algorithm used prior to Cholesky factorization, a `str`\n\n        The possible values are\n\n        * `'orig'`: normal (original)\n        * `'qmd'`: quotient minimum degree\n        * `'amd'`: approximate minimum degree\n        * `'symamd'`: approximate minimum degree for symmetric matrices\n\n        .. doctest:: IPointControls\n\n            >>> r.ord_alg  # the GLPK default\n            'amd'\n            >>> r.ord_alg = 'qmd'\n            >>> r.ord_alg\n            'qmd'\n\n        ";
static char __pyx_k_The_preprocessing_technique_a_st[] = "The preprocessing technique, a `str`\n\n        The possible values are\n\n        * `'none'`: disable preprocessing\n        * `'root'`: preprocessing only on the root level\n        * `'all'`: preprocessing on all levels\n\n        ";
static char __pyx_k_The_ratio_test_technique_a_str_T[] = "The ratio test technique, a `str`\n\n        The possible values are\n\n        * `'standard'`: standard \342\200\230textbook\342\200\231\n        * `'Harris'`: Harris\342\200\231s two-pass ratio test\n\n        .. doctest:: SimplexControls\n\n            >>> r.r_test  # the GLPK default\n            'Harris'\n            >>> r.r_test = 'standard'\n            >>> r.r_test\n            'standard'\n\n        ";
static char __pyx_k_The_relative_MIP_gap_tolerance_a[] = "The relative MIP-gap tolerance, a |Real| number\n\n        The search stops once the relative MIP-gap falls below this value.\n\n        ";
static char __pyx_k_The_simplex_method_a_str_The_pos[] = "The simplex method, a `str`\n\n        The possible values are\n\n        * `'primal'`: two-phase primal simplex\n        * `'dual'`: two-phase dual simplex\n        * `'dual_fail_primal'`: two-phase dual simplex and, if it fails,\n          switch to primal simplex\n\n        .. doctest:: SimplexControls\n\n            >>> r.meth  # the GLPK default\n            'primal'\n            >>> r.meth = 'dual_fail_primal'\n            >>> r.meth\n            'dual_fail_primal'\n\n        ";
static char __pyx_k_The_specified_graph_is_incorrect[] = "The specified graph is incorrect";
static char __pyx_k_There_is_no_current_active_subpr[] = "There is no current active subproblem.";
static char __pyx_k_There_is_no_next_active_subprobl[] = "There is no next active subproblem.";
static char __pyx_k_There_is_no_previous_active_subp[] = "There is no previous active subproblem.";
static char __pyx_k_Tolerance_below_which_numbers_ar[] = "Tolerance below which numbers are replaced by zero, a |Real| number";
static char __pyx_k_Tolerance_to_check_if_the_soluti[] = "Tolerance to check if the solution is primal feasible, a |Real| number";
static char __pyx_k_Tolerance_to_choose_eligble_pivo[] = "Tolerance to choose eligble pivotal elements, a |Real| number";
static char __pyx_k_Transit_pointer_passed_to_the_ro[] = "Transit pointer passed to the routine cb_func";
static char __pyx_k_Upper_bound_must_be_None_or_Real[] = "Upper bound must be 'None' or 'Real', not ";
static char __pyx_k_Upper_limit_of_the_objective_fun[] = "Upper limit of the objective function, a |Real| number\n\n        (Used only if *meth* is `'dual'`.)\n\n        ";
static char __pyx_k_Very_slow_convergence_or_diverge[] = "Very slow convergence or divergence.";
static char __pyx_k_Whether_to_apply_the_feasibility[] = "Whether to apply the `feasibility pump`_ heuristic, a `bool`\n\n        .. _feasibility pump: http://dx.doi.org/10.1007/s10107-004-0570-3\n\n        ";
static char __pyx_k_Whether_to_apply_the_proximity_s[] = "Whether to apply the `proximity search`_ heuristic, a `bool`\n\n        .. _proximity search: http://www.dei.unipd.it/~fisch/papers/proximity_search.pdf\n\n        ";
static char __pyx_k_Whether_to_binarize_integer_vari[] = "Whether to binarize integer variables, a `bool`\n\n        This option is only used if *presolve* is `True`.\n\n        ";
static char __pyx_k_Whether_to_generate_Gomorys_mixe[] = "Whether to generate Gomory\342\200\231s mixed integer cuts, a `bool`";
static char __pyx_k_Whether_to_generate_generate_cli[] = "Whether to generate generate clique cuts, a `bool`";
static char __pyx_k_Whether_to_generate_mixed_intege[] = "Whether to generate mixed integer rounding cuts, a `bool`";
static char __pyx_k_Whether_to_use_the_MIP_presolver[] = "Whether to use the MIP presolver, a `bool`\n\n        Using the MIP presolver may simplify the problem\n\n        ";
static char __pyx_k_number_of_components_as_the_basi[] = "number of components as the basis, ";
static char __pyx_k_size_of_data_associated_with_eac[] = "size of data associated with each arc, an `int`";
static char __pyx_k_Maximal_number_of_additional_row_2[] = "Maximal number of additional row and columns, an `int`\n\n        (Used only when *type* contains `'Bartels-Golub'` or `'Givens'`.)\n\n        ";
static char __pyx_k_The_message_level_a_str_The_poss_2[] = "The message level, a `str`\n\n        The possible values are\n\n        * `'no'`: no output\n        * `'warnerror'`: warnings and errors only\n        * `'normal'`: normal output\n        * `'full'`: normal output and informational messages\n\n        .. doctest:: IPointControls\n\n            >>> r.msg_lev  # the GLPK default\n            'full'\n            >>> r.msg_lev = 'no'\n            >>> r.msg_lev\n            'no'\n\n        ";
static char __pyx_k_The_message_level_a_str_The_poss_3[] = "The message level, a `str`\n\n        The possible values are\n\n        * `'no'`: no output\n        * `'warnerror'`: warnings and errors only\n        * `'normal'`: normal output\n        * `'full'`: normal output and informational messages\n\n        .. doctest:: IntOptControls\n\n            >>> r.msg_lev  # the GLPK default\n            'full'\n            >>> r.msg_lev = 'no'\n            >>> r.msg_lev\n            'no'\n\n        ";
static char __pyx_k_Tolerance_to_check_if_the_soluti_2[] = "Tolerance to check if the solution is dual feasible, a |Real| number";
static PyObject *__pyx_kp_s_All_problem_parameters_must_be_i;
static PyObject *__pyx_n_s_ArithmeticError;
static PyObject *__pyx_kp_s_Assignment_problem_data_is_incor;
static PyObject *__pyx_n_s_BTLU;
static PyObject *__pyx_kp_s_Bartels_Golub;
static PyObject *__pyx_kp_s_Basis_is_invalid;
static PyObject *__pyx_kp_s_Basis_matrix_is_ill_conditioned;
static PyObject *__pyx_kp_s_Basis_matrix_is_singular;
static PyObject *__pyx_kp_s_Branch_and_cut_callback_terminat;
static PyObject *__pyx_kp_s_Coefficient_keys_must_be_pairs;
static PyObject *__pyx_kp_s_Coefficient_values_must_be_Real;
static PyObject *__pyx_kp_s_Coefficients_must_be_passed_in_a;
static PyObject *__pyx_kp_s_Condition_is_either_equalities_o;
static PyObject *__pyx_n_s_Dantzig;
static PyObject *__pyx_kp_s_Driebeek_Tomlin;
static PyObject *__pyx_kp_s_Dual_conditions_cannot_be_checke;
static PyObject *__pyx_kp_s_Error_assignment_problem_DIMACS;
static PyObject *__pyx_kp_s_Error_reading_CNF_SAT_file;
static PyObject *__pyx_kp_s_Error_reading_GLPK_file;
static PyObject *__pyx_kp_s_Error_reading_LP_file;
static PyObject *__pyx_kp_s_Error_reading_MPS_file;
static PyObject *__pyx_kp_s_Error_reading_basic_solution_fil;
static PyObject *__pyx_kp_s_Error_reading_graph_DIMACS_cliqu;
static PyObject *__pyx_kp_s_Error_reading_graph_from_plain_t;
static PyObject *__pyx_kp_s_Error_reading_integer_optimizati;
static PyObject *__pyx_kp_s_Error_reading_interior_point_sol;
static PyObject *__pyx_kp_s_Error_reading_maximum_flow_probl;
static PyObject *__pyx_kp_s_Error_reading_min_cost_flow_prob;
static PyObject *__pyx_kp_s_Error_writing_CNF_SAT_file;
static PyObject *__pyx_kp_s_Error_writing_GLPK_file;
static PyObject *__pyx_kp_s_Error_writing_LP_file;
static PyObject *__pyx_kp_s_Error_writing_MPS_file;
static PyObject *__pyx_kp_s_Error_writing_assignment_problem;
static PyObject *__pyx_kp_s_Error_writing_basic_solution_fil;
static PyObject *__pyx_kp_s_Error_writing_graph_DIMACS_cliqu;
static PyObject *__pyx_kp_s_Error_writing_graph_plain_text_f;
static PyObject *__pyx_kp_s_Error_writing_integer_optimizati;
static PyObject *__pyx_kp_s_Error_writing_interior_point_sol;
static PyObject *__pyx_kp_s_Error_writing_maximum_flow_probl;
static PyObject *__pyx_kp_s_Error_writing_min_cost_flow_prob;
static PyObject *__pyx_kp_s_Error_writing_printable_basic_so;
static PyObject *__pyx_kp_s_Error_writing_printable_integer;
static PyObject *__pyx_kp_s_Error_writing_printable_interior;
static PyObject *__pyx_n_s_Exception;
static PyObject *__pyx_kp_s_Forrest_Tomlin;
static PyObject *__pyx_n_s_GLPK_version;
static PyObject *__pyx_n_s_Givens;
static PyObject *__pyx_n_s_Gomory;
static PyObject *__pyx_n_s_Harris;
static PyObject *__pyx_kp_s_Incorrect_bounds_given;
static PyObject *__pyx_kp_s_Incorrect_vertex_index;
static PyObject *__pyx_kp_s_Integer_overflow_occurred_when_t;
static PyObject *__pyx_kp_s_Iteration_limit_exceeded;
static PyObject *__pyx_kp_s_LP_relaxation_is_infeasible;
static PyObject *__pyx_kp_s_LP_relaxation_is_unbounded;
static PyObject *__pyx_n_s_LU;
static PyObject *__pyx_kp_s_Lower_bound;
static PyObject *__pyx_kp_s_Lower_bound_must_be_None_or_Real;
static PyObject *__pyx_n_s_Mapping;
static PyObject *__pyx_kp_s_Name_must_not_exceed_255_bytes;
static PyObject *__pyx_kp_s_Network_generator_parameters_are;
static PyObject *__pyx_kp_s_No_optimal_LP_relaxation_basis_p;
static PyObject *__pyx_kp_s_Numerical_instability;
static PyObject *__pyx_kp_s_Objective_function_limits_only_w;
static PyObject *__pyx_kp_s_Only_primal_simplex_with_exact_a;
static PyObject *__pyx_n_s_OverflowError;
static PyObject *__pyx_kp_s_Presolver_Problem_has_no_dual_fe;
static PyObject *__pyx_kp_s_Presolver_Problem_has_no_primal;
static PyObject *__pyx_n_s_Real;
static PyObject *__pyx_kp_s_Relative_mip_gap_tolerance_has_b;
static PyObject *__pyx_kp_s_Right_hand_side_must_contain_Rea;
static PyObject *__pyx_kp_s_Row_status_must_be_in;
static PyObject *__pyx_n_s_RuntimeError;
static PyObject *__pyx_n_s_Sequence;
static PyObject *__pyx_kp_s_Solution_rejected;
static PyObject *__pyx_kp_s_Solver_failure;
static PyObject *__pyx_n_s_StopIteration;
static PyObject *__pyx_kp_s_The_problem_has_no_rows_columns;
static PyObject *__pyx_kp_s_The_right_hand_side_vector_must;
static PyObject *__pyx_kp_s_The_search_tree_is_empty;
static PyObject *__pyx_kp_s_The_specified_graph_is_incorrect;
static PyObject *__pyx_kp_s_There_is_no_current_active_subpr;
static PyObject *__pyx_kp_s_There_is_no_next_active_subprobl;
static PyObject *__pyx_kp_s_There_is_no_previous_active_subp;
static PyObject *__pyx_kp_s_This_is_the_search_tree_root_it;
static PyObject *__pyx_kp_s_Time_limit_exceeded;
static PyObject *__pyx_n_s_TypeError;
static PyObject *__pyx_kp_s_Upper_bound_must_be_None_or_Real;
static PyObject *__pyx_n_s_ValueError;
static PyObject *__pyx_kp_s_Very_slow_convergence_or_diverge;
static PyObject *__pyx_kp_s__2;
static PyObject *__pyx_kp_s__4;
static PyObject *__pyx_kp_s__5;
static PyObject *__pyx_kp_s__7;
static PyObject *__pyx_kp_s__8;
static PyObject *__pyx_n_s_a;
static PyObject *__pyx_n_s_a_cap;
static PyObject *__pyx_n_s_a_cost;
static PyObject *__pyx_n_s_a_low;
static PyObject *__pyx_n_s_a_rc;
static PyObject *__pyx_n_s_a_x;
static PyObject *__pyx_n_s_abc;
static PyObject *__pyx_n_s_abs;
static PyObject *__pyx_n_s_active;
static PyObject *__pyx_n_s_add_cols;
static PyObject *__pyx_n_s_add_rows;
static PyObject *__pyx_n_s_add_vertices;
static PyObject *__pyx_n_s_all;
static PyObject *__pyx_n_s_amd;
static PyObject *__pyx_n_s_arc_data_size;
static PyObject *__pyx_n_s_arc_ptr;
static PyObject *__pyx_n_s_arc_ptr_2;
static PyObject *__pyx_n_s_args;
static PyObject *__pyx_n_s_asnform;
static PyObject *__pyx_n_s_auto;
static PyObject *__pyx_n_s_b;
static PyObject *__pyx_n_s_basic;
static PyObject *__pyx_n_s_binary;
static PyObject *__pyx_n_s_bound;
static PyObject *__pyx_n_s_bounded;
static PyObject *__pyx_n_s_bounds;
static PyObject *__pyx_n_s_branch;
static PyObject *__pyx_n_s_branchdir;
static PyObject *__pyx_n_s_breadth;
static PyObject *__pyx_n_s_c1;
static PyObject *__pyx_n_s_c2;
static PyObject *__pyx_n_s_caps_lb;
static PyObject *__pyx_n_s_caps_ub;
static PyObject *__pyx_kp_s_cb_size_must_be_an_int_between;
static PyObject *__pyx_n_s_cbfunc_ptr;
static PyObject *__pyx_n_s_cbinfo_ptr;
static PyObject *__pyx_n_s_class;
static PyObject *__pyx_n_s_clique;
static PyObject *__pyx_n_s_close;
static PyObject *__pyx_n_s_coeff;
static PyObject *__pyx_n_s_coeffs;
static PyObject *__pyx_n_s_col;
static PyObject *__pyx_kp_s_col_must_be_a_number_int_or_a_n;
static PyObject *__pyx_n_s_collections;
static PyObject *__pyx_n_s_collections_abc;
static PyObject *__pyx_n_s_condition;
static PyObject *__pyx_n_s_continuous;
static PyObject *__pyx_n_s_copy_names;
static PyObject *__pyx_n_s_copy_prob;
static PyObject *__pyx_n_s_cost_lb;
static PyObject *__pyx_n_s_cost_ub;
static PyObject *__pyx_n_s_cover;
static PyObject *__pyx_n_s_crash;
static PyObject *__pyx_n_s_current;
static PyObject *__pyx_n_s_cut;
static PyObject *__pyx_n_s_cutgen;
static PyObject *__pyx_n_s_degree;
static PyObject *__pyx_n_s_depth;
static PyObject *__pyx_n_s_direction;
static PyObject *__pyx_kp_s_direction_should_be_1_or_1_not;
static PyObject *__pyx_n_s_dist_caps;
static PyObject *__pyx_n_s_dist_costs;
static PyObject *__pyx_n_s_dominated;
static PyObject *__pyx_n_s_dominating;
static PyObject *__pyx_n_s_down;
static PyObject *__pyx_n_s_dual;
static PyObject *__pyx_n_s_dual_fail_primal;
static PyObject *__pyx_n_s_ecyglpki;
static PyObject *__pyx_n_s_encode;
static PyObject *__pyx_n_s_enumerate;
static PyObject *__pyx_n_s_eps;
static PyObject *__pyx_n_s_equalities;
static PyObject *__pyx_n_s_equilibration;
static PyObject *__pyx_n_s_feasible;
static PyObject *__pyx_n_s_file;
static PyObject *__pyx_n_s_find_col;
static PyObject *__pyx_n_s_find_col_as_needed;
static PyObject *__pyx_n_s_find_row;
static PyObject *__pyx_n_s_find_row_as_needed;
static PyObject *__pyx_n_s_find_row_or_col_as_needed;
static PyObject *__pyx_n_s_find_vertex;
static PyObject *__pyx_n_s_find_vertex_as_needed;
static PyObject *__pyx_n_s_first_fracvar;
static PyObject *__pyx_n_s_fixed;
static PyObject *__pyx_n_s_flow;
static PyObject *__pyx_n_s_fname;
static PyObject *__pyx_n_s_format;
static PyObject *__pyx_n_s_free;
static PyObject *__pyx_n_s_full;
static PyObject *__pyx_n_s_geometric;
static PyObject *__pyx_n_s_get_col_name;
static PyObject *__pyx_n_s_get_col_name_if;
static PyObject *__pyx_n_s_get_col_type;
static PyObject *__pyx_n_s_get_num_cols;
static PyObject *__pyx_n_s_get_num_rows;
static PyObject *__pyx_n_s_get_row_name;
static PyObject *__pyx_n_s_get_row_name_if;
static PyObject *__pyx_n_s_get_row_or_col_name;
static PyObject *__pyx_n_s_get_row_or_col_name_if;
static PyObject *__pyx_n_s_get_row_type;
static PyObject *__pyx_n_s_get_status;
static PyObject *__pyx_n_s_graph_ptr;
static PyObject *__pyx_n_s_graph_ptr_2;
static PyObject *__pyx_n_s_gridgen;
static PyObject *__pyx_n_s_head;
static PyObject *__pyx_n_s_heur_sol;
static PyObject *__pyx_kp_s_home_equaeghe_werk_progs_ecyglp;
static PyObject *__pyx_n_s_hybrid_peudocost;
static PyObject *__pyx_kp_s_i_e_length_2_tuples;
static PyObject *__pyx_n_s_iarcs;
static PyObject *__pyx_n_s_import;
static PyObject *__pyx_n_s_improved;
static PyObject *__pyx_n_s_ind;
static PyObject *__pyx_kp_s_ind_0_must_be_row_or_col_not;
static PyObject *__pyx_kp_s_ind_must_be_a_number_int_or_a_p;
static PyObject *__pyx_n_s_inf;
static PyObject *__pyx_n_s_infeasible;
static PyObject *__pyx_n_s_integer;
static PyObject *__pyx_kp_s_integer_optimization_solution;
static PyObject *__pyx_n_s_intopt;
static PyObject *__pyx_n_s_ios_first_node;
static PyObject *__pyx_n_s_ios_last_node;
static PyObject *__pyx_n_s_ipcap;
static PyObject *__pyx_n_s_iphic;
static PyObject *__pyx_n_s_ipoint;
static PyObject *__pyx_n_s_ipt_status;
static PyObject *__pyx_kp_s_is_not_a_column_name;
static PyObject *__pyx_kp_s_is_not_a_row_name;
static PyObject *__pyx_kp_s_is_not_a_vertex_name;
static PyObject *__pyx_n_s_iseed;
static PyObject *__pyx_n_s_items;
static PyObject *__pyx_n_s_itsup;
static PyObject *__pyx_n_s_k;
static PyObject *__pyx_n_s_keys;
static PyObject *__pyx_n_s_kind;
static PyObject *__pyx_n_s_last_fracvar;
static PyObject *__pyx_n_s_lazy;
static PyObject *__pyx_n_s_level;
static PyObject *__pyx_n_s_lower;
static PyObject *__pyx_n_s_main;
static PyObject *__pyx_n_s_maxcap;
static PyObject *__pyx_n_s_maxcst;
static PyObject *__pyx_n_s_maximal;
static PyObject *__pyx_n_s_maximize;
static PyObject *__pyx_n_s_maximum;
static PyObject *__pyx_n_s_meth;
static PyObject *__pyx_n_s_mincap;
static PyObject *__pyx_n_s_mincst;
static PyObject *__pyx_n_s_minimal;
static PyObject *__pyx_n_s_minimize;
static PyObject *__pyx_n_s_mip_status;
static PyObject *__pyx_n_s_most_fracvar;
static PyObject *__pyx_kp_s_must_not_dominate;
static PyObject *__pyx_n_s_name;
static PyObject *__pyx_n_s_name_2;
static PyObject *__pyx_n_s_names_preferred;
static PyObject *__pyx_n_s_netgen;
static PyObject *__pyx_n_s_no;
static PyObject *__pyx_kp_s_no_feasible;
static PyObject *__pyx_n_s_nodes;
static PyObject *__pyx_n_s_none;
static PyObject *__pyx_n_s_normal;
static PyObject *__pyx_kp_s_not;
static PyObject *__pyx_n_s_nprob;
static PyObject *__pyx_n_s_nsink;
static PyObject *__pyx_n_s_nsorc;
static PyObject *__pyx_n_s_ntsink;
static PyObject *__pyx_n_s_ntsorc;
static PyObject *__pyx_kp_s_number_of_components_as_the_basi;
static PyObject *__pyx_n_s_numbers;
static PyObject *__pyx_n_s_nv;
static PyObject *__pyx_n_s_obj_bound;
static PyObject *__pyx_n_s_obj_ll;
static PyObject *__pyx_kp_s_obj_ll_reached;
static PyObject *__pyx_n_s_obj_ul;
static PyObject *__pyx_kp_s_obj_ul_reached;
static PyObject *__pyx_kp_s_on_solving_Newtonian_system;
static PyObject *__pyx_kp_s_only;
static PyObject *__pyx_n_s_optimal;
static PyObject *__pyx_kp_s_optimization_solution_file;
static PyObject *__pyx_n_s_orig;
static PyObject *__pyx_n_s_origin;
static PyObject *__pyx_n_s_parameters;
static PyObject *__pyx_n_s_perfect_maximize;
static PyObject *__pyx_n_s_perfect_minimize;
static PyObject *__pyx_n_s_preprocess;
static PyObject *__pyx_n_s_primal;
static PyObject *__pyx_n_s_prob_ptr;
static PyObject *__pyx_n_s_prob_ptr_2;
static PyObject *__pyx_n_s_problem;
static PyObject *__pyx_n_s_projection;
static PyObject *__pyx_n_s_qmd;
static PyObject *__pyx_n_s_range;
static PyObject *__pyx_n_s_read_asnprob;
static PyObject *__pyx_n_s_read_ccdata;
static PyObject *__pyx_n_s_read_cnfsat;
static PyObject *__pyx_n_s_read_graph;
static PyObject *__pyx_n_s_read_lp;
static PyObject *__pyx_n_s_read_maxflow;
static PyObject *__pyx_n_s_read_mincost;
static PyObject *__pyx_n_s_read_mps;
static PyObject *__pyx_n_s_read_prob;
static PyObject *__pyx_n_s_regular;
static PyObject *__pyx_n_s_rel;
static PyObject *__pyx_n_s_rhs;
static PyObject *__pyx_n_s_rmfgen;
static PyObject *__pyx_n_s_root;
static PyObject *__pyx_n_s_round;
static PyObject *__pyx_n_s_rounding;
static PyObject *__pyx_n_s_row;
static PyObject *__pyx_kp_s_row_must_be_a_number_int_or_a_n;
static PyObject *__pyx_n_s_row_or_cols;
static PyObject *__pyx_kp_s_row_or_cols_must_be_a_Sequence;
static PyObject *__pyx_n_s_rowclass;
static PyObject *__pyx_n_s_rowgen;
static PyObject *__pyx_n_s_seed;
static PyObject *__pyx_n_s_send;
static PyObject *__pyx_n_s_sf;
static PyObject *__pyx_kp_s_simplex;
static PyObject *__pyx_n_s_simplex_2;
static PyObject *__pyx_n_s_sink;
static PyObject *__pyx_n_s_sinks;
static PyObject *__pyx_n_s_skip;
static PyObject *__pyx_kp_s_solution_file;
static PyObject *__pyx_n_s_solver;
static PyObject *__pyx_n_s_source;
static PyObject *__pyx_n_s_sources;
static PyObject *__pyx_n_s_standard;
static PyObject *__pyx_n_s_start;
static PyObject *__pyx_n_s_status;
static PyObject *__pyx_n_s_steepest;
static PyObject *__pyx_kp_s_str_str_not;
static PyObject *__pyx_n_s_subproblem;
static PyObject *__pyx_n_s_sum;
static PyObject *__pyx_n_s_symamd;
static PyObject *__pyx_n_s_tail;
static PyObject *__pyx_n_s_test;
static PyObject *__pyx_n_s_throw;
static PyObject *__pyx_kp_s_to_CNF_SAT_format;
static PyObject *__pyx_n_s_total;
static PyObject *__pyx_n_s_two_way;
static PyObject *__pyx_n_s_unbounded;
static PyObject *__pyx_n_s_undefined;
static PyObject *__pyx_n_s_up;
static PyObject *__pyx_n_s_upper;
static PyObject *__pyx_kp_s_upper_bound;
static PyObject *__pyx_n_s_use_bound;
static PyObject *__pyx_n_s_v_cut;
static PyObject *__pyx_n_s_v_es;
static PyObject *__pyx_n_s_v_ls;
static PyObject *__pyx_n_s_v_pi;
static PyObject *__pyx_n_s_v_rhs;
static PyObject *__pyx_n_s_v_set;
static PyObject *__pyx_n_s_v_t;
static PyObject *__pyx_n_s_v_wgt;
static PyObject *__pyx_n_s_values;
static PyObject *__pyx_n_s_vartype;
static PyObject *__pyx_n_s_vertex;
static PyObject *__pyx_n_s_vertex_data_size;
static PyObject *__pyx_kp_s_vertex_must_be_a_number_int_or;
static PyObject *__pyx_n_s_vertex_ptr;
static PyObject *__pyx_n_s_warnerror;
static PyObject *__pyx_n_s_width;
static PyObject *__pyx_int_0;
static PyObject *__pyx_int_1;
static PyObject *__pyx_int_256;
static PyObject *__pyx_tuple_;
static PyObject *__pyx_tuple__3;
static PyObject *__pyx_tuple__6;
static PyObject *__pyx_tuple__9;
static PyObject *__pyx_tuple__10;
static PyObject *__pyx_tuple__11;
static PyObject *__pyx_tuple__12;
static PyObject *__pyx_tuple__13;
static PyObject *__pyx_tuple__14;
static PyObject *__pyx_tuple__15;
static PyObject *__pyx_tuple__16;
static PyObject *__pyx_tuple__17;
static PyObject *__pyx_tuple__18;
static PyObject *__pyx_tuple__19;
static PyObject *__pyx_tuple__20;
static PyObject *__pyx_tuple__21;
static PyObject *__pyx_tuple__22;
static PyObject *__pyx_tuple__23;
static PyObject *__pyx_tuple__24;
static PyObject *__pyx_tuple__25;
static PyObject *__pyx_tuple__26;
static PyObject *__pyx_tuple__27;
static PyObject *__pyx_tuple__28;
static PyObject *__pyx_tuple__29;
static PyObject *__pyx_tuple__30;
static PyObject *__pyx_tuple__31;
static PyObject *__pyx_tuple__32;
static PyObject *__pyx_tuple__33;
static PyObject *__pyx_tuple__34;
static PyObject *__pyx_tuple__35;
static PyObject *__pyx_tuple__36;
static PyObject *__pyx_tuple__37;
static PyObject *__pyx_tuple__38;
static PyObject *__pyx_tuple__39;
static PyObject *__pyx_tuple__40;
static PyObject *__pyx_tuple__42;
static PyObject *__pyx_tuple__43;
static PyObject *__pyx_tuple__44;
static PyObject *__pyx_tuple__45;
static PyObject *__pyx_tuple__46;
static PyObject *__pyx_tuple__47;
static PyObject *__pyx_tuple__48;
static PyObject *__pyx_tuple__49;
static PyObject *__pyx_tuple__50;
static PyObject *__pyx_tuple__51;
static PyObject *__pyx_tuple__52;
static PyObject *__pyx_tuple__53;
static PyObject *__pyx_tuple__54;
static PyObject *__pyx_tuple__55;
static PyObject *__pyx_tuple__56;
static PyObject *__pyx_tuple__57;
static PyObject *__pyx_tuple__58;
static PyObject *__pyx_tuple__59;
static PyObject *__pyx_tuple__60;
static PyObject *__pyx_tuple__61;
static PyObject *__pyx_tuple__62;
static PyObject *__pyx_tuple__63;
static PyObject *__pyx_tuple__64;
static PyObject *__pyx_tuple__65;
static PyObject *__pyx_tuple__66;
static PyObject *__pyx_tuple__67;
static PyObject *__pyx_tuple__68;
static PyObject *__pyx_tuple__69;
static PyObject *__pyx_tuple__70;
static PyObject *__pyx_tuple__71;
static PyObject *__pyx_tuple__72;
static PyObject *__pyx_tuple__73;
static PyObject *__pyx_tuple__74;
static PyObject *__pyx_tuple__75;
static PyObject *__pyx_tuple__76;
static PyObject *__pyx_codeobj__41;

/* "ecyglpki.pyx":31
 * 
 * 
 * def GLPK_version():             # <<<<<<<<<<<<<<
 *     return glpk.version().decode()
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_1GLPK_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_GLPK_version[] = "GLPK_version()";
static PyMethodDef __pyx_mdef_8ecyglpki_1GLPK_version = {__Pyx_NAMESTR("GLPK_version"), (PyCFunction)__pyx_pw_8ecyglpki_1GLPK_version, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_GLPK_version)};
static PyObject *__pyx_pw_8ecyglpki_1GLPK_version(PyObject *__pyx_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("GLPK_version (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_GLPK_version(__pyx_self);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_GLPK_version(CYTHON_UNUSED PyObject *__pyx_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char const *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("GLPK_version", 0);

  /* "ecyglpki.pyx":32
 * 
 * def GLPK_version():
 *     return glpk.version().decode()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = glp_version();
  __pyx_t_2 = __Pyx_decode_c_string(__pyx_t_1, 0, strlen(__pyx_t_1), NULL, NULL, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "ecyglpki.pyx":31
 * 
 * 
 * def GLPK_version():             # <<<<<<<<<<<<<<
 *     return glpk.version().decode()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.GLPK_version", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "ecyglpki.pyx":35
 * 
 * 
 * cdef char* str2chars(str string) except NULL:             # <<<<<<<<<<<<<<
 *     cdef bytes encoded_string = string.encode()
 *     return encoded_string
 */

static char *__pyx_f_8ecyglpki_str2chars(PyObject *__pyx_v_string) {
  PyObject *__pyx_v_encoded_string = 0;
  char *__pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  char *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("str2chars", 0);

  /* "ecyglpki.pyx":36
 * 
 * cdef char* str2chars(str string) except NULL:
 *     cdef bytes encoded_string = string.encode()             # <<<<<<<<<<<<<<
 *     return encoded_string
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_string, __pyx_n_s_encode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_encoded_string = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "ecyglpki.pyx":37
 * cdef char* str2chars(str string) except NULL:
 *     cdef bytes encoded_string = string.encode()
 *     return encoded_string             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_AsString(__pyx_v_encoded_string); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_3;
  goto __pyx_L0;

  /* "ecyglpki.pyx":35
 * 
 * 
 * cdef char* str2chars(str string) except NULL:             # <<<<<<<<<<<<<<
 *     cdef bytes encoded_string = string.encode()
 *     return encoded_string
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.str2chars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_encoded_string);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "ecyglpki.pyx":40
 * 
 * 
 * cdef char* name2chars(str name) except NULL:             # <<<<<<<<<<<<<<
 *     """Check whether a name is acceptable to GLPK
 * 
 */

static char *__pyx_f_8ecyglpki_name2chars(PyObject *__pyx_v_name) {
  PyObject *__pyx_v_encoded_name = 0;
  char *__pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  char *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("name2chars", 0);

  /* "ecyglpki.pyx":47
 * 
 *     """
 *     cdef bytes encoded_name = name.encode()             # <<<<<<<<<<<<<<
 *     if len(encoded_name) > 255:
 *         raise ValueError("Name must not exceed 255 bytes.")
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_encode); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!(likely(PyBytes_CheckExact(__pyx_t_2))||((__pyx_t_2) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "bytes", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_encoded_name = ((PyObject*)__pyx_t_2);
  __pyx_t_2 = 0;

  /* "ecyglpki.pyx":48
 *     """
 *     cdef bytes encoded_name = name.encode()
 *     if len(encoded_name) > 255:             # <<<<<<<<<<<<<<
 *         raise ValueError("Name must not exceed 255 bytes.")
 *     return encoded_name
 */
  if (unlikely(__pyx_v_encoded_name == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_3 = PyBytes_GET_SIZE(__pyx_v_encoded_name); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_4 = ((__pyx_t_3 > 255) != 0);
  if (__pyx_t_4) {

    /* "ecyglpki.pyx":49
 *     cdef bytes encoded_name = name.encode()
 *     if len(encoded_name) > 255:
 *         raise ValueError("Name must not exceed 255 bytes.")             # <<<<<<<<<<<<<<
 *     return encoded_name
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple_, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[2]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "ecyglpki.pyx":50
 *     if len(encoded_name) > 255:
 *         raise ValueError("Name must not exceed 255 bytes.")
 *     return encoded_name             # <<<<<<<<<<<<<<
 * 
 * cdef str chars2name(const char* chars):
 */
  __pyx_t_5 = __Pyx_PyObject_AsString(__pyx_v_encoded_name); if (unlikely((!__pyx_t_5) && PyErr_Occurred())) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_5;
  goto __pyx_L0;

  /* "ecyglpki.pyx":40
 * 
 * 
 * cdef char* name2chars(str name) except NULL:             # <<<<<<<<<<<<<<
 *     """Check whether a name is acceptable to GLPK
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.name2chars", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_encoded_name);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "ecyglpki.pyx":52
 *     return encoded_name
 * 
 * cdef str chars2name(const char* chars):             # <<<<<<<<<<<<<<
 *     return '' if chars is NULL else chars.decode()
 * 
 */

static PyObject *__pyx_f_8ecyglpki_chars2name(char const *__pyx_v_chars) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("chars2name", 0);

  /* "ecyglpki.pyx":53
 * 
 * cdef str chars2name(const char* chars):
 *     return '' if chars is NULL else chars.decode()             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  if (((__pyx_v_chars == NULL) != 0)) {
    __Pyx_INCREF(__pyx_kp_s__2);
    __pyx_t_1 = __pyx_kp_s__2;
  } else {
    __pyx_t_2 = __Pyx_decode_c_string(__pyx_v_chars, 0, strlen(__pyx_v_chars), NULL, NULL, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (!(likely(PyString_CheckExact(__pyx_t_2))||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_2)->tp_name), 0))) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_1 = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_r = ((PyObject*)__pyx_t_1);
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "ecyglpki.pyx":52
 *     return encoded_name
 * 
 * cdef str chars2name(const char* chars):             # <<<<<<<<<<<<<<
 *     return '' if chars is NULL else chars.decode()
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.chars2name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":59
 *     cdef glpk.SmCp _smcp
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         glpk.init_smcp(&self._smcp)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls___cinit__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls___cinit__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":60
 * 
 *     def __cinit__(self):
 *         glpk.init_smcp(&self._smcp)             # <<<<<<<<<<<<<<
 * 
 *     property msg_lev:
 */
  glp_init_smcp((&__pyx_v_self->_smcp));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":59
 *     cdef glpk.SmCp _smcp
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         glpk.init_smcp(&self._smcp)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":81
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return msglev2str[self._smcp.msg_lev]
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_7msg_lev_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_7msg_lev_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_7msg_lev___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_7msg_lev___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":82
 *         """
 *         def __get__(self):
 *             return msglev2str[self._smcp.msg_lev]             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.msg_lev = str2msglev[value]
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_msglev2str, __pyx_v_self->_smcp.msg_lev, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":81
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return msglev2str[self._smcp.msg_lev]
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.msg_lev.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":83
 *         def __get__(self):
 *             return msglev2str[self._smcp.msg_lev]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.msg_lev = str2msglev[value]
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_7msg_lev_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_7msg_lev_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_7msg_lev_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_7msg_lev_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":84
 *             return msglev2str[self._smcp.msg_lev]
 *         def __set__(self, value):
 *             self._smcp.msg_lev = str2msglev[value]             # <<<<<<<<<<<<<<
 * 
 *     property meth:
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_str2msglev, __pyx_v_value); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_smcp.msg_lev = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":83
 *         def __get__(self):
 *             return msglev2str[self._smcp.msg_lev]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.msg_lev = str2msglev[value]
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.msg_lev.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":105
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return meth2str[self._smcp.meth]
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_4meth_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_4meth_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_4meth___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_4meth___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":106
 *         """
 *         def __get__(self):
 *             return meth2str[self._smcp.meth]             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.meth = str2meth[value]
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_meth2str, __pyx_v_self->_smcp.meth, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":105
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return meth2str[self._smcp.meth]
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.meth.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":107
 *         def __get__(self):
 *             return meth2str[self._smcp.meth]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.meth = str2meth[value]
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_4meth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_4meth_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_4meth_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_4meth_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":108
 *             return meth2str[self._smcp.meth]
 *         def __set__(self, value):
 *             self._smcp.meth = str2meth[value]             # <<<<<<<<<<<<<<
 * 
 *     property pricing:
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_str2meth, __pyx_v_value); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_smcp.meth = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":107
 *         def __get__(self):
 *             return meth2str[self._smcp.meth]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.meth = str2meth[value]
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.meth.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":127
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return pricing2str[self._smcp.pricing]
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_7pricing_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_7pricing_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_7pricing___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_7pricing___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":128
 *         """
 *         def __get__(self):
 *             return pricing2str[self._smcp.pricing]             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.pricing = str2pricing[value]
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_pricing2str, __pyx_v_self->_smcp.pricing, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":127
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return pricing2str[self._smcp.pricing]
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.pricing.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":129
 *         def __get__(self):
 *             return pricing2str[self._smcp.pricing]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.pricing = str2pricing[value]
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_7pricing_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_7pricing_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_7pricing_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_7pricing_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":130
 *             return pricing2str[self._smcp.pricing]
 *         def __set__(self, value):
 *             self._smcp.pricing = str2pricing[value]             # <<<<<<<<<<<<<<
 * 
 *     property r_test:
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_str2pricing, __pyx_v_value); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_smcp.pricing = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":129
 *         def __get__(self):
 *             return pricing2str[self._smcp.pricing]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.pricing = str2pricing[value]
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.pricing.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":149
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return rtest2str[self._smcp.r_test]
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_6r_test_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_6r_test_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_6r_test___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_6r_test___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":150
 *         """
 *         def __get__(self):
 *             return rtest2str[self._smcp.r_test]             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.r_test = str2rtest[value]
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_rtest2str, __pyx_v_self->_smcp.r_test, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":149
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return rtest2str[self._smcp.r_test]
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.r_test.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":151
 *         def __get__(self):
 *             return rtest2str[self._smcp.r_test]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.r_test = str2rtest[value]
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_6r_test_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_6r_test_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_6r_test_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_6r_test_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":152
 *             return rtest2str[self._smcp.r_test]
 *         def __set__(self, value):
 *             self._smcp.r_test = str2rtest[value]             # <<<<<<<<<<<<<<
 * 
 *     property tol_bnd:
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_str2rtest, __pyx_v_value); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_smcp.r_test = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":151
 *         def __get__(self):
 *             return rtest2str[self._smcp.r_test]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.r_test = str2rtest[value]
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.r_test.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":156
 *     property tol_bnd:
 *         """Tolerance to check if the solution is primal feasible, a |Real| number"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.tol_bnd
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_7tol_bnd_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_7tol_bnd_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_7tol_bnd___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_7tol_bnd___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":157
 *         """Tolerance to check if the solution is primal feasible, a |Real| number"""
 *         def __get__(self):
 *             return self._smcp.tol_bnd             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.tol_bnd = float(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->_smcp.tol_bnd); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":156
 *     property tol_bnd:
 *         """Tolerance to check if the solution is primal feasible, a |Real| number"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.tol_bnd
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.tol_bnd.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":158
 *         def __get__(self):
 *             return self._smcp.tol_bnd
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.tol_bnd = float(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_7tol_bnd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_7tol_bnd_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_7tol_bnd_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_7tol_bnd_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":159
 *             return self._smcp.tol_bnd
 *         def __set__(self, value):
 *             self._smcp.tol_bnd = float(value)             # <<<<<<<<<<<<<<
 * 
 *     property tol_dj:
 */
  __pyx_t_1 = __Pyx_PyObject_AsDouble(__pyx_v_value); if (unlikely(__pyx_t_1 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_smcp.tol_bnd = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":158
 *         def __get__(self):
 *             return self._smcp.tol_bnd
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.tol_bnd = float(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.SimplexControls.tol_bnd.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":163
 *     property tol_dj:
 *         """Tolerance to check if the solution is dual feasible, a |Real| number"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.tol_dj
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_6tol_dj_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_6tol_dj_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_6tol_dj___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_6tol_dj___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":164
 *         """Tolerance to check if the solution is dual feasible, a |Real| number"""
 *         def __get__(self):
 *             return self._smcp.tol_dj             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.tol_dj = float(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->_smcp.tol_dj); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":163
 *     property tol_dj:
 *         """Tolerance to check if the solution is dual feasible, a |Real| number"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.tol_dj
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.tol_dj.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":165
 *         def __get__(self):
 *             return self._smcp.tol_dj
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.tol_dj = float(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_6tol_dj_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_6tol_dj_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_6tol_dj_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_6tol_dj_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":166
 *             return self._smcp.tol_dj
 *         def __set__(self, value):
 *             self._smcp.tol_dj = float(value)             # <<<<<<<<<<<<<<
 * 
 *     property tol_piv:
 */
  __pyx_t_1 = __Pyx_PyObject_AsDouble(__pyx_v_value); if (unlikely(__pyx_t_1 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_smcp.tol_dj = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":165
 *         def __get__(self):
 *             return self._smcp.tol_dj
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.tol_dj = float(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.SimplexControls.tol_dj.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":170
 *     property tol_piv:
 *         """Tolerance to choose eligble pivotal elements, a |Real| number"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.tol_piv
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_7tol_piv_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_7tol_piv_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_7tol_piv___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_7tol_piv___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":171
 *         """Tolerance to choose eligble pivotal elements, a |Real| number"""
 *         def __get__(self):
 *             return self._smcp.tol_piv             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.tol_piv = float(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->_smcp.tol_piv); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":170
 *     property tol_piv:
 *         """Tolerance to choose eligble pivotal elements, a |Real| number"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.tol_piv
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.tol_piv.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":172
 *         def __get__(self):
 *             return self._smcp.tol_piv
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.tol_piv = float(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_7tol_piv_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_7tol_piv_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_7tol_piv_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_7tol_piv_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":173
 *             return self._smcp.tol_piv
 *         def __set__(self, value):
 *             self._smcp.tol_piv = float(value)             # <<<<<<<<<<<<<<
 * 
 *     property obj_ll:
 */
  __pyx_t_1 = __Pyx_PyObject_AsDouble(__pyx_v_value); if (unlikely(__pyx_t_1 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_smcp.tol_piv = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":172
 *         def __get__(self):
 *             return self._smcp.tol_piv
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.tol_piv = float(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.SimplexControls.tol_piv.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":181
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.obj_ll
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_6obj_ll_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_6obj_ll_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_6obj_ll___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_6obj_ll___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":182
 *         """
 *         def __get__(self):
 *             return self._smcp.obj_ll             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.obj_ll = float(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->_smcp.obj_ll); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":181
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.obj_ll
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.obj_ll.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":183
 *         def __get__(self):
 *             return self._smcp.obj_ll
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.obj_ll = float(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_6obj_ll_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_6obj_ll_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_6obj_ll_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_6obj_ll_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":184
 *             return self._smcp.obj_ll
 *         def __set__(self, value):
 *             self._smcp.obj_ll = float(value)             # <<<<<<<<<<<<<<
 * 
 *     property obj_ul:
 */
  __pyx_t_1 = __Pyx_PyObject_AsDouble(__pyx_v_value); if (unlikely(__pyx_t_1 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_smcp.obj_ll = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":183
 *         def __get__(self):
 *             return self._smcp.obj_ll
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.obj_ll = float(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.SimplexControls.obj_ll.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":192
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.obj_ul
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_6obj_ul_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_6obj_ul_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_6obj_ul___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_6obj_ul___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":193
 *         """
 *         def __get__(self):
 *             return self._smcp.obj_ul             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.obj_ul = float(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->_smcp.obj_ul); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":192
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.obj_ul
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.obj_ul.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":194
 *         def __get__(self):
 *             return self._smcp.obj_ul
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.obj_ul = float(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_6obj_ul_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_6obj_ul_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_6obj_ul_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_6obj_ul_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":195
 *             return self._smcp.obj_ul
 *         def __set__(self, value):
 *             self._smcp.obj_ul = float(value)             # <<<<<<<<<<<<<<
 * 
 *     property it_lim:
 */
  __pyx_t_1 = __Pyx_PyObject_AsDouble(__pyx_v_value); if (unlikely(__pyx_t_1 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_smcp.obj_ul = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":194
 *         def __get__(self):
 *             return self._smcp.obj_ul
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.obj_ul = float(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.SimplexControls.obj_ul.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":199
 *     property it_lim:
 *         """Iteration limit, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.it_lim
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_6it_lim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_6it_lim_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_6it_lim___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_6it_lim___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":200
 *         """Iteration limit, an `int`"""
 *         def __get__(self):
 *             return self._smcp.it_lim             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.it_lim = int(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_smcp.it_lim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":199
 *     property it_lim:
 *         """Iteration limit, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.it_lim
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.it_lim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":201
 *         def __get__(self):
 *             return self._smcp.it_lim
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.it_lim = int(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_6it_lim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_6it_lim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_6it_lim_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_6it_lim_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":202
 *             return self._smcp.it_lim
 *         def __set__(self, value):
 *             self._smcp.it_lim = int(value)             # <<<<<<<<<<<<<<
 * 
 *     property tm_lim:
 */
  __pyx_t_1 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_smcp.it_lim = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":201
 *         def __get__(self):
 *             return self._smcp.it_lim
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.it_lim = int(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.it_lim.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":206
 *     property tm_lim:
 *         """Time limit [ms], an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.tm_lim
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_6tm_lim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_6tm_lim_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_6tm_lim___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_6tm_lim___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":207
 *         """Time limit [ms], an `int`"""
 *         def __get__(self):
 *             return self._smcp.tm_lim             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.tm_lim = int(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_smcp.tm_lim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":206
 *     property tm_lim:
 *         """Time limit [ms], an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.tm_lim
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.tm_lim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":208
 *         def __get__(self):
 *             return self._smcp.tm_lim
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.tm_lim = int(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_6tm_lim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_6tm_lim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_6tm_lim_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_6tm_lim_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":209
 *             return self._smcp.tm_lim
 *         def __set__(self, value):
 *             self._smcp.tm_lim = int(value)             # <<<<<<<<<<<<<<
 * 
 *     property out_frq:
 */
  __pyx_t_1 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_smcp.tm_lim = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":208
 *         def __get__(self):
 *             return self._smcp.tm_lim
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.tm_lim = int(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.tm_lim.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":213
 *     property out_frq:
 *         """Output frequency [iterations] of informational messages, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.out_frq
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_7out_frq_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_7out_frq_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_7out_frq___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_7out_frq___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":214
 *         """Output frequency [iterations] of informational messages, an `int`"""
 *         def __get__(self):
 *             return self._smcp.out_frq             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.out_frq = int(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_smcp.out_frq); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":213
 *     property out_frq:
 *         """Output frequency [iterations] of informational messages, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.out_frq
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.out_frq.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":215
 *         def __get__(self):
 *             return self._smcp.out_frq
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.out_frq = int(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_7out_frq_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_7out_frq_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_7out_frq_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_7out_frq_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":216
 *             return self._smcp.out_frq
 *         def __set__(self, value):
 *             self._smcp.out_frq = int(value)             # <<<<<<<<<<<<<<
 * 
 *     property out_dly:
 */
  __pyx_t_1 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_smcp.out_frq = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":215
 *         def __get__(self):
 *             return self._smcp.out_frq
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.out_frq = int(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.out_frq.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":220
 *     property out_dly:
 *         """Output delay [ms] of solution process information, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.out_dly
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_7out_dly_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_7out_dly_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_7out_dly___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_7out_dly___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":221
 *         """Output delay [ms] of solution process information, an `int`"""
 *         def __get__(self):
 *             return self._smcp.out_dly             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.out_dly = int(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_smcp.out_dly); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":220
 *     property out_dly:
 *         """Output delay [ms] of solution process information, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.out_dly
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.out_dly.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":222
 *         def __get__(self):
 *             return self._smcp.out_dly
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.out_dly = int(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_7out_dly_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_7out_dly_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_7out_dly_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_7out_dly_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":223
 *             return self._smcp.out_dly
 *         def __set__(self, value):
 *             self._smcp.out_dly = int(value)             # <<<<<<<<<<<<<<
 * 
 *     property presolve:
 */
  __pyx_t_1 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_smcp.out_dly = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":222
 *         def __get__(self):
 *             return self._smcp.out_dly
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.out_dly = int(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.out_dly.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":227
 *     property presolve:
 *         """Whether to use the LP presolver, a `bool`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.presolve
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_8presolve_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_15SimplexControls_8presolve_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_8presolve___get__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_15SimplexControls_8presolve___get__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":228
 *         """Whether to use the LP presolver, a `bool`"""
 *         def __get__(self):
 *             return self._smcp.presolve             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._smcp.presolve = bool(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_smcp.presolve); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":227
 *     property presolve:
 *         """Whether to use the LP presolver, a `bool`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._smcp.presolve
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.SimplexControls.presolve.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":229
 *         def __get__(self):
 *             return self._smcp.presolve
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.presolve = bool(value)
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_15SimplexControls_8presolve_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_15SimplexControls_8presolve_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_15SimplexControls_8presolve_2__set__(((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_15SimplexControls_8presolve_2__set__(struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":230
 *             return self._smcp.presolve
 *         def __set__(self, value):
 *             self._smcp.presolve = bool(value)             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_smcp.presolve = (!(!__pyx_t_1));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":229
 *         def __get__(self):
 *             return self._smcp.presolve
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._smcp.presolve = bool(value)
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.SimplexControls.presolve.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":49
 *     cdef glpk.BfCp _bfcp
 * 
 *     def __cinit__(self, Problem problem):             # <<<<<<<<<<<<<<
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_21FactorizationControls_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_8ecyglpki_21FactorizationControls_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_8ecyglpki_Problem *__pyx_v_problem = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_problem,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_problem)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_problem = ((struct __pyx_obj_8ecyglpki_Problem *)values[0]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[4]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_problem), __pyx_ptype_8ecyglpki_Problem, 1, "problem", 0))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls___cinit__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self), __pyx_v_problem);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_21FactorizationControls___cinit__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, struct __pyx_obj_8ecyglpki_Problem *__pyx_v_problem) {
  struct glp_prob *__pyx_v__prob;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  void *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":51
 *     def __cinit__(self, Problem problem):
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         glpk.get_bfcp(_prob, &self._bfcp)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_problem), __pyx_n_s_prob_ptr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":50
 * 
 *     def __cinit__(self, Problem problem):
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     problem._prob_ptr(), NULL)
 *         glpk.get_bfcp(_prob, &self._bfcp)
 */
  __pyx_t_3 = PyCapsule_GetPointer(__pyx_t_2, NULL); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v__prob = ((struct glp_prob *)__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":52
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 *         glpk.get_bfcp(_prob, &self._bfcp)             # <<<<<<<<<<<<<<
 * 
 *     property type:
 */
  glp_get_bfcp(__pyx_v__prob, (&__pyx_v_self->_bfcp));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":49
 *     cdef glpk.BfCp _bfcp
 * 
 *     def __cinit__(self, Problem problem):             # <<<<<<<<<<<<<<
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":79
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return bftype2strpair[self._bfcp.type]
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_4type_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_4type_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_4type___get__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_4type___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":80
 *         """
 *         def __get__(self):
 *             return bftype2strpair[self._bfcp.type]             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._bfcp.type = strpair2bftype[value]
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_bftype2strpair, __pyx_v_self->_bfcp.type, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 80; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":79
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return bftype2strpair[self._bfcp.type]
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.type.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":81
 *         def __get__(self):
 *             return bftype2strpair[self._bfcp.type]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.type = strpair2bftype[value]
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_21FactorizationControls_4type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_21FactorizationControls_4type_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_4type_2__set__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_21FactorizationControls_4type_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":82
 *             return bftype2strpair[self._bfcp.type]
 *         def __set__(self, value):
 *             self._bfcp.type = strpair2bftype[value]             # <<<<<<<<<<<<<<
 * 
 *     property piv_tol:
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_strpair2bftype, __pyx_v_value); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 82; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_bfcp.type = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":81
 *         def __get__(self):
 *             return bftype2strpair[self._bfcp.type]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.type = strpair2bftype[value]
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.type.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":90
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._bfcp.piv_tol
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_7piv_tol_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_7piv_tol_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_7piv_tol___get__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_7piv_tol___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":91
 *         """
 *         def __get__(self):
 *             return self._bfcp.piv_tol             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._bfcp.piv_tol = float(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->_bfcp.piv_tol); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":90
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._bfcp.piv_tol
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.piv_tol.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":92
 *         def __get__(self):
 *             return self._bfcp.piv_tol
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.piv_tol = float(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_21FactorizationControls_7piv_tol_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_21FactorizationControls_7piv_tol_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_7piv_tol_2__set__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_21FactorizationControls_7piv_tol_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":93
 *             return self._bfcp.piv_tol
 *         def __set__(self, value):
 *             self._bfcp.piv_tol = float(value)             # <<<<<<<<<<<<<<
 * 
 *     property piv_lim:
 */
  __pyx_t_1 = __Pyx_PyObject_AsDouble(__pyx_v_value); if (unlikely(__pyx_t_1 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_bfcp.piv_tol = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":92
 *         def __get__(self):
 *             return self._bfcp.piv_tol
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.piv_tol = float(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.piv_tol.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":97
 *     property piv_lim:
 *         """Number of pivot candidates that need to be considered, an `int` 1"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._bfcp.piv_lim
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_7piv_lim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_7piv_lim_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_7piv_lim___get__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_7piv_lim___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":98
 *         """Number of pivot candidates that need to be considered, an `int` 1"""
 *         def __get__(self):
 *             return self._bfcp.piv_lim             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._bfcp.piv_lim = int(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_bfcp.piv_lim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":97
 *     property piv_lim:
 *         """Number of pivot candidates that need to be considered, an `int` 1"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._bfcp.piv_lim
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.piv_lim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":99
 *         def __get__(self):
 *             return self._bfcp.piv_lim
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.piv_lim = int(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_21FactorizationControls_7piv_lim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_21FactorizationControls_7piv_lim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_7piv_lim_2__set__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_21FactorizationControls_7piv_lim_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":100
 *             return self._bfcp.piv_lim
 *         def __set__(self, value):
 *             self._bfcp.piv_lim = int(value)             # <<<<<<<<<<<<<<
 * 
 *     property suhl:
 */
  __pyx_t_1 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_bfcp.piv_lim = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":99
 *         def __get__(self):
 *             return self._bfcp.piv_lim
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.piv_lim = int(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.piv_lim.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":104
 *     property suhl:
 *         """Whether to use Suhl heuristic, a `bool`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._bfcp.suhl
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_4suhl_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_4suhl_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_4suhl___get__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_4suhl___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":105
 *         """Whether to use Suhl heuristic, a `bool`"""
 *         def __get__(self):
 *             return self._bfcp.suhl             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._bfcp.suhl = bool(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_bfcp.suhl); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":104
 *     property suhl:
 *         """Whether to use Suhl heuristic, a `bool`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._bfcp.suhl
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.suhl.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":106
 *         def __get__(self):
 *             return self._bfcp.suhl
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.suhl = bool(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_21FactorizationControls_4suhl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_21FactorizationControls_4suhl_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_4suhl_2__set__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_21FactorizationControls_4suhl_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":107
 *             return self._bfcp.suhl
 *         def __set__(self, value):
 *             self._bfcp.suhl = bool(value)             # <<<<<<<<<<<<<<
 * 
 *     property eps_tol:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_bfcp.suhl = (!(!__pyx_t_1));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":106
 *         def __get__(self):
 *             return self._bfcp.suhl
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.suhl = bool(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.suhl.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":111
 *     property eps_tol:
 *         """Tolerance below which numbers are replaced by zero, a |Real| number"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._bfcp.eps_tol
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_7eps_tol_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_7eps_tol_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_7eps_tol___get__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_7eps_tol___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":112
 *         """Tolerance below which numbers are replaced by zero, a |Real| number"""
 *         def __get__(self):
 *             return self._bfcp.eps_tol             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._bfcp.eps_tol = float(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->_bfcp.eps_tol); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":111
 *     property eps_tol:
 *         """Tolerance below which numbers are replaced by zero, a |Real| number"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._bfcp.eps_tol
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.eps_tol.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":113
 *         def __get__(self):
 *             return self._bfcp.eps_tol
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.eps_tol = float(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_21FactorizationControls_7eps_tol_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_21FactorizationControls_7eps_tol_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_7eps_tol_2__set__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_21FactorizationControls_7eps_tol_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":114
 *             return self._bfcp.eps_tol
 *         def __set__(self, value):
 *             self._bfcp.eps_tol = float(value)             # <<<<<<<<<<<<<<
 * 
 *     property nfs_max:
 */
  __pyx_t_1 = __Pyx_PyObject_AsDouble(__pyx_v_value); if (unlikely(__pyx_t_1 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 114; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_bfcp.eps_tol = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":113
 *         def __get__(self):
 *             return self._bfcp.eps_tol
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.eps_tol = float(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.eps_tol.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":122
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._bfcp.nfs_max
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_7nfs_max_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_7nfs_max_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_7nfs_max___get__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_7nfs_max___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":123
 *         """
 *         def __get__(self):
 *             return self._bfcp.nfs_max             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._bfcp.nfs_max = int(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_bfcp.nfs_max); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":122
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._bfcp.nfs_max
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.nfs_max.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":124
 *         def __get__(self):
 *             return self._bfcp.nfs_max
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.nfs_max = int(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_21FactorizationControls_7nfs_max_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_21FactorizationControls_7nfs_max_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_7nfs_max_2__set__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_21FactorizationControls_7nfs_max_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":125
 *             return self._bfcp.nfs_max
 *         def __set__(self, value):
 *             self._bfcp.nfs_max = int(value)             # <<<<<<<<<<<<<<
 * 
 *     property nrs_max:
 */
  __pyx_t_1 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_bfcp.nfs_max = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":124
 *         def __get__(self):
 *             return self._bfcp.nfs_max
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.nfs_max = int(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.nfs_max.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":133
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._bfcp.nrs_max
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_7nrs_max_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_21FactorizationControls_7nrs_max_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_7nrs_max___get__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_21FactorizationControls_7nrs_max___get__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":134
 *         """
 *         def __get__(self):
 *             return self._bfcp.nrs_max             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._bfcp.nrs_max = int(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_bfcp.nrs_max); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":133
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._bfcp.nrs_max
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.nrs_max.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":135
 *         def __get__(self):
 *             return self._bfcp.nrs_max
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.nrs_max = int(value)
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_21FactorizationControls_7nrs_max_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_21FactorizationControls_7nrs_max_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_21FactorizationControls_7nrs_max_2__set__(((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_21FactorizationControls_7nrs_max_2__set__(struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":136
 *             return self._bfcp.nrs_max
 *         def __set__(self, value):
 *             self._bfcp.nrs_max = int(value)             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_bfcp.nrs_max = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":135
 *         def __get__(self):
 *             return self._bfcp.nrs_max
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._bfcp.nrs_max = int(value)
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.FactorizationControls.nrs_max.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":46
 *     cdef glpk.IPtCp _iptcp
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         glpk.init_iptcp(&self._iptcp)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IPointControls_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_8ecyglpki_14IPointControls_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_8ecyglpki_14IPointControls___cinit__(((struct __pyx_obj_8ecyglpki_IPointControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IPointControls___cinit__(struct __pyx_obj_8ecyglpki_IPointControls *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":47
 * 
 *     def __cinit__(self):
 *         glpk.init_iptcp(&self._iptcp)             # <<<<<<<<<<<<<<
 * 
 *     property msg_lev:
 */
  glp_init_iptcp((&__pyx_v_self->_iptcp));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":46
 *     cdef glpk.IPtCp _iptcp
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         glpk.init_iptcp(&self._iptcp)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":68
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return msglev2str[self._iptcp.msg_lev]
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IPointControls_7msg_lev_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IPointControls_7msg_lev_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IPointControls_7msg_lev___get__(((struct __pyx_obj_8ecyglpki_IPointControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IPointControls_7msg_lev___get__(struct __pyx_obj_8ecyglpki_IPointControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":69
 *         """
 *         def __get__(self):
 *             return msglev2str[self._iptcp.msg_lev]             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iptcp.msg_lev = str2msglev[value]
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_msglev2str, __pyx_v_self->_iptcp.msg_lev, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":68
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return msglev2str[self._iptcp.msg_lev]
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IPointControls.msg_lev.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":70
 *         def __get__(self):
 *             return msglev2str[self._iptcp.msg_lev]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iptcp.msg_lev = str2msglev[value]
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IPointControls_7msg_lev_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IPointControls_7msg_lev_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IPointControls_7msg_lev_2__set__(((struct __pyx_obj_8ecyglpki_IPointControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IPointControls_7msg_lev_2__set__(struct __pyx_obj_8ecyglpki_IPointControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":71
 *             return msglev2str[self._iptcp.msg_lev]
 *         def __set__(self, value):
 *             self._iptcp.msg_lev = str2msglev[value]             # <<<<<<<<<<<<<<
 * 
 *     property ord_alg:
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_str2msglev, __pyx_v_value); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 71; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_iptcp.msg_lev = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":70
 *         def __get__(self):
 *             return msglev2str[self._iptcp.msg_lev]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iptcp.msg_lev = str2msglev[value]
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IPointControls.msg_lev.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":92
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return ordalg2str[self._iptcp.ord_alg]
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IPointControls_7ord_alg_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IPointControls_7ord_alg_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IPointControls_7ord_alg___get__(((struct __pyx_obj_8ecyglpki_IPointControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IPointControls_7ord_alg___get__(struct __pyx_obj_8ecyglpki_IPointControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":93
 *         """
 *         def __get__(self):
 *             return ordalg2str[self._iptcp.ord_alg]             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iptcp.ord_alg = str2ordalg[value]
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_ordalg2str, __pyx_v_self->_iptcp.ord_alg, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":92
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return ordalg2str[self._iptcp.ord_alg]
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IPointControls.ord_alg.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":94
 *         def __get__(self):
 *             return ordalg2str[self._iptcp.ord_alg]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iptcp.ord_alg = str2ordalg[value]
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IPointControls_7ord_alg_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IPointControls_7ord_alg_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IPointControls_7ord_alg_2__set__(((struct __pyx_obj_8ecyglpki_IPointControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IPointControls_7ord_alg_2__set__(struct __pyx_obj_8ecyglpki_IPointControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":95
 *             return ordalg2str[self._iptcp.ord_alg]
 *         def __set__(self, value):
 *             self._iptcp.ord_alg = str2ordalg[value]             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_str2ordalg, __pyx_v_value); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_iptcp.ord_alg = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":94
 *         def __get__(self):
 *             return ordalg2str[self._iptcp.ord_alg]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iptcp.ord_alg = str2ordalg[value]
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IPointControls.ord_alg.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":30
 *     cdef glpk.CBFunc _cb_func
 * 
 *     def __cinit__(self, cbfunc_ptr):             # <<<<<<<<<<<<<<
 *         self._cb_func = <glpk.CBFunc>PyCapsule_GetPointer(cbfunc_ptr(), NULL)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_16CallbackFunction_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_8ecyglpki_16CallbackFunction_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cbfunc_ptr = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cbfunc_ptr,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cbfunc_ptr)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_cbfunc_ptr = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.CallbackFunction.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_16CallbackFunction___cinit__(((struct __pyx_obj_8ecyglpki_CallbackFunction *)__pyx_v_self), __pyx_v_cbfunc_ptr);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_16CallbackFunction___cinit__(struct __pyx_obj_8ecyglpki_CallbackFunction *__pyx_v_self, PyObject *__pyx_v_cbfunc_ptr) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  void *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":31
 * 
 *     def __cinit__(self, cbfunc_ptr):
 *         self._cb_func = <glpk.CBFunc>PyCapsule_GetPointer(cbfunc_ptr(), NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_cbfunc_ptr, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyCapsule_GetPointer(__pyx_t_1, NULL); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_cb_func = ((__pyx_t_4glpk_CBFunc)__pyx_t_2);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":30
 *     cdef glpk.CBFunc _cb_func
 * 
 *     def __cinit__(self, cbfunc_ptr):             # <<<<<<<<<<<<<<
 *         self._cb_func = <glpk.CBFunc>PyCapsule_GetPointer(cbfunc_ptr(), NULL)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.CallbackFunction.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":39
 *     cdef glpk.CBInfo _cb_info
 * 
 *     def __cinit__(self, cbinfo_ptr):             # <<<<<<<<<<<<<<
 *         self._cb_info = <glpk.CBInfo>PyCapsule_GetPointer(cbinfo_ptr(), NULL)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_12CallbackInfo_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_8ecyglpki_12CallbackInfo_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cbinfo_ptr = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_cbinfo_ptr,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_cbinfo_ptr)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_cbinfo_ptr = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[6]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.CallbackInfo.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_12CallbackInfo___cinit__(((struct __pyx_obj_8ecyglpki_CallbackInfo *)__pyx_v_self), __pyx_v_cbinfo_ptr);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_12CallbackInfo___cinit__(struct __pyx_obj_8ecyglpki_CallbackInfo *__pyx_v_self, PyObject *__pyx_v_cbinfo_ptr) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  void *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":40
 * 
 *     def __cinit__(self, cbinfo_ptr):
 *         self._cb_info = <glpk.CBInfo>PyCapsule_GetPointer(cbinfo_ptr(), NULL)             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_cbinfo_ptr, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyCapsule_GetPointer(__pyx_t_1, NULL); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_cb_info = ((__pyx_t_4glpk_CBInfo)__pyx_t_2);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":39
 *     cdef glpk.CBInfo _cb_info
 * 
 *     def __cinit__(self, cbinfo_ptr):             # <<<<<<<<<<<<<<
 *         self._cb_info = <glpk.CBInfo>PyCapsule_GetPointer(cbinfo_ptr(), NULL)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.CallbackInfo.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":83
 *     cdef glpk.IoCp _iocp
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         glpk.init_iocp(&self._iocp)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls___cinit__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls___cinit__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":84
 * 
 *     def __cinit__(self):
 *         glpk.init_iocp(&self._iocp)             # <<<<<<<<<<<<<<
 * 
 *     property msg_lev:
 */
  glp_init_iocp((&__pyx_v_self->_iocp));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":83
 *     cdef glpk.IoCp _iocp
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         glpk.init_iocp(&self._iocp)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":105
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return msglev2str[self._iocp.msg_lev]
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7msg_lev_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7msg_lev_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7msg_lev___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7msg_lev___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":106
 *         """
 *         def __get__(self):
 *             return msglev2str[self._iocp.msg_lev]             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.msg_lev = str2msglev[value]
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_msglev2str, __pyx_v_self->_iocp.msg_lev, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":105
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return msglev2str[self._iocp.msg_lev]
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.msg_lev.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":107
 *         def __get__(self):
 *             return msglev2str[self._iocp.msg_lev]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.msg_lev = str2msglev[value]
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7msg_lev_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7msg_lev_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7msg_lev_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7msg_lev_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":108
 *             return msglev2str[self._iocp.msg_lev]
 *         def __set__(self, value):
 *             self._iocp.msg_lev = str2msglev[value]             # <<<<<<<<<<<<<<
 * 
 *     property out_frq:
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_str2msglev, __pyx_v_value); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_iocp.msg_lev = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":107
 *         def __get__(self):
 *             return msglev2str[self._iocp.msg_lev]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.msg_lev = str2msglev[value]
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.msg_lev.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":112
 *     property out_frq:
 *         """Output frequency [ms] of informational messages, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.out_frq
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7out_frq_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7out_frq_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7out_frq___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7out_frq___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":113
 *         """Output frequency [ms] of informational messages, an `int`"""
 *         def __get__(self):
 *             return self._iocp.out_frq             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.out_frq = int(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_iocp.out_frq); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":112
 *     property out_frq:
 *         """Output frequency [ms] of informational messages, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.out_frq
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.out_frq.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":114
 *         def __get__(self):
 *             return self._iocp.out_frq
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.out_frq = int(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7out_frq_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7out_frq_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7out_frq_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7out_frq_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":115
 *             return self._iocp.out_frq
 *         def __set__(self, value):
 *             self._iocp.out_frq = int(value)             # <<<<<<<<<<<<<<
 * 
 *     property out_dly:
 */
  __pyx_t_1 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_iocp.out_frq = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":114
 *         def __get__(self):
 *             return self._iocp.out_frq
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.out_frq = int(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.out_frq.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":119
 *     property out_dly:
 *         """Output delay [ms] of current LP relaxation solution, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.out_dly
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7out_dly_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7out_dly_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7out_dly___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7out_dly___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":120
 *         """Output delay [ms] of current LP relaxation solution, an `int`"""
 *         def __get__(self):
 *             return self._iocp.out_dly             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.out_dly = int(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_iocp.out_dly); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":119
 *     property out_dly:
 *         """Output delay [ms] of current LP relaxation solution, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.out_dly
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.out_dly.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":121
 *         def __get__(self):
 *             return self._iocp.out_dly
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.out_dly = int(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7out_dly_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7out_dly_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7out_dly_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7out_dly_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":122
 *             return self._iocp.out_dly
 *         def __set__(self, value):
 *             self._iocp.out_dly = int(value)             # <<<<<<<<<<<<<<
 * 
 *     property cb_func:
 */
  __pyx_t_1 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 122; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_iocp.out_dly = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":121
 *         def __get__(self):
 *             return self._iocp.out_dly
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.out_dly = int(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.out_dly.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":126
 *     property cb_func:
 *         """Callback routine"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.CBFunc callback = self._iocp.cb_func
 *             if callback is not NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7cb_func_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7cb_func_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7cb_func___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7cb_func___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  __pyx_t_4glpk_CBFunc __pyx_v_callback;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4glpk_CBFunc __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":127
 *         """Callback routine"""
 *         def __get__(self):
 *             cdef glpk.CBFunc callback = self._iocp.cb_func             # <<<<<<<<<<<<<<
 *             if callback is not NULL:
 *                 return CallbackFunction(PyCapsule_New(callback, NULL, NULL))
 */
  __pyx_t_1 = __pyx_v_self->_iocp.cb_func;
  __pyx_v_callback = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":128
 *         def __get__(self):
 *             cdef glpk.CBFunc callback = self._iocp.cb_func
 *             if callback is not NULL:             # <<<<<<<<<<<<<<
 *                 return CallbackFunction(PyCapsule_New(callback, NULL, NULL))
 *             else:
 */
  __pyx_t_2 = ((__pyx_v_callback != NULL) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":129
 *             cdef glpk.CBFunc callback = self._iocp.cb_func
 *             if callback is not NULL:
 *                 return CallbackFunction(PyCapsule_New(callback, NULL, NULL))             # <<<<<<<<<<<<<<
 *             else:
 *                 return None
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyCapsule_New(__pyx_v_callback, NULL, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_CallbackFunction)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":131
 *                 return CallbackFunction(PyCapsule_New(callback, NULL, NULL))
 *             else:
 *                 return None             # <<<<<<<<<<<<<<
 *         def __set__(self, CallbackFunction callback):
 *             self._iocp.cb_func = callback._cb_func
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":126
 *     property cb_func:
 *         """Callback routine"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.CBFunc callback = self._iocp.cb_func
 *             if callback is not NULL:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.cb_func.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":132
 *             else:
 *                 return None
 *         def __set__(self, CallbackFunction callback):             # <<<<<<<<<<<<<<
 *             self._iocp.cb_func = callback._cb_func
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7cb_func_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_callback); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7cb_func_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_callback) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_callback), __pyx_ptype_8ecyglpki_CallbackFunction, 1, "callback", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7cb_func_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((struct __pyx_obj_8ecyglpki_CallbackFunction *)__pyx_v_callback));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7cb_func_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, struct __pyx_obj_8ecyglpki_CallbackFunction *__pyx_v_callback) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __pyx_t_4glpk_CBFunc __pyx_t_1;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":133
 *                 return None
 *         def __set__(self, CallbackFunction callback):
 *             self._iocp.cb_func = callback._cb_func             # <<<<<<<<<<<<<<
 * 
 *     property cb_info:  # TODO: use Python object for node data?
 */
  __pyx_t_1 = __pyx_v_callback->_cb_func;
  __pyx_v_self->_iocp.cb_func = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":132
 *             else:
 *                 return None
 *         def __set__(self, CallbackFunction callback):             # <<<<<<<<<<<<<<
 *             self._iocp.cb_func = callback._cb_func
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":137
 *     property cb_info:  # TODO: use Python object for node data?
 *         """Transit pointer passed to the routine cb_func"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.CBInfo info = self._iocp.cb_info
 *             if info is not NULL:
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7cb_info_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7cb_info_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7cb_info___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7cb_info___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  __pyx_t_4glpk_CBInfo __pyx_v_info;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __pyx_t_4glpk_CBInfo __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":138
 *         """Transit pointer passed to the routine cb_func"""
 *         def __get__(self):
 *             cdef glpk.CBInfo info = self._iocp.cb_info             # <<<<<<<<<<<<<<
 *             if info is not NULL:
 *                 return CallbackInfo(PyCapsule_New(info, NULL, NULL))
 */
  __pyx_t_1 = __pyx_v_self->_iocp.cb_info;
  __pyx_v_info = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":139
 *         def __get__(self):
 *             cdef glpk.CBInfo info = self._iocp.cb_info
 *             if info is not NULL:             # <<<<<<<<<<<<<<
 *                 return CallbackInfo(PyCapsule_New(info, NULL, NULL))
 *             else:
 */
  __pyx_t_2 = ((__pyx_v_info != NULL) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":140
 *             cdef glpk.CBInfo info = self._iocp.cb_info
 *             if info is not NULL:
 *                 return CallbackInfo(PyCapsule_New(info, NULL, NULL))             # <<<<<<<<<<<<<<
 *             else:
 *                 return None
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = PyCapsule_New(__pyx_v_info, NULL, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_CallbackInfo)), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":142
 *                 return CallbackInfo(PyCapsule_New(info, NULL, NULL))
 *             else:
 *                 return None             # <<<<<<<<<<<<<<
 *         def __set__(self, CallbackInfo info):
 *             self._iocp.cb_info = info._cb_info
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":137
 *     property cb_info:  # TODO: use Python object for node data?
 *         """Transit pointer passed to the routine cb_func"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.CBInfo info = self._iocp.cb_info
 *             if info is not NULL:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.cb_info.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":143
 *             else:
 *                 return None
 *         def __set__(self, CallbackInfo info):             # <<<<<<<<<<<<<<
 *             self._iocp.cb_info = info._cb_info
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7cb_info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_info); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7cb_info_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_info) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_info), __pyx_ptype_8ecyglpki_CallbackInfo, 1, "info", 0))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7cb_info_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((struct __pyx_obj_8ecyglpki_CallbackInfo *)__pyx_v_info));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7cb_info_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, struct __pyx_obj_8ecyglpki_CallbackInfo *__pyx_v_info) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __pyx_t_4glpk_CBInfo __pyx_t_1;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":144
 *                 return None
 *         def __set__(self, CallbackInfo info):
 *             self._iocp.cb_info = info._cb_info             # <<<<<<<<<<<<<<
 * 
 *     property cb_size:  # TODO: use Python object for node data?
 */
  __pyx_t_1 = __pyx_v_info->_cb_info;
  __pyx_v_self->_iocp.cb_info = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":143
 *             else:
 *                 return None
 *         def __set__(self, CallbackInfo info):             # <<<<<<<<<<<<<<
 *             self._iocp.cb_info = info._cb_info
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":162
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.cb_size
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7cb_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7cb_size_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7cb_size___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7cb_size___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":163
 *         """
 *         def __get__(self):
 *             return self._iocp.cb_size             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             value = int(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_iocp.cb_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":162
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.cb_size
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.cb_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":164
 *         def __get__(self):
 *             return self._iocp.cb_size
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             value = int(value)
 *             if (value < 0) or (value > 256):
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7cb_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7cb_size_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7cb_size_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7cb_size_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);
  __Pyx_INCREF(__pyx_v_value);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":165
 *             return self._iocp.cb_size
 *         def __set__(self, value):
 *             value = int(value)             # <<<<<<<<<<<<<<
 *             if (value < 0) or (value > 256):
 *                 raise ValueError("'cb_size' must be an int between 0 and 256.")
 */
  __pyx_t_1 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":166
 *         def __set__(self, value):
 *             value = int(value)
 *             if (value < 0) or (value > 256):             # <<<<<<<<<<<<<<
 *                 raise ValueError("'cb_size' must be an int between 0 and 256.")
 *             self._iocp.cb_size = value
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_value, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!__pyx_t_2) {
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_value, __pyx_int_256, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_4 = __pyx_t_3;
  } else {
    __pyx_t_4 = __pyx_t_2;
  }
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":167
 *             value = int(value)
 *             if (value < 0) or (value > 256):
 *                 raise ValueError("'cb_size' must be an int between 0 and 256.")             # <<<<<<<<<<<<<<
 *             self._iocp.cb_size = value
 * 
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[6]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":168
 *             if (value < 0) or (value > 256):
 *                 raise ValueError("'cb_size' must be an int between 0 and 256.")
 *             self._iocp.cb_size = value             # <<<<<<<<<<<<<<
 * 
 *     property tm_lim:
 */
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_iocp.cb_size = __pyx_t_5;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":164
 *         def __get__(self):
 *             return self._iocp.cb_size
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             value = int(value)
 *             if (value < 0) or (value > 256):
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.cb_size.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":172
 *     property tm_lim:
 *         """Time limit [ms], an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.tm_lim
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_6tm_lim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_6tm_lim_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_6tm_lim___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_6tm_lim___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":173
 *         """Time limit [ms], an `int`"""
 *         def __get__(self):
 *             return self._iocp.tm_lim             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.tm_lim = int(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_iocp.tm_lim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 173; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":172
 *     property tm_lim:
 *         """Time limit [ms], an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.tm_lim
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.tm_lim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":174
 *         def __get__(self):
 *             return self._iocp.tm_lim
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.tm_lim = int(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_6tm_lim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_6tm_lim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_6tm_lim_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_6tm_lim_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":175
 *             return self._iocp.tm_lim
 *         def __set__(self, value):
 *             self._iocp.tm_lim = int(value)             # <<<<<<<<<<<<<<
 * 
 *     property br_tech:
 */
  __pyx_t_1 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_iocp.tm_lim = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":174
 *         def __get__(self):
 *             return self._iocp.tm_lim
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.tm_lim = int(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.tm_lim.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":191
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return brtech2str[self._iocp.br_tech]
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7br_tech_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7br_tech_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7br_tech___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7br_tech___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":192
 *         """
 *         def __get__(self):
 *             return brtech2str[self._iocp.br_tech]             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.br_tech = str2brtech[value]
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_brtech2str, __pyx_v_self->_iocp.br_tech, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":191
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return brtech2str[self._iocp.br_tech]
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.br_tech.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":193
 *         def __get__(self):
 *             return brtech2str[self._iocp.br_tech]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.br_tech = str2brtech[value]
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7br_tech_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7br_tech_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7br_tech_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7br_tech_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":194
 *             return brtech2str[self._iocp.br_tech]
 *         def __set__(self, value):
 *             self._iocp.br_tech = str2brtech[value]             # <<<<<<<<<<<<<<
 * 
 *     property bt_tech:
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_str2brtech, __pyx_v_value); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_iocp.br_tech = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":193
 *         def __get__(self):
 *             return brtech2str[self._iocp.br_tech]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.br_tech = str2brtech[value]
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.br_tech.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":207
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return bttech2str[self._iocp.bt_tech]
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7bt_tech_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7bt_tech_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7bt_tech___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7bt_tech___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":208
 *         """
 *         def __get__(self):
 *             return bttech2str[self._iocp.bt_tech]             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.bt_tech = str2bttech[value]
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_bttech2str, __pyx_v_self->_iocp.bt_tech, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":207
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return bttech2str[self._iocp.bt_tech]
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.bt_tech.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":209
 *         def __get__(self):
 *             return bttech2str[self._iocp.bt_tech]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.bt_tech = str2bttech[value]
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7bt_tech_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7bt_tech_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7bt_tech_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7bt_tech_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":210
 *             return bttech2str[self._iocp.bt_tech]
 *         def __set__(self, value):
 *             self._iocp.bt_tech = str2bttech[value]             # <<<<<<<<<<<<<<
 * 
 *     property pp_tech:
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_str2bttech, __pyx_v_value); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_iocp.bt_tech = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":209
 *         def __get__(self):
 *             return bttech2str[self._iocp.bt_tech]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.bt_tech = str2bttech[value]
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.bt_tech.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":222
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return pptech2str[self._iocp.pp_tech]
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7pp_tech_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7pp_tech_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7pp_tech___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7pp_tech___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":223
 *         """
 *         def __get__(self):
 *             return pptech2str[self._iocp.pp_tech]             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.pp_tech = str2pptech[value]
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_pptech2str, __pyx_v_self->_iocp.pp_tech, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":222
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return pptech2str[self._iocp.pp_tech]
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.pp_tech.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":224
 *         def __get__(self):
 *             return pptech2str[self._iocp.pp_tech]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.pp_tech = str2pptech[value]
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7pp_tech_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7pp_tech_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7pp_tech_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7pp_tech_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":225
 *             return pptech2str[self._iocp.pp_tech]
 *         def __set__(self, value):
 *             self._iocp.pp_tech = str2pptech[value]             # <<<<<<<<<<<<<<
 * 
 *     property fp_heur:
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_str2pptech, __pyx_v_value); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_iocp.pp_tech = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":224
 *         def __get__(self):
 *             return pptech2str[self._iocp.pp_tech]
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.pp_tech = str2pptech[value]
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.pp_tech.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":233
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.fp_heur
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7fp_heur_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7fp_heur_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7fp_heur___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7fp_heur___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":234
 *         """
 *         def __get__(self):
 *             return self._iocp.fp_heur             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.fp_heur = bool(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_iocp.fp_heur); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 234; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":233
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.fp_heur
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.fp_heur.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":235
 *         def __get__(self):
 *             return self._iocp.fp_heur
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.fp_heur = bool(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7fp_heur_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7fp_heur_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7fp_heur_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7fp_heur_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":236
 *             return self._iocp.fp_heur
 *         def __set__(self, value):
 *             self._iocp.fp_heur = bool(value)             # <<<<<<<<<<<<<<
 * 
 *     property ps_heur:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_iocp.fp_heur = (!(!__pyx_t_1));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":235
 *         def __get__(self):
 *             return self._iocp.fp_heur
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.fp_heur = bool(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.IntOptControls.fp_heur.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":244
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.ps_heur
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7ps_heur_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7ps_heur_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7ps_heur___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7ps_heur___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":245
 *         """
 *         def __get__(self):
 *             return self._iocp.ps_heur             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.ps_heur = bool(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_iocp.ps_heur); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":244
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.ps_heur
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.ps_heur.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":246
 *         def __get__(self):
 *             return self._iocp.ps_heur
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.ps_heur = bool(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7ps_heur_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7ps_heur_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7ps_heur_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7ps_heur_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":247
 *             return self._iocp.ps_heur
 *         def __set__(self, value):
 *             self._iocp.ps_heur = bool(value)             # <<<<<<<<<<<<<<
 * 
 *     property ps_tm_lim:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_iocp.ps_heur = (!(!__pyx_t_1));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":246
 *         def __get__(self):
 *             return self._iocp.ps_heur
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.ps_heur = bool(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.IntOptControls.ps_heur.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":251
 *     property ps_tm_lim:
 *         """Time limit [ms] for the proximity earch heuristic, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.ps_tm_lim
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_9ps_tm_lim_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_9ps_tm_lim_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_9ps_tm_lim___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_9ps_tm_lim___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":252
 *         """Time limit [ms] for the proximity earch heuristic, an `int`"""
 *         def __get__(self):
 *             return self._iocp.ps_tm_lim             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.ps_tm_lim = int(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_iocp.ps_tm_lim); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 252; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":251
 *     property ps_tm_lim:
 *         """Time limit [ms] for the proximity earch heuristic, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.ps_tm_lim
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.ps_tm_lim.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":253
 *         def __get__(self):
 *             return self._iocp.ps_tm_lim
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.ps_tm_lim = int(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_9ps_tm_lim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_9ps_tm_lim_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_9ps_tm_lim_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_9ps_tm_lim_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":254
 *             return self._iocp.ps_tm_lim
 *         def __set__(self, value):
 *             self._iocp.ps_tm_lim = int(value)             # <<<<<<<<<<<<<<
 * 
 *     property gmi_cuts:
 */
  __pyx_t_1 = PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_iocp.ps_tm_lim = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":253
 *         def __get__(self):
 *             return self._iocp.ps_tm_lim
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.ps_tm_lim = int(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.ps_tm_lim.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":258
 *     property gmi_cuts:
 *         """Whether to generate Gomorys mixed integer cuts, a `bool`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.gmi_cuts
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_8gmi_cuts_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_8gmi_cuts_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_8gmi_cuts___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_8gmi_cuts___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":259
 *         """Whether to generate Gomorys mixed integer cuts, a `bool`"""
 *         def __get__(self):
 *             return self._iocp.gmi_cuts             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.gmi_cuts = bool(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_iocp.gmi_cuts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":258
 *     property gmi_cuts:
 *         """Whether to generate Gomorys mixed integer cuts, a `bool`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.gmi_cuts
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.gmi_cuts.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":260
 *         def __get__(self):
 *             return self._iocp.gmi_cuts
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.gmi_cuts = bool(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_8gmi_cuts_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_8gmi_cuts_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_8gmi_cuts_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_8gmi_cuts_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":261
 *             return self._iocp.gmi_cuts
 *         def __set__(self, value):
 *             self._iocp.gmi_cuts = bool(value)             # <<<<<<<<<<<<<<
 * 
 *     property mir_cuts:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_iocp.gmi_cuts = (!(!__pyx_t_1));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":260
 *         def __get__(self):
 *             return self._iocp.gmi_cuts
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.gmi_cuts = bool(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.IntOptControls.gmi_cuts.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":265
 *     property mir_cuts:
 *         """Whether to generate mixed integer rounding cuts, a `bool`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.mir_cuts
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_8mir_cuts_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_8mir_cuts_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_8mir_cuts___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_8mir_cuts___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":266
 *         """Whether to generate mixed integer rounding cuts, a `bool`"""
 *         def __get__(self):
 *             return self._iocp.mir_cuts             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.mir_cuts = bool(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_iocp.mir_cuts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":265
 *     property mir_cuts:
 *         """Whether to generate mixed integer rounding cuts, a `bool`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.mir_cuts
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.mir_cuts.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":267
 *         def __get__(self):
 *             return self._iocp.mir_cuts
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.mir_cuts = bool(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_8mir_cuts_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_8mir_cuts_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_8mir_cuts_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_8mir_cuts_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":268
 *             return self._iocp.mir_cuts
 *         def __set__(self, value):
 *             self._iocp.mir_cuts = bool(value)             # <<<<<<<<<<<<<<
 * 
 *     property cov_cuts:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_iocp.mir_cuts = (!(!__pyx_t_1));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":267
 *         def __get__(self):
 *             return self._iocp.mir_cuts
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.mir_cuts = bool(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.IntOptControls.mir_cuts.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":272
 *     property cov_cuts:
 *         """Whether to generate mixed cover cuts, a `bool`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.cov_cuts
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_8cov_cuts_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_8cov_cuts_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_8cov_cuts___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_8cov_cuts___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":273
 *         """Whether to generate mixed cover cuts, a `bool`"""
 *         def __get__(self):
 *             return self._iocp.cov_cuts             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.cov_cuts = bool(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_iocp.cov_cuts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 273; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":272
 *     property cov_cuts:
 *         """Whether to generate mixed cover cuts, a `bool`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.cov_cuts
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.cov_cuts.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":274
 *         def __get__(self):
 *             return self._iocp.cov_cuts
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.cov_cuts = bool(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_8cov_cuts_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_8cov_cuts_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_8cov_cuts_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_8cov_cuts_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":275
 *             return self._iocp.cov_cuts
 *         def __set__(self, value):
 *             self._iocp.cov_cuts = bool(value)             # <<<<<<<<<<<<<<
 * 
 *     property clq_cuts:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_iocp.cov_cuts = (!(!__pyx_t_1));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":274
 *         def __get__(self):
 *             return self._iocp.cov_cuts
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.cov_cuts = bool(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.IntOptControls.cov_cuts.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":279
 *     property clq_cuts:
 *         """Whether to generate generate clique cuts, a `bool`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.clq_cuts
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_8clq_cuts_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_8clq_cuts_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_8clq_cuts___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_8clq_cuts___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":280
 *         """Whether to generate generate clique cuts, a `bool`"""
 *         def __get__(self):
 *             return self._iocp.clq_cuts             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.clq_cuts = bool(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_iocp.clq_cuts); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":279
 *     property clq_cuts:
 *         """Whether to generate generate clique cuts, a `bool`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.clq_cuts
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.clq_cuts.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":281
 *         def __get__(self):
 *             return self._iocp.clq_cuts
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.clq_cuts = bool(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_8clq_cuts_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_8clq_cuts_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_8clq_cuts_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_8clq_cuts_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":282
 *             return self._iocp.clq_cuts
 *         def __set__(self, value):
 *             self._iocp.clq_cuts = bool(value)             # <<<<<<<<<<<<<<
 * 
 *     property tol_int:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_iocp.clq_cuts = (!(!__pyx_t_1));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":281
 *         def __get__(self):
 *             return self._iocp.clq_cuts
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.clq_cuts = bool(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.IntOptControls.clq_cuts.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":291
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.tol_int
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7tol_int_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7tol_int_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7tol_int___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7tol_int___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":292
 *         """
 *         def __get__(self):
 *             return self._iocp.tol_int             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.tol_int = float(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->_iocp.tol_int); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":291
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.tol_int
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.tol_int.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":293
 *         def __get__(self):
 *             return self._iocp.tol_int
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.tol_int = float(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7tol_int_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7tol_int_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7tol_int_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7tol_int_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":294
 *             return self._iocp.tol_int
 *         def __set__(self, value):
 *             self._iocp.tol_int = float(value)             # <<<<<<<<<<<<<<
 * 
 *     property tol_obj:
 */
  __pyx_t_1 = __Pyx_PyObject_AsDouble(__pyx_v_value); if (unlikely(__pyx_t_1 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 294; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_iocp.tol_int = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":293
 *         def __get__(self):
 *             return self._iocp.tol_int
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.tol_int = float(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.IntOptControls.tol_int.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":304
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.tol_obj
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7tol_obj_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7tol_obj_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7tol_obj___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7tol_obj___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":305
 *         """
 *         def __get__(self):
 *             return self._iocp.tol_obj             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.tol_obj = float(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->_iocp.tol_obj); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":304
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.tol_obj
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.tol_obj.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":306
 *         def __get__(self):
 *             return self._iocp.tol_obj
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.tol_obj = float(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7tol_obj_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7tol_obj_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7tol_obj_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7tol_obj_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":307
 *             return self._iocp.tol_obj
 *         def __set__(self, value):
 *             self._iocp.tol_obj = float(value)             # <<<<<<<<<<<<<<
 * 
 *     property mip_gap:
 */
  __pyx_t_1 = __Pyx_PyObject_AsDouble(__pyx_v_value); if (unlikely(__pyx_t_1 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_iocp.tol_obj = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":306
 *         def __get__(self):
 *             return self._iocp.tol_obj
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.tol_obj = float(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.IntOptControls.tol_obj.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":315
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.mip_gap
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7mip_gap_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_7mip_gap_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7mip_gap___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_7mip_gap___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":316
 *         """
 *         def __get__(self):
 *             return self._iocp.mip_gap             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.mip_gap = float(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_self->_iocp.mip_gap); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":315
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.mip_gap
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.mip_gap.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":317
 *         def __get__(self):
 *             return self._iocp.mip_gap
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.mip_gap = float(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_7mip_gap_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_7mip_gap_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_7mip_gap_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_7mip_gap_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  double __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":318
 *             return self._iocp.mip_gap
 *         def __set__(self, value):
 *             self._iocp.mip_gap = float(value)             # <<<<<<<<<<<<<<
 * 
 *     property presolve:
 */
  __pyx_t_1 = __Pyx_PyObject_AsDouble(__pyx_v_value); if (unlikely(__pyx_t_1 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_iocp.mip_gap = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":317
 *         def __get__(self):
 *             return self._iocp.mip_gap
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.mip_gap = float(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.IntOptControls.mip_gap.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":326
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.presolve
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_8presolve_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_8presolve_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_8presolve___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_8presolve___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":327
 *         """
 *         def __get__(self):
 *             return self._iocp.presolve             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.presolve = bool(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_iocp.presolve); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":326
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.presolve
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.presolve.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":328
 *         def __get__(self):
 *             return self._iocp.presolve
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.presolve = bool(value)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_8presolve_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_8presolve_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_8presolve_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_8presolve_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":329
 *             return self._iocp.presolve
 *         def __set__(self, value):
 *             self._iocp.presolve = bool(value)             # <<<<<<<<<<<<<<
 * 
 *     property binarize:
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_iocp.presolve = (!(!__pyx_t_1));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":328
 *         def __get__(self):
 *             return self._iocp.presolve
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.presolve = bool(value)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.IntOptControls.presolve.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":337
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.binarize
 *         def __set__(self, value):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_8binarize_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_14IntOptControls_8binarize_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_8binarize___get__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_14IntOptControls_8binarize___get__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":338
 *         """
 *         def __get__(self):
 *             return self._iocp.binarize             # <<<<<<<<<<<<<<
 *         def __set__(self, value):
 *             self._iocp.binarize = bool(value)
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_v_self->_iocp.binarize); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":337
 * 
 *         """
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._iocp.binarize
 *         def __set__(self, value):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.IntOptControls.binarize.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":339
 *         def __get__(self):
 *             return self._iocp.binarize
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.binarize = bool(value)
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_14IntOptControls_8binarize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value); /*proto*/
static int __pyx_pw_8ecyglpki_14IntOptControls_8binarize_3__set__(PyObject *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__set__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_14IntOptControls_8binarize_2__set__(((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_self), ((PyObject *)__pyx_v_value));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_14IntOptControls_8binarize_2__set__(struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_self, PyObject *__pyx_v_value) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__set__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":340
 *             return self._iocp.binarize
 *         def __set__(self, value):
 *             self._iocp.binarize = bool(value)             # <<<<<<<<<<<<<<
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_value); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 340; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_self->_iocp.binarize = (!(!__pyx_t_1));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":339
 *         def __get__(self):
 *             return self._iocp.binarize
 *         def __set__(self, value):             # <<<<<<<<<<<<<<
 *             self._iocp.binarize = bool(value)
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.IntOptControls.binarize.__set__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":74
 * cdef str2vartype = {string: vartype for vartype, string in vartype2str.items()}
 * 
 * cdef _bounds(lower, upper):             # <<<<<<<<<<<<<<
 *     if isinstance(lower, numbers.Real):
 *         lb = lower
 */

static PyObject *__pyx_f_8ecyglpki__bounds(PyObject *__pyx_v_lower, PyObject *__pyx_v_upper) {
  PyObject *__pyx_v_lb = NULL;
  PyObject *__pyx_v_ub = NULL;
  PyObject *__pyx_v_vartype = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_bounds", 0);
  __Pyx_INCREF(__pyx_v_lower);
  __Pyx_INCREF(__pyx_v_upper);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":75
 * 
 * cdef _bounds(lower, upper):
 *     if isinstance(lower, numbers.Real):             # <<<<<<<<<<<<<<
 *         lb = lower
 *         if lb <= -double_MAX:
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numbers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Real); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_lower, __pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":76
 * cdef _bounds(lower, upper):
 *     if isinstance(lower, numbers.Real):
 *         lb = lower             # <<<<<<<<<<<<<<
 *         if lb <= -double_MAX:
 *             lb = -double_MAX
 */
    __Pyx_INCREF(__pyx_v_lower);
    __pyx_v_lb = __pyx_v_lower;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":77
 *     if isinstance(lower, numbers.Real):
 *         lb = lower
 *         if lb <= -double_MAX:             # <<<<<<<<<<<<<<
 *             lb = -double_MAX
 *             lower = None
 */
    __pyx_t_2 = PyFloat_FromDouble((-__pyx_v_8ecyglpki_double_MAX)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_lb, __pyx_t_2, Py_LE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 77; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_4) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":78
 *         lb = lower
 *         if lb <= -double_MAX:
 *             lb = -double_MAX             # <<<<<<<<<<<<<<
 *             lower = None
 *     elif lower is None:
 */
      __pyx_t_1 = PyFloat_FromDouble((-__pyx_v_8ecyglpki_double_MAX)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 78; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF_SET(__pyx_v_lb, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":79
 *         if lb <= -double_MAX:
 *             lb = -double_MAX
 *             lower = None             # <<<<<<<<<<<<<<
 *     elif lower is None:
 *         lb = -double_MAX
 */
      __Pyx_INCREF(Py_None);
      __Pyx_DECREF_SET(__pyx_v_lower, Py_None);
      goto __pyx_L4;
    }
    __pyx_L4:;
    goto __pyx_L3;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":80
 *             lb = -double_MAX
 *             lower = None
 *     elif lower is None:             # <<<<<<<<<<<<<<
 *         lb = -double_MAX
 *     else:
 */
  __pyx_t_4 = (__pyx_v_lower == Py_None);
  __pyx_t_3 = (__pyx_t_4 != 0);
  if (__pyx_t_3) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":81
 *             lower = None
 *     elif lower is None:
 *         lb = -double_MAX             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError("Lower bound must be 'None' or 'Real', not " +
 */
    __pyx_t_1 = PyFloat_FromDouble((-__pyx_v_8ecyglpki_double_MAX)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 81; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_lb = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":84
 *     else:
 *         raise TypeError("Lower bound must be 'None' or 'Real', not " +
 *                         type(lower).__name__ + ".")             # <<<<<<<<<<<<<<
 *     if isinstance(upper, numbers.Real):
 *         ub = upper
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_lower)), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":83
 *         lb = -double_MAX
 *     else:
 *         raise TypeError("Lower bound must be 'None' or 'Real', not " +             # <<<<<<<<<<<<<<
 *                         type(lower).__name__ + ".")
 *     if isinstance(upper, numbers.Real):
 */
    __pyx_t_2 = PyNumber_Add(__pyx_kp_s_Lower_bound_must_be_None_or_Real, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":84
 *     else:
 *         raise TypeError("Lower bound must be 'None' or 'Real', not " +
 *                         type(lower).__name__ + ".")             # <<<<<<<<<<<<<<
 *     if isinstance(upper, numbers.Real):
 *         ub = upper
 */
    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_kp_s__4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":83
 *         lb = -double_MAX
 *     else:
 *         raise TypeError("Lower bound must be 'None' or 'Real', not " +             # <<<<<<<<<<<<<<
 *                         type(lower).__name__ + ".")
 *     if isinstance(upper, numbers.Real):
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L3:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":85
 *         raise TypeError("Lower bound must be 'None' or 'Real', not " +
 *                         type(lower).__name__ + ".")
 *     if isinstance(upper, numbers.Real):             # <<<<<<<<<<<<<<
 *         ub = upper
 *         if ub >= +double_MAX:
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_numbers); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_Real); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_upper, __pyx_t_2); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 85; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":86
 *                         type(lower).__name__ + ".")
 *     if isinstance(upper, numbers.Real):
 *         ub = upper             # <<<<<<<<<<<<<<
 *         if ub >= +double_MAX:
 *             ub = +double_MAX
 */
    __Pyx_INCREF(__pyx_v_upper);
    __pyx_v_ub = __pyx_v_upper;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":87
 *     if isinstance(upper, numbers.Real):
 *         ub = upper
 *         if ub >= +double_MAX:             # <<<<<<<<<<<<<<
 *             ub = +double_MAX
 *             upper = None
 */
    __pyx_t_2 = PyFloat_FromDouble(__pyx_v_8ecyglpki_double_MAX); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyObject_RichCompare(__pyx_v_ub, __pyx_t_2, Py_GE); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 87; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (__pyx_t_4) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":88
 *         ub = upper
 *         if ub >= +double_MAX:
 *             ub = +double_MAX             # <<<<<<<<<<<<<<
 *             upper = None
 *     elif upper is None:
 */
      __pyx_t_1 = PyFloat_FromDouble(__pyx_v_8ecyglpki_double_MAX); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 88; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF_SET(__pyx_v_ub, __pyx_t_1);
      __pyx_t_1 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":89
 *         if ub >= +double_MAX:
 *             ub = +double_MAX
 *             upper = None             # <<<<<<<<<<<<<<
 *     elif upper is None:
 *         ub = +double_MAX
 */
      __Pyx_INCREF(Py_None);
      __Pyx_DECREF_SET(__pyx_v_upper, Py_None);
      goto __pyx_L6;
    }
    __pyx_L6:;
    goto __pyx_L5;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":90
 *             ub = +double_MAX
 *             upper = None
 *     elif upper is None:             # <<<<<<<<<<<<<<
 *         ub = +double_MAX
 *     else:
 */
  __pyx_t_4 = (__pyx_v_upper == Py_None);
  __pyx_t_3 = (__pyx_t_4 != 0);
  if (__pyx_t_3) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":91
 *             upper = None
 *     elif upper is None:
 *         ub = +double_MAX             # <<<<<<<<<<<<<<
 *     else:
 *         raise TypeError("Upper bound must be 'None' or 'Real', not " +
 */
    __pyx_t_1 = PyFloat_FromDouble(__pyx_v_8ecyglpki_double_MAX); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_v_ub = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":94
 *     else:
 *         raise TypeError("Upper bound must be 'None' or 'Real', not " +
 *                         type(lower).__name__ + ".")             # <<<<<<<<<<<<<<
 *     if lb > ub:
 *         raise ValueError("Lower bound (" + str(lb) + ") must not dominate " +
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_lower)), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":93
 *         ub = +double_MAX
 *     else:
 *         raise TypeError("Upper bound must be 'None' or 'Real', not " +             # <<<<<<<<<<<<<<
 *                         type(lower).__name__ + ".")
 *     if lb > ub:
 */
    __pyx_t_2 = PyNumber_Add(__pyx_kp_s_Upper_bound_must_be_None_or_Real, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":94
 *     else:
 *         raise TypeError("Upper bound must be 'None' or 'Real', not " +
 *                         type(lower).__name__ + ".")             # <<<<<<<<<<<<<<
 *     if lb > ub:
 *         raise ValueError("Lower bound (" + str(lb) + ") must not dominate " +
 */
    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_kp_s__4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":93
 *         ub = +double_MAX
 *     else:
 *         raise TypeError("Upper bound must be 'None' or 'Real', not " +             # <<<<<<<<<<<<<<
 *                         type(lower).__name__ + ".")
 *     if lb > ub:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L5:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":95
 *         raise TypeError("Upper bound must be 'None' or 'Real', not " +
 *                         type(lower).__name__ + ".")
 *     if lb > ub:             # <<<<<<<<<<<<<<
 *         raise ValueError("Lower bound (" + str(lb) + ") must not dominate " +
 *                          "upper bound (" + str(ub) + ").")
 */
  __pyx_t_1 = PyObject_RichCompare(__pyx_v_lb, __pyx_v_ub, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 95; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_3) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":96
 *                         type(lower).__name__ + ".")
 *     if lb > ub:
 *         raise ValueError("Lower bound (" + str(lb) + ") must not dominate " +             # <<<<<<<<<<<<<<
 *                          "upper bound (" + str(ub) + ").")
 *     vartype = pair2vartype[(lower is None, upper is None)]
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_lb);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_lb);
    __Pyx_GIVEREF(__pyx_v_lb);
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_Lower_bound, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_kp_s_must_not_dominate); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_kp_s_upper_bound); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":97
 *     if lb > ub:
 *         raise ValueError("Lower bound (" + str(lb) + ") must not dominate " +
 *                          "upper bound (" + str(ub) + ").")             # <<<<<<<<<<<<<<
 *     vartype = pair2vartype[(lower is None, upper is None)]
 *     if vartype is glpk.DB:
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_ub);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ub);
    __Pyx_GIVEREF(__pyx_v_ub);
    __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyNumber_Add(__pyx_t_1, __pyx_t_5); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyNumber_Add(__pyx_t_2, __pyx_kp_s__5); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 97; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":96
 *                         type(lower).__name__ + ".")
 *     if lb > ub:
 *         raise ValueError("Lower bound (" + str(lb) + ") must not dominate " +             # <<<<<<<<<<<<<<
 *                          "upper bound (" + str(ub) + ").")
 *     vartype = pair2vartype[(lower is None, upper is None)]
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":98
 *         raise ValueError("Lower bound (" + str(lb) + ") must not dominate " +
 *                          "upper bound (" + str(ub) + ").")
 *     vartype = pair2vartype[(lower is None, upper is None)]             # <<<<<<<<<<<<<<
 *     if vartype is glpk.DB:
 *         if lb == ub:
 */
  __pyx_t_3 = (__pyx_v_lower == Py_None);
  __pyx_t_5 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = (__pyx_v_upper == Py_None);
  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_5);
  __Pyx_GIVEREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_5 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = PyObject_GetItem(__pyx_v_8ecyglpki_pair2vartype, __pyx_t_1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 98; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_vartype = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":99
 *                          "upper bound (" + str(ub) + ").")
 *     vartype = pair2vartype[(lower is None, upper is None)]
 *     if vartype is glpk.DB:             # <<<<<<<<<<<<<<
 *         if lb == ub:
 *             vartype = glpk.FX
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_DB); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 99; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = (__pyx_v_vartype == __pyx_t_2);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = (__pyx_t_3 != 0);
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":100
 *     vartype = pair2vartype[(lower is None, upper is None)]
 *     if vartype is glpk.DB:
 *         if lb == ub:             # <<<<<<<<<<<<<<
 *             vartype = glpk.FX
 *     return vartype, lb, ub
 */
    __pyx_t_2 = PyObject_RichCompare(__pyx_v_lb, __pyx_v_ub, Py_EQ); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_4) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":101
 *     if vartype is glpk.DB:
 *         if lb == ub:
 *             vartype = glpk.FX             # <<<<<<<<<<<<<<
 *     return vartype, lb, ub
 * 
 */
      __pyx_t_2 = __Pyx_PyInt_From_int(GLP_FX); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF_SET(__pyx_v_vartype, __pyx_t_2);
      __pyx_t_2 = 0;
      goto __pyx_L9;
    }
    __pyx_L9:;
    goto __pyx_L8;
  }
  __pyx_L8:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":102
 *         if lb == ub:
 *             vartype = glpk.FX
 *     return vartype, lb, ub             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 102; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_vartype);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_vartype);
  __Pyx_GIVEREF(__pyx_v_vartype);
  __Pyx_INCREF(__pyx_v_lb);
  PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_lb);
  __Pyx_GIVEREF(__pyx_v_lb);
  __Pyx_INCREF(__pyx_v_ub);
  PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_ub);
  __Pyx_GIVEREF(__pyx_v_ub);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":74
 * cdef str2vartype = {string: vartype for vartype, string in vartype2str.items()}
 * 
 * cdef _bounds(lower, upper):             # <<<<<<<<<<<<<<
 *     if isinstance(lower, numbers.Real):
 *         lb = lower
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("ecyglpki._bounds", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_lb);
  __Pyx_XDECREF(__pyx_v_ub);
  __Pyx_XDECREF(__pyx_v_vartype);
  __Pyx_XDECREF(__pyx_v_lower);
  __Pyx_XDECREF(__pyx_v_upper);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":123
 *     }
 * 
 * cdef _statuscheck(str vartypestr, str status):             # <<<<<<<<<<<<<<
 *     if status is not 'basic':
 *         statuses = compatible_status[vartypestr]
 */

static PyObject *__pyx_f_8ecyglpki__statuscheck(PyObject *__pyx_v_vartypestr, PyObject *__pyx_v_status) {
  PyObject *__pyx_v_statuses = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_statuscheck", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":124
 * 
 * cdef _statuscheck(str vartypestr, str status):
 *     if status is not 'basic':             # <<<<<<<<<<<<<<
 *         statuses = compatible_status[vartypestr]
 *         if status not in statuses:
 */
  __pyx_t_1 = (__pyx_v_status != __pyx_n_s_basic);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":125
 * cdef _statuscheck(str vartypestr, str status):
 *     if status is not 'basic':
 *         statuses = compatible_status[vartypestr]             # <<<<<<<<<<<<<<
 *         if status not in statuses:
 *             raise ValueError("Row status must be in " + str(statuses) +
 */
    __pyx_t_3 = PyObject_GetItem(__pyx_v_8ecyglpki_compatible_status, __pyx_v_vartypestr); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_v_statuses = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":126
 *     if status is not 'basic':
 *         statuses = compatible_status[vartypestr]
 *         if status not in statuses:             # <<<<<<<<<<<<<<
 *             raise ValueError("Row status must be in " + str(statuses) +
 *                              ", not " + status + ".")
 */
    __pyx_t_2 = (__Pyx_PySequence_Contains(__pyx_v_status, __pyx_v_statuses, Py_NE)); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_1 = (__pyx_t_2 != 0);
    if (__pyx_t_1) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":127
 *         statuses = compatible_status[vartypestr]
 *         if status not in statuses:
 *             raise ValueError("Row status must be in " + str(statuses) +             # <<<<<<<<<<<<<<
 *                              ", not " + status + ".")
 * 
 */
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_v_statuses);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_statuses);
      __Pyx_GIVEREF(__pyx_v_statuses);
      __pyx_t_4 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Row_status_must_be_in, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_kp_s_not); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":128
 *         if status not in statuses:
 *             raise ValueError("Row status must be in " + str(statuses) +
 *                              ", not " + status + ".")             # <<<<<<<<<<<<<<
 * 
 * 
 */
      __pyx_t_3 = PyNumber_Add(__pyx_t_4, __pyx_v_status); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_kp_s__4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":127
 *         statuses = compatible_status[vartypestr]
 *         if status not in statuses:
 *             raise ValueError("Row status must be in " + str(statuses) +             # <<<<<<<<<<<<<<
 *                              ", not " + status + ".")
 * 
 */
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_Raise(__pyx_t_4, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":123
 *     }
 * 
 * cdef _statuscheck(str vartypestr, str status):             # <<<<<<<<<<<<<<
 *     if status is not 'basic':
 *         statuses = compatible_status[vartypestr]
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki._statuscheck", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_statuses);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":223
 * 
 * # problem coefficients
 * cdef _coeffscheck(coeffs):             # <<<<<<<<<<<<<<
 *     if not isinstance(coeffs, collections.abc.Mapping):
 *         raise TypeError("Coefficients must be passed in a 'Mapping', not " +
 */

static PyObject *__pyx_f_8ecyglpki__coeffscheck(PyObject *__pyx_v_coeffs) {
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_coeffscheck", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":224
 * # problem coefficients
 * cdef _coeffscheck(coeffs):
 *     if not isinstance(coeffs, collections.abc.Mapping):             # <<<<<<<<<<<<<<
 *         raise TypeError("Coefficients must be passed in a 'Mapping', not " +
 *                         type(coeffs).__name__)
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_collections); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_abc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Mapping); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_coeffs, __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = ((!(__pyx_t_3 != 0)) != 0);
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":226
 *     if not isinstance(coeffs, collections.abc.Mapping):
 *         raise TypeError("Coefficients must be passed in a 'Mapping', not " +
 *                         type(coeffs).__name__)             # <<<<<<<<<<<<<<
 *     if not all([isinstance(value, numbers.Real) for value in coeffs.values()]):
 *         raise TypeError("Coefficient values must be 'Real'.")
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_coeffs)), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":225
 * cdef _coeffscheck(coeffs):
 *     if not isinstance(coeffs, collections.abc.Mapping):
 *         raise TypeError("Coefficients must be passed in a 'Mapping', not " +             # <<<<<<<<<<<<<<
 *                         type(coeffs).__name__)
 *     if not all([isinstance(value, numbers.Real) for value in coeffs.values()]):
 */
    __pyx_t_2 = PyNumber_Add(__pyx_kp_s_Coefficients_must_be_passed_in_a, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":227
 *         raise TypeError("Coefficients must be passed in a 'Mapping', not " +
 *                         type(coeffs).__name__)
 *     if not all([isinstance(value, numbers.Real) for value in coeffs.values()]):             # <<<<<<<<<<<<<<
 *         raise TypeError("Coefficient values must be 'Real'.")
 * 
 */
  __pyx_t_2 = PyList_New(0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_coeffs, __pyx_n_s_values); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyList_CheckExact(__pyx_t_5) || PyTuple_CheckExact(__pyx_t_5)) {
    __pyx_t_1 = __pyx_t_5; __Pyx_INCREF(__pyx_t_1); __pyx_t_6 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  for (;;) {
    if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_1)) {
      if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_1)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_1)) {
      if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else {
      __pyx_t_5 = __pyx_t_7(__pyx_t_1);
      if (unlikely(!__pyx_t_5)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_5);
    }
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_GetModuleGlobalName(__pyx_n_s_numbers); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_Real); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_4 = PyObject_IsInstance(__pyx_v_value, __pyx_t_8); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyBool_FromLong(__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    if (unlikely(__Pyx_ListComp_Append(__pyx_t_2, (PyObject*)__pyx_t_8))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_4 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = ((!__pyx_t_4) != 0);
  if (__pyx_t_3) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":228
 *                         type(coeffs).__name__)
 *     if not all([isinstance(value, numbers.Real) for value in coeffs.values()]):
 *         raise TypeError("Coefficient values must be 'Real'.")             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__6, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":223
 * 
 * # problem coefficients
 * cdef _coeffscheck(coeffs):             # <<<<<<<<<<<<<<
 *     if not isinstance(coeffs, collections.abc.Mapping):
 *         raise TypeError("Coefficients must be passed in a 'Mapping', not " +
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("ecyglpki._coeffscheck", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = 0;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":238
 *     cdef glpk.Prob* _prob
 * 
 *     def __cinit__(self, prob_ptr=None):             # <<<<<<<<<<<<<<
 *         if prob_ptr is None:
 *             self._prob = glpk.create_prob()
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_7Problem_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_8ecyglpki_7Problem_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_prob_ptr = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_prob_ptr_2,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_prob_ptr_2);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_prob_ptr = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 238; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem___cinit__(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_prob_ptr);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_7Problem___cinit__(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_prob_ptr) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":239
 * 
 *     def __cinit__(self, prob_ptr=None):
 *         if prob_ptr is None:             # <<<<<<<<<<<<<<
 *             self._prob = glpk.create_prob()
 *             glpk.create_index(self._prob)
 */
  __pyx_t_1 = (__pyx_v_prob_ptr == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":240
 *     def __cinit__(self, prob_ptr=None):
 *         if prob_ptr is None:
 *             self._prob = glpk.create_prob()             # <<<<<<<<<<<<<<
 *             glpk.create_index(self._prob)
 *         else:
 */
    __pyx_v_self->_prob = glp_create_prob();

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":241
 *         if prob_ptr is None:
 *             self._prob = glpk.create_prob()
 *             glpk.create_index(self._prob)             # <<<<<<<<<<<<<<
 *         else:
 *             self._prob = <glpk.Prob*>PyCapsule_GetPointer(prob_ptr(), NULL)
 */
    glp_create_index(__pyx_v_self->_prob);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":243
 *             glpk.create_index(self._prob)
 *         else:
 *             self._prob = <glpk.Prob*>PyCapsule_GetPointer(prob_ptr(), NULL)             # <<<<<<<<<<<<<<
 * 
 *     def _prob_ptr(self):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_prob_ptr, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyCapsule_GetPointer(__pyx_t_3, NULL); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_self->_prob = ((struct glp_prob *)__pyx_t_4);
  }
  __pyx_L3:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":238
 *     cdef glpk.Prob* _prob
 * 
 *     def __cinit__(self, prob_ptr=None):             # <<<<<<<<<<<<<<
 *         if prob_ptr is None:
 *             self._prob = glpk.create_prob()
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":245
 *             self._prob = <glpk.Prob*>PyCapsule_GetPointer(prob_ptr(), NULL)
 * 
 *     def _prob_ptr(self):             # <<<<<<<<<<<<<<
 *         """Encapsulate the pointer to the problem object
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_3_prob_ptr(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_2_prob_ptr[] = "Problem._prob_ptr(self)\nEncapsulate the pointer to the problem object\n\n        The problem object pointer `self._prob` cannot be passed as such as\n        an argument to other functions. Therefore we encapsulate it in a\n        capsule that can be passed. It has to be unencapsulated after\n        reception.\n\n        ";
static PyObject *__pyx_pw_8ecyglpki_7Problem_3_prob_ptr(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_prob_ptr (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_2_prob_ptr(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_2_prob_ptr(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_prob_ptr", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":254
 * 
 *         """
 *         return PyCapsule_New(self._prob, NULL, NULL)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyCapsule_New(__pyx_v_self->_prob, NULL, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 254; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":245
 *             self._prob = <glpk.Prob*>PyCapsule_GetPointer(prob_ptr(), NULL)
 * 
 *     def _prob_ptr(self):             # <<<<<<<<<<<<<<
 *         """Encapsulate the pointer to the problem object
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem._prob_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":256
 *         return PyCapsule_New(self._prob, NULL, NULL)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         glpk.delete_index(self._prob)
 *         glpk.delete_prob(self._prob)
 */

/* Python wrapper */
static void __pyx_pw_8ecyglpki_7Problem_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_8ecyglpki_7Problem_5__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_8ecyglpki_7Problem_4__dealloc__(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_8ecyglpki_7Problem_4__dealloc__(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":257
 * 
 *     def __dealloc__(self):
 *         glpk.delete_index(self._prob)             # <<<<<<<<<<<<<<
 *         glpk.delete_prob(self._prob)
 * 
 */
  glp_delete_index(__pyx_v_self->_prob);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":258
 *     def __dealloc__(self):
 *         glpk.delete_index(self._prob)
 *         glpk.delete_prob(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     ### Translated GLPK functions ###
 */
  glp_delete_prob(__pyx_v_self->_prob);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":256
 *         return PyCapsule_New(self._prob, NULL, NULL)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         glpk.delete_index(self._prob)
 *         glpk.delete_prob(self._prob)
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":262
 *     ### Translated GLPK functions ###
 * 
 *     def set_prob_name(self, str name):             # <<<<<<<<<<<<<<
 *         """Assign (change) problem name"""
 *         glpk.set_prob_name(self._prob, name2chars(name))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_7set_prob_name(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_6set_prob_name[] = "Problem.set_prob_name(self, str name)\nAssign (change) problem name";
static PyObject *__pyx_pw_8ecyglpki_7Problem_7set_prob_name(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_prob_name (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_6set_prob_name(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_name));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_6set_prob_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_prob_name", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":264
 *     def set_prob_name(self, str name):
 *         """Assign (change) problem name"""
 *         glpk.set_prob_name(self._prob, name2chars(name))             # <<<<<<<<<<<<<<
 * 
 *     def set_obj_name(self, str name):
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_name2chars(__pyx_v_name); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 264; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_set_prob_name(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":262
 *     ### Translated GLPK functions ###
 * 
 *     def set_prob_name(self, str name):             # <<<<<<<<<<<<<<
 *         """Assign (change) problem name"""
 *         glpk.set_prob_name(self._prob, name2chars(name))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_prob_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":266
 *         glpk.set_prob_name(self._prob, name2chars(name))
 * 
 *     def set_obj_name(self, str name):             # <<<<<<<<<<<<<<
 *         """Assign (change) objective function name"""
 *         glpk.set_obj_name(self._prob, name2chars(name))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_9set_obj_name(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_8set_obj_name[] = "Problem.set_obj_name(self, str name)\nAssign (change) objective function name";
static PyObject *__pyx_pw_8ecyglpki_7Problem_9set_obj_name(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_obj_name (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_8set_obj_name(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_name));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_8set_obj_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_obj_name", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":268
 *     def set_obj_name(self, str name):
 *         """Assign (change) objective function name"""
 *         glpk.set_obj_name(self._prob, name2chars(name))             # <<<<<<<<<<<<<<
 * 
 *     def set_obj_dir(self, str direction):
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_name2chars(__pyx_v_name); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_set_obj_name(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":266
 *         glpk.set_prob_name(self._prob, name2chars(name))
 * 
 *     def set_obj_name(self, str name):             # <<<<<<<<<<<<<<
 *         """Assign (change) objective function name"""
 *         glpk.set_obj_name(self._prob, name2chars(name))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_obj_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":270
 *         glpk.set_obj_name(self._prob, name2chars(name))
 * 
 *     def set_obj_dir(self, str direction):             # <<<<<<<<<<<<<<
 *         """Set (change) optimization direction flag"""
 *         glpk.set_obj_dir(self._prob, str2optdir[direction])
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_11set_obj_dir(PyObject *__pyx_v_self, PyObject *__pyx_v_direction); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_10set_obj_dir[] = "Problem.set_obj_dir(self, str direction)\nSet (change) optimization direction flag";
static PyObject *__pyx_pw_8ecyglpki_7Problem_11set_obj_dir(PyObject *__pyx_v_self, PyObject *__pyx_v_direction) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_obj_dir (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_direction), (&PyString_Type), 1, "direction", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_10set_obj_dir(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_direction));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_10set_obj_dir(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_direction) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_obj_dir", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":272
 *     def set_obj_dir(self, str direction):
 *         """Set (change) optimization direction flag"""
 *         glpk.set_obj_dir(self._prob, str2optdir[direction])             # <<<<<<<<<<<<<<
 * 
 *     def add_rows(self, int number):
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_str2optdir, __pyx_v_direction); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  glp_set_obj_dir(__pyx_v_self->_prob, __pyx_t_2);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":270
 *         glpk.set_obj_name(self._prob, name2chars(name))
 * 
 *     def set_obj_dir(self, str direction):             # <<<<<<<<<<<<<<
 *         """Set (change) optimization direction flag"""
 *         glpk.set_obj_dir(self._prob, str2optdir[direction])
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.set_obj_dir", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":274
 *         glpk.set_obj_dir(self._prob, str2optdir[direction])
 * 
 *     def add_rows(self, int number):             # <<<<<<<<<<<<<<
 *         """Add new rows to problem object"""
 *         return glpk.add_rows(self._prob, number)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_13add_rows(PyObject *__pyx_v_self, PyObject *__pyx_arg_number); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_12add_rows[] = "Problem.add_rows(self, int number)\nAdd new rows to problem object";
static PyObject *__pyx_pw_8ecyglpki_7Problem_13add_rows(PyObject *__pyx_v_self, PyObject *__pyx_arg_number) {
  int __pyx_v_number;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_rows (wrapper)", 0);
  assert(__pyx_arg_number); {
    __pyx_v_number = __Pyx_PyInt_As_int(__pyx_arg_number); if (unlikely((__pyx_v_number == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.add_rows", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_12add_rows(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((int)__pyx_v_number));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_12add_rows(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_number) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_rows", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":276
 *     def add_rows(self, int number):
 *         """Add new rows to problem object"""
 *         return glpk.add_rows(self._prob, number)             # <<<<<<<<<<<<<<
 * 
 *     def add_named_rows(self, *names):  # variant of add_rows
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_add_rows(__pyx_v_self->_prob, __pyx_v_number)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":274
 *         glpk.set_obj_dir(self._prob, str2optdir[direction])
 * 
 *     def add_rows(self, int number):             # <<<<<<<<<<<<<<
 *         """Add new rows to problem object"""
 *         return glpk.add_rows(self._prob, number)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.add_rows", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":278
 *         return glpk.add_rows(self._prob, number)
 * 
 *     def add_named_rows(self, *names):  # variant of add_rows             # <<<<<<<<<<<<<<
 *         """Add new rows to problem object
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_15add_named_rows(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_14add_named_rows[] = "Problem.add_named_rows(self, *names)\nAdd new rows to problem object\n\n        :param names: the names (str strings) of the rows to add\n\n        ";
static PyObject *__pyx_pw_8ecyglpki_7Problem_15add_named_rows(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_names = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_named_rows (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "add_named_rows", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_names = __pyx_args;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_14add_named_rows(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_names);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_names);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_14add_named_rows(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_names) {
  int __pyx_v_number;
  int __pyx_v_first;
  PyObject *__pyx_v_row = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *(*__pyx_t_10)(PyObject *);
  char *__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_named_rows", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":284
 * 
 *         """
 *         cdef int number = len(names)             # <<<<<<<<<<<<<<
 *         if number is 0:
 *             return
 */
  __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_names); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_number = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":285
 *         """
 *         cdef int number = len(names)
 *         if number is 0:             # <<<<<<<<<<<<<<
 *             return
 *         cdef int first = self.add_rows(number)
 */
  __pyx_t_2 = ((__pyx_v_number == 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":286
 *         cdef int number = len(names)
 *         if number is 0:
 *             return             # <<<<<<<<<<<<<<
 *         cdef int first = self.add_rows(number)
 *         for row, name in enumerate(names, start=first):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":287
 *         if number is 0:
 *             return
 *         cdef int first = self.add_rows(number)             # <<<<<<<<<<<<<<
 *         for row, name in enumerate(names, start=first):
 *             glpk.set_row_name(self._prob, row, name2chars(name))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_rows); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_number); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_first = __pyx_t_6;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":288
 *             return
 *         cdef int first = self.add_rows(number)
 *         for row, name in enumerate(names, start=first):             # <<<<<<<<<<<<<<
 *             glpk.set_row_name(self._prob, row, name2chars(name))
 * 
 */
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_names);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_names);
  __Pyx_GIVEREF(__pyx_v_names);
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_first); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_5)) {
      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_5)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_5)) {
      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else {
      __pyx_t_3 = __pyx_t_7(__pyx_t_5);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
      PyObject* sequence = __pyx_t_3;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_8 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_8);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      #endif
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_8);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_10 = NULL;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_L7_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_row, __pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":289
 *         cdef int first = self.add_rows(number)
 *         for row, name in enumerate(names, start=first):
 *             glpk.set_row_name(self._prob, row, name2chars(name))             # <<<<<<<<<<<<<<
 * 
 *     def add_cols(self, int number):
 */
    __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (!(likely(PyString_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_name)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_11 = __pyx_f_8ecyglpki_name2chars(((PyObject*)__pyx_v_name)); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    glp_set_row_name(__pyx_v_self->_prob, __pyx_t_6, __pyx_t_11);
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":278
 *         return glpk.add_rows(self._prob, number)
 * 
 *     def add_named_rows(self, *names):  # variant of add_rows             # <<<<<<<<<<<<<<
 *         """Add new rows to problem object
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("ecyglpki.Problem.add_named_rows", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":291
 *             glpk.set_row_name(self._prob, row, name2chars(name))
 * 
 *     def add_cols(self, int number):             # <<<<<<<<<<<<<<
 *         """Add new columns to problem object"""
 *         return glpk.add_cols(self._prob, number)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_17add_cols(PyObject *__pyx_v_self, PyObject *__pyx_arg_number); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_16add_cols[] = "Problem.add_cols(self, int number)\nAdd new columns to problem object";
static PyObject *__pyx_pw_8ecyglpki_7Problem_17add_cols(PyObject *__pyx_v_self, PyObject *__pyx_arg_number) {
  int __pyx_v_number;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_cols (wrapper)", 0);
  assert(__pyx_arg_number); {
    __pyx_v_number = __Pyx_PyInt_As_int(__pyx_arg_number); if (unlikely((__pyx_v_number == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.add_cols", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_16add_cols(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((int)__pyx_v_number));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_16add_cols(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_number) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_cols", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":293
 *     def add_cols(self, int number):
 *         """Add new columns to problem object"""
 *         return glpk.add_cols(self._prob, number)             # <<<<<<<<<<<<<<
 * 
 *     def add_named_cols(self, *names):  # variant of add_cols
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_add_cols(__pyx_v_self->_prob, __pyx_v_number)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":291
 *             glpk.set_row_name(self._prob, row, name2chars(name))
 * 
 *     def add_cols(self, int number):             # <<<<<<<<<<<<<<
 *         """Add new columns to problem object"""
 *         return glpk.add_cols(self._prob, number)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.add_cols", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":295
 *         return glpk.add_cols(self._prob, number)
 * 
 *     def add_named_cols(self, *names):  # variant of add_cols             # <<<<<<<<<<<<<<
 *         """Add new columns to problem object
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_19add_named_cols(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_18add_named_cols[] = "Problem.add_named_cols(self, *names)\nAdd new columns to problem object\n\n        :param names: the names (str strings) of the columns to add\n\n        ";
static PyObject *__pyx_pw_8ecyglpki_7Problem_19add_named_cols(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_names = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_named_cols (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "add_named_cols", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_names = __pyx_args;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_18add_named_cols(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_names);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_names);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_18add_named_cols(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_names) {
  int __pyx_v_number;
  int __pyx_v_first;
  PyObject *__pyx_v_col = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *(*__pyx_t_10)(PyObject *);
  char *__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_named_cols", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":301
 * 
 *         """
 *         cdef int number = len(names)             # <<<<<<<<<<<<<<
 *         if number is 0:
 *             return
 */
  __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_names); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 301; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_number = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":302
 *         """
 *         cdef int number = len(names)
 *         if number is 0:             # <<<<<<<<<<<<<<
 *             return
 *         cdef int first = self.add_cols(number)
 */
  __pyx_t_2 = ((__pyx_v_number == 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":303
 *         cdef int number = len(names)
 *         if number is 0:
 *             return             # <<<<<<<<<<<<<<
 *         cdef int first = self.add_cols(number)
 *         for col, name in enumerate(names, start=first):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":304
 *         if number is 0:
 *             return
 *         cdef int first = self.add_cols(number)             # <<<<<<<<<<<<<<
 *         for col, name in enumerate(names, start=first):
 *             glpk.set_col_name(self._prob, col, name2chars(name))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_cols); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_number); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 304; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_first = __pyx_t_6;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":305
 *             return
 *         cdef int first = self.add_cols(number)
 *         for col, name in enumerate(names, start=first):             # <<<<<<<<<<<<<<
 *             glpk.set_col_name(self._prob, col, name2chars(name))
 * 
 */
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_names);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_names);
  __Pyx_GIVEREF(__pyx_v_names);
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_first); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_5)) {
      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_5)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_5)) {
      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else {
      __pyx_t_3 = __pyx_t_7(__pyx_t_5);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
      PyObject* sequence = __pyx_t_3;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_8 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_8);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      #endif
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_8);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_10 = NULL;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_L7_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_col, __pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":306
 *         cdef int first = self.add_cols(number)
 *         for col, name in enumerate(names, start=first):
 *             glpk.set_col_name(self._prob, col, name2chars(name))             # <<<<<<<<<<<<<<
 * 
 *     def set_row_name(self, row, str name):
 */
    __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (!(likely(PyString_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_name)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_11 = __pyx_f_8ecyglpki_name2chars(((PyObject*)__pyx_v_name)); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    glp_set_col_name(__pyx_v_self->_prob, __pyx_t_6, __pyx_t_11);
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":295
 *         return glpk.add_cols(self._prob, number)
 * 
 *     def add_named_cols(self, *names):  # variant of add_cols             # <<<<<<<<<<<<<<
 *         """Add new columns to problem object
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("ecyglpki.Problem.add_named_cols", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":308
 *             glpk.set_col_name(self._prob, col, name2chars(name))
 * 
 *     def set_row_name(self, row, str name):             # <<<<<<<<<<<<<<
 *         """Change row name"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_21set_row_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_20set_row_name[] = "Problem.set_row_name(self, row, str name)\nChange row name";
static PyObject *__pyx_pw_8ecyglpki_7Problem_21set_row_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_row = 0;
  PyObject *__pyx_v_name = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_row_name (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_row,&__pyx_n_s_name_2,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_row)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_row_name", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_row_name") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_row = values[0];
    __pyx_v_name = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_row_name", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_row_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_20set_row_name(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_row, __pyx_v_name);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_20set_row_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  char *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_row_name", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":310
 *     def set_row_name(self, row, str name):
 *         """Change row name"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         glpk.set_row_name(self._prob, row, name2chars(name))
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 310; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":311
 *         """Change row name"""
 *         row = self.find_row_as_needed(row)
 *         glpk.set_row_name(self._prob, row, name2chars(name))             # <<<<<<<<<<<<<<
 * 
 *     def set_col_name(self, col, str name):
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __pyx_f_8ecyglpki_name2chars(__pyx_v_name); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 311; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_set_row_name(__pyx_v_self->_prob, __pyx_t_4, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":308
 *             glpk.set_col_name(self._prob, col, name2chars(name))
 * 
 *     def set_row_name(self, row, str name):             # <<<<<<<<<<<<<<
 *         """Change row name"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.set_row_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":313
 *         glpk.set_row_name(self._prob, row, name2chars(name))
 * 
 *     def set_col_name(self, col, str name):             # <<<<<<<<<<<<<<
 *         """Change column name"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_23set_col_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_22set_col_name[] = "Problem.set_col_name(self, col, str name)\nChange column name";
static PyObject *__pyx_pw_8ecyglpki_7Problem_23set_col_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_col = 0;
  PyObject *__pyx_v_name = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_col_name (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_col,&__pyx_n_s_name_2,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_col)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_col_name", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_col_name") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_col = values[0];
    __pyx_v_name = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_col_name", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_col_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 313; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_22set_col_name(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_col, __pyx_v_name);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_22set_col_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  char *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_col_name", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":315
 *     def set_col_name(self, col, str name):
 *         """Change column name"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         glpk.set_col_name(self._prob, col, name2chars(name))
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":316
 *         """Change column name"""
 *         col = self.find_col_as_needed(col)
 *         glpk.set_col_name(self._prob, col, name2chars(name))             # <<<<<<<<<<<<<<
 * 
 *     def set_row_bnds(self, row, lower, upper):
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __pyx_f_8ecyglpki_name2chars(__pyx_v_name); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_set_col_name(__pyx_v_self->_prob, __pyx_t_4, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":313
 *         glpk.set_row_name(self._prob, row, name2chars(name))
 * 
 *     def set_col_name(self, col, str name):             # <<<<<<<<<<<<<<
 *         """Change column name"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.set_col_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":318
 *         glpk.set_col_name(self._prob, col, name2chars(name))
 * 
 *     def set_row_bnds(self, row, lower, upper):             # <<<<<<<<<<<<<<
 *         """Set (change) row bounds"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_25set_row_bnds(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_24set_row_bnds[] = "Problem.set_row_bnds(self, row, lower, upper)\nSet (change) row bounds";
static PyObject *__pyx_pw_8ecyglpki_7Problem_25set_row_bnds(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_row = 0;
  PyObject *__pyx_v_lower = 0;
  PyObject *__pyx_v_upper = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_row_bnds (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_row,&__pyx_n_s_lower,&__pyx_n_s_upper,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_row)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_lower)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_row_bnds", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_upper)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_row_bnds", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_row_bnds") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_row = values[0];
    __pyx_v_lower = values[1];
    __pyx_v_upper = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_row_bnds", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_row_bnds", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_24set_row_bnds(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_row, __pyx_v_lower, __pyx_v_upper);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_24set_row_bnds(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row, PyObject *__pyx_v_lower, PyObject *__pyx_v_upper) {
  int __pyx_v_vartype;
  double __pyx_v_lb;
  double __pyx_v_ub;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *(*__pyx_t_6)(PyObject *);
  int __pyx_t_7;
  double __pyx_t_8;
  double __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_row_bnds", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":320
 *     def set_row_bnds(self, row, lower, upper):
 *         """Set (change) row bounds"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         cdef int vartype
 *         cdef double lb
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":324
 *         cdef double lb
 *         cdef double ub
 *         vartype, lb, ub = _bounds(lower, upper)             # <<<<<<<<<<<<<<
 *         glpk.set_row_bnds(self._prob, row, vartype, lb, ub)
 * 
 */
  __pyx_t_3 = __pyx_f_8ecyglpki__bounds(__pyx_v_lower, __pyx_v_upper); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
    PyObject* sequence = __pyx_t_3;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
      __pyx_t_4 = PyList_GET_ITEM(sequence, 2); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_6 = NULL;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L4_unpacking_done:;
  }
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_vartype = __pyx_t_7;
  __pyx_v_lb = __pyx_t_8;
  __pyx_v_ub = __pyx_t_9;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":325
 *         cdef double ub
 *         vartype, lb, ub = _bounds(lower, upper)
 *         glpk.set_row_bnds(self._prob, row, vartype, lb, ub)             # <<<<<<<<<<<<<<
 * 
 *     def set_col_bnds(self, col, lower, upper):
 */
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_set_row_bnds(__pyx_v_self->_prob, __pyx_t_7, __pyx_v_vartype, __pyx_v_lb, __pyx_v_ub);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":318
 *         glpk.set_col_name(self._prob, col, name2chars(name))
 * 
 *     def set_row_bnds(self, row, lower, upper):             # <<<<<<<<<<<<<<
 *         """Set (change) row bounds"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("ecyglpki.Problem.set_row_bnds", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":327
 *         glpk.set_row_bnds(self._prob, row, vartype, lb, ub)
 * 
 *     def set_col_bnds(self, col, lower, upper):             # <<<<<<<<<<<<<<
 *         """Set (change) column bounds"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_27set_col_bnds(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_26set_col_bnds[] = "Problem.set_col_bnds(self, col, lower, upper)\nSet (change) column bounds";
static PyObject *__pyx_pw_8ecyglpki_7Problem_27set_col_bnds(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_col = 0;
  PyObject *__pyx_v_lower = 0;
  PyObject *__pyx_v_upper = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_col_bnds (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_col,&__pyx_n_s_lower,&__pyx_n_s_upper,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_col)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_lower)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_col_bnds", 1, 3, 3, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_upper)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_col_bnds", 1, 3, 3, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_col_bnds") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_col = values[0];
    __pyx_v_lower = values[1];
    __pyx_v_upper = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_col_bnds", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 327; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_col_bnds", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_26set_col_bnds(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_col, __pyx_v_lower, __pyx_v_upper);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_26set_col_bnds(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_lower, PyObject *__pyx_v_upper) {
  int __pyx_v_vartype;
  double __pyx_v_lb;
  double __pyx_v_ub;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *(*__pyx_t_6)(PyObject *);
  int __pyx_t_7;
  double __pyx_t_8;
  double __pyx_t_9;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_col_bnds", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":329
 *     def set_col_bnds(self, col, lower, upper):
 *         """Set (change) column bounds"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         cdef int vartype
 *         cdef double lb
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 329; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":333
 *         cdef double lb
 *         cdef double ub
 *         vartype, lb, ub = _bounds(lower, upper)             # <<<<<<<<<<<<<<
 *         glpk.set_col_bnds(self._prob, col, vartype, lb, ub)
 * 
 */
  __pyx_t_3 = __pyx_f_8ecyglpki__bounds(__pyx_v_lower, __pyx_v_upper); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
    PyObject* sequence = __pyx_t_3;
    #if CYTHON_COMPILING_IN_CPYTHON
    Py_ssize_t size = Py_SIZE(sequence);
    #else
    Py_ssize_t size = PySequence_Size(sequence);
    #endif
    if (unlikely(size != 3)) {
      if (size > 3) __Pyx_RaiseTooManyValuesError(3);
      else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
    #if CYTHON_COMPILING_IN_CPYTHON
    if (likely(PyTuple_CheckExact(sequence))) {
      __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyTuple_GET_ITEM(sequence, 1); 
      __pyx_t_4 = PyTuple_GET_ITEM(sequence, 2); 
    } else {
      __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
      __pyx_t_1 = PyList_GET_ITEM(sequence, 1); 
      __pyx_t_4 = PyList_GET_ITEM(sequence, 2); 
    }
    __Pyx_INCREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_t_4);
    #else
    __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    #endif
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  } else {
    Py_ssize_t index = -1;
    __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
    index = 0; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_2);
    index = 1; __pyx_t_1 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_1)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_1);
    index = 2; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L3_unpacking_failed;
    __Pyx_GOTREF(__pyx_t_4);
    if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_6 = NULL;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    goto __pyx_L4_unpacking_done;
    __pyx_L3_unpacking_failed:;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
    if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_L4_unpacking_done:;
  }
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_8 = __pyx_PyFloat_AsDouble(__pyx_t_1); if (unlikely((__pyx_t_8 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_9 = __pyx_PyFloat_AsDouble(__pyx_t_4); if (unlikely((__pyx_t_9 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_vartype = __pyx_t_7;
  __pyx_v_lb = __pyx_t_8;
  __pyx_v_ub = __pyx_t_9;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":334
 *         cdef double ub
 *         vartype, lb, ub = _bounds(lower, upper)
 *         glpk.set_col_bnds(self._prob, col, vartype, lb, ub)             # <<<<<<<<<<<<<<
 * 
 *     def set_obj_coef(self, col, double coeff):
 */
  __pyx_t_7 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_7 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 334; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_set_col_bnds(__pyx_v_self->_prob, __pyx_t_7, __pyx_v_vartype, __pyx_v_lb, __pyx_v_ub);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":327
 *         glpk.set_row_bnds(self._prob, row, vartype, lb, ub)
 * 
 *     def set_col_bnds(self, col, lower, upper):             # <<<<<<<<<<<<<<
 *         """Set (change) column bounds"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("ecyglpki.Problem.set_col_bnds", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":336
 *         glpk.set_col_bnds(self._prob, col, vartype, lb, ub)
 * 
 *     def set_obj_coef(self, col, double coeff):             # <<<<<<<<<<<<<<
 *         """Set (change) obj. coefficient"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_29set_obj_coef(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_28set_obj_coef[] = "Problem.set_obj_coef(self, col, double coeff)\nSet (change) obj. coefficient";
static PyObject *__pyx_pw_8ecyglpki_7Problem_29set_obj_coef(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_col = 0;
  double __pyx_v_coeff;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_obj_coef (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_col,&__pyx_n_s_coeff,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_col)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_coeff)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_obj_coef", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_obj_coef") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_col = values[0];
    __pyx_v_coeff = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_coeff == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_obj_coef", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 336; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_obj_coef", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_28set_obj_coef(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_col, __pyx_v_coeff);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_28set_obj_coef(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, double __pyx_v_coeff) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_obj_coef", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":338
 *     def set_obj_coef(self, col, double coeff):
 *         """Set (change) obj. coefficient"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         glpk.set_obj_coef(self._prob, col, coeff)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 338; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":339
 *         """Set (change) obj. coefficient"""
 *         col = self.find_col_as_needed(col)
 *         glpk.set_obj_coef(self._prob, col, coeff)             # <<<<<<<<<<<<<<
 * 
 *     def set_obj_const(self, double coeff):  # variant of set_obj_coef
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_set_obj_coef(__pyx_v_self->_prob, __pyx_t_4, __pyx_v_coeff);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":336
 *         glpk.set_col_bnds(self._prob, col, vartype, lb, ub)
 * 
 *     def set_obj_coef(self, col, double coeff):             # <<<<<<<<<<<<<<
 *         """Set (change) obj. coefficient"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.set_obj_coef", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":341
 *         glpk.set_obj_coef(self._prob, col, coeff)
 * 
 *     def set_obj_const(self, double coeff):  # variant of set_obj_coef             # <<<<<<<<<<<<<<
 *         """Set (change) obj. constant term"""
 *         glpk.set_obj_coef(self._prob, 0, coeff)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_31set_obj_const(PyObject *__pyx_v_self, PyObject *__pyx_arg_coeff); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_30set_obj_const[] = "Problem.set_obj_const(self, double coeff)\nSet (change) obj. constant term";
static PyObject *__pyx_pw_8ecyglpki_7Problem_31set_obj_const(PyObject *__pyx_v_self, PyObject *__pyx_arg_coeff) {
  double __pyx_v_coeff;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_obj_const (wrapper)", 0);
  assert(__pyx_arg_coeff); {
    __pyx_v_coeff = __pyx_PyFloat_AsDouble(__pyx_arg_coeff); if (unlikely((__pyx_v_coeff == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_obj_const", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_30set_obj_const(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((double)__pyx_v_coeff));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_30set_obj_const(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, double __pyx_v_coeff) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_obj_const", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":343
 *     def set_obj_const(self, double coeff):  # variant of set_obj_coef
 *         """Set (change) obj. constant term"""
 *         glpk.set_obj_coef(self._prob, 0, coeff)             # <<<<<<<<<<<<<<
 * 
 *     def set_mat_row(self, row, coeffs):
 */
  glp_set_obj_coef(__pyx_v_self->_prob, 0, __pyx_v_coeff);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":341
 *         glpk.set_obj_coef(self._prob, col, coeff)
 * 
 *     def set_obj_const(self, double coeff):  # variant of set_obj_coef             # <<<<<<<<<<<<<<
 *         """Set (change) obj. constant term"""
 *         glpk.set_obj_coef(self._prob, 0, coeff)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":345
 *         glpk.set_obj_coef(self._prob, 0, coeff)
 * 
 *     def set_mat_row(self, row, coeffs):             # <<<<<<<<<<<<<<
 *         """Set (replace) row of the constraint matrix
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_33set_mat_row(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_32set_mat_row[] = "Problem.set_mat_row(self, row, coeffs)\nSet (replace) row of the constraint matrix\n\n        :param coeffs: |Mapping| from column names (str strings) to\n            coefficient values (|Real|).\n\n        ";
static PyObject *__pyx_pw_8ecyglpki_7Problem_33set_mat_row(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_row = 0;
  PyObject *__pyx_v_coeffs = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_mat_row (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_row,&__pyx_n_s_coeffs,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_row)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_coeffs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_mat_row", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_mat_row") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_row = values[0];
    __pyx_v_coeffs = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_mat_row", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 345; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_mat_row", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_32set_mat_row(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_row, __pyx_v_coeffs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_32set_mat_row(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row, PyObject *__pyx_v_coeffs) {
  int __pyx_v_k;
  int *__pyx_v_cols;
  double *__pyx_v_vals;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  double __pyx_t_11;
  int __pyx_t_12;
  char const *__pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_mat_row", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":352
 * 
 *         """
 *         _coeffscheck(coeffs)             # <<<<<<<<<<<<<<
 *         row = self.find_row_as_needed(row)
 *         cdef int k = len(coeffs)
 */
  __pyx_t_1 = __pyx_f_8ecyglpki__coeffscheck(__pyx_v_coeffs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":353
 *         """
 *         _coeffscheck(coeffs)
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         cdef int k = len(coeffs)
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":354
 *         _coeffscheck(coeffs)
 *         row = self.find_row_as_needed(row)
 *         cdef int k = len(coeffs)             # <<<<<<<<<<<<<<
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 */
  __pyx_t_4 = PyObject_Length(__pyx_v_coeffs); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 354; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_4;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":355
 *         row = self.find_row_as_needed(row)
 *         cdef int k = len(coeffs)
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 *         try:
 */
  __pyx_v_cols = ((int *)glp_alloc((1 + __pyx_v_k), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":356
 *         cdef int k = len(coeffs)
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))             # <<<<<<<<<<<<<<
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):
 */
  __pyx_v_vals = ((double *)glp_alloc((1 + __pyx_v_k), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":357
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 *         try:             # <<<<<<<<<<<<<<
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 cols[i] = self.find_col_as_needed(item[0])
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":358
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):             # <<<<<<<<<<<<<<
 *                 cols[i] = self.find_col_as_needed(item[0])
 *                 vals[i] = item[1]
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_coeffs, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) {
      __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else {
        __pyx_t_1 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_1)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_1);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
        PyObject* sequence = __pyx_t_1;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
        index = 0; __pyx_t_3 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_3)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_3);
        index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_t_8 = NULL;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L9_unpacking_done;
        __pyx_L8_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_8 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 358; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_L9_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
      __pyx_t_3 = 0;
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":359
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 cols[i] = self.find_col_as_needed(item[0])             # <<<<<<<<<<<<<<
 *                 vals[i] = item[1]
 *             glpk.set_mat_row(self._prob, row, k, cols, vals)
 */
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      (__pyx_v_cols[__pyx_t_10]) = __pyx_t_9;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":360
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 cols[i] = self.find_col_as_needed(item[0])
 *                 vals[i] = item[1]             # <<<<<<<<<<<<<<
 *             glpk.set_mat_row(self._prob, row, k, cols, vals)
 *         finally:
 */
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_item, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 360; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      (__pyx_v_vals[__pyx_t_10]) = __pyx_t_11;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":361
 *                 cols[i] = self.find_col_as_needed(item[0])
 *                 vals[i] = item[1]
 *             glpk.set_mat_row(self._prob, row, k, cols, vals)             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(cols)
 */
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 361; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    glp_set_mat_row(__pyx_v_self->_prob, __pyx_t_9, __pyx_v_k, __pyx_v_cols, __pyx_v_vals);
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":363
 *             glpk.set_mat_row(self._prob, row, k, cols, vals)
 *         finally:
 *             glpk.free(cols)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      glp_free(__pyx_v_cols);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":364
 *         finally:
 *             glpk.free(cols)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def clear_mat_row(self, row):  # variant of set_mat_row
 */
      glp_free(__pyx_v_vals);
      goto __pyx_L5;
    }
    /*exception exit:*/{
      __pyx_L4_error:;
      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __pyx_t_9 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
      {

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":363
 *             glpk.set_mat_row(self._prob, row, k, cols, vals)
 *         finally:
 *             glpk.free(cols)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
        glp_free(__pyx_v_cols);

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":364
 *         finally:
 *             glpk.free(cols)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def clear_mat_row(self, row):  # variant of set_mat_row
 */
        glp_free(__pyx_v_vals);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":345
 *         glpk.set_obj_coef(self._prob, 0, coeff)
 * 
 *     def set_mat_row(self, row, coeffs):             # <<<<<<<<<<<<<<
 *         """Set (replace) row of the constraint matrix
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("ecyglpki.Problem.set_mat_row", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":366
 *             glpk.free(vals)
 * 
 *     def clear_mat_row(self, row):  # variant of set_mat_row             # <<<<<<<<<<<<<<
 *         """Clear row of the constraint matrix"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_35clear_mat_row(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_34clear_mat_row[] = "Problem.clear_mat_row(self, row)\nClear row of the constraint matrix";
static PyObject *__pyx_pw_8ecyglpki_7Problem_35clear_mat_row(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clear_mat_row (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_34clear_mat_row(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_34clear_mat_row(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clear_mat_row", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":368
 *     def clear_mat_row(self, row):  # variant of set_mat_row
 *         """Clear row of the constraint matrix"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         glpk.set_mat_row(self._prob, row, 0, NULL, NULL)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 368; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":369
 *         """Clear row of the constraint matrix"""
 *         row = self.find_row_as_needed(row)
 *         glpk.set_mat_row(self._prob, row, 0, NULL, NULL)             # <<<<<<<<<<<<<<
 * 
 *     def set_mat_col(self, col, coeffs):
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_set_mat_row(__pyx_v_self->_prob, __pyx_t_4, 0, NULL, NULL);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":366
 *             glpk.free(vals)
 * 
 *     def clear_mat_row(self, row):  # variant of set_mat_row             # <<<<<<<<<<<<<<
 *         """Clear row of the constraint matrix"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.clear_mat_row", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":371
 *         glpk.set_mat_row(self._prob, row, 0, NULL, NULL)
 * 
 *     def set_mat_col(self, col, coeffs):             # <<<<<<<<<<<<<<
 *         """Set (replace) column of the constraint matrix
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_37set_mat_col(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_36set_mat_col[] = "Problem.set_mat_col(self, col, coeffs)\nSet (replace) column of the constraint matrix\n\n        :param coeffs: |Mapping| from row names (str strings) to\n            coefficient values (|Real|).\n\n        ";
static PyObject *__pyx_pw_8ecyglpki_7Problem_37set_mat_col(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_col = 0;
  PyObject *__pyx_v_coeffs = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_mat_col (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_col,&__pyx_n_s_coeffs,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_col)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_coeffs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_mat_col", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_mat_col") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_col = values[0];
    __pyx_v_coeffs = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_mat_col", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 371; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_mat_col", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_36set_mat_col(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_col, __pyx_v_coeffs);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_36set_mat_col(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_coeffs) {
  int __pyx_v_k;
  int *__pyx_v_rows;
  double *__pyx_v_vals;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  double __pyx_t_11;
  int __pyx_t_12;
  char const *__pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_mat_col", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":378
 * 
 *         """
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         _coeffscheck(coeffs)
 *         cdef int k = len(coeffs)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":379
 *         """
 *         col = self.find_col_as_needed(col)
 *         _coeffscheck(coeffs)             # <<<<<<<<<<<<<<
 *         cdef int k = len(coeffs)
 *         cdef int* rows = <int*>glpk.alloc(1+k, sizeof(int))
 */
  __pyx_t_3 = __pyx_f_8ecyglpki__coeffscheck(__pyx_v_coeffs); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 379; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":380
 *         col = self.find_col_as_needed(col)
 *         _coeffscheck(coeffs)
 *         cdef int k = len(coeffs)             # <<<<<<<<<<<<<<
 *         cdef int* rows = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 */
  __pyx_t_4 = PyObject_Length(__pyx_v_coeffs); if (unlikely(__pyx_t_4 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_4;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":381
 *         _coeffscheck(coeffs)
 *         cdef int k = len(coeffs)
 *         cdef int* rows = <int*>glpk.alloc(1+k, sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 *         try:
 */
  __pyx_v_rows = ((int *)glp_alloc((1 + __pyx_v_k), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":382
 *         cdef int k = len(coeffs)
 *         cdef int* rows = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))             # <<<<<<<<<<<<<<
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):
 */
  __pyx_v_vals = ((double *)glp_alloc((1 + __pyx_v_k), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":383
 *         cdef int* rows = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 *         try:             # <<<<<<<<<<<<<<
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 rows[i] = self.find_row_as_needed(item[0])
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":384
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):             # <<<<<<<<<<<<<<
 *                 rows[i] = self.find_row_as_needed(item[0])
 *                 vals[i] = item[1]
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_coeffs, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_1) || PyTuple_CheckExact(__pyx_t_1)) {
      __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_1); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else {
        __pyx_t_1 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_1)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_1);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
        PyObject* sequence = __pyx_t_1;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
        index = 0; __pyx_t_3 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_3)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_3);
        index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_t_8 = NULL;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L9_unpacking_done;
        __pyx_L8_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_8 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_L9_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
      __pyx_t_3 = 0;
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":385
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 rows[i] = self.find_row_as_needed(item[0])             # <<<<<<<<<<<<<<
 *                 vals[i] = item[1]
 *             glpk.set_mat_col(self._prob, col, k, rows, vals)
 */
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 385; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      (__pyx_v_rows[__pyx_t_10]) = __pyx_t_9;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":386
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 rows[i] = self.find_row_as_needed(item[0])
 *                 vals[i] = item[1]             # <<<<<<<<<<<<<<
 *             glpk.set_mat_col(self._prob, col, k, rows, vals)
 *         finally:
 */
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_item, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      (__pyx_v_vals[__pyx_t_10]) = __pyx_t_11;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":387
 *                 rows[i] = self.find_row_as_needed(item[0])
 *                 vals[i] = item[1]
 *             glpk.set_mat_col(self._prob, col, k, rows, vals)             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(rows)
 */
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 387; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    glp_set_mat_col(__pyx_v_self->_prob, __pyx_t_9, __pyx_v_k, __pyx_v_rows, __pyx_v_vals);
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":389
 *             glpk.set_mat_col(self._prob, col, k, rows, vals)
 *         finally:
 *             glpk.free(rows)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
  /*finally:*/ {
    /*normal exit:*/{
      glp_free(__pyx_v_rows);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":390
 *         finally:
 *             glpk.free(rows)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def clear_mat_col(self, col):  # variant of set_mat_col
 */
      glp_free(__pyx_v_vals);
      goto __pyx_L5;
    }
    /*exception exit:*/{
      __pyx_L4_error:;
      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __pyx_t_9 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
      {

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":389
 *             glpk.set_mat_col(self._prob, col, k, rows, vals)
 *         finally:
 *             glpk.free(rows)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
        glp_free(__pyx_v_rows);

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":390
 *         finally:
 *             glpk.free(rows)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def clear_mat_col(self, col):  # variant of set_mat_col
 */
        glp_free(__pyx_v_vals);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __pyx_lineno = __pyx_t_9; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":371
 *         glpk.set_mat_row(self._prob, row, 0, NULL, NULL)
 * 
 *     def set_mat_col(self, col, coeffs):             # <<<<<<<<<<<<<<
 *         """Set (replace) column of the constraint matrix
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("ecyglpki.Problem.set_mat_col", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":392
 *             glpk.free(vals)
 * 
 *     def clear_mat_col(self, col):  # variant of set_mat_col             # <<<<<<<<<<<<<<
 *         """Clear column of the constraint matrix"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_39clear_mat_col(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_38clear_mat_col[] = "Problem.clear_mat_col(self, col)\nClear column of the constraint matrix";
static PyObject *__pyx_pw_8ecyglpki_7Problem_39clear_mat_col(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clear_mat_col (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_38clear_mat_col(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_38clear_mat_col(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("clear_mat_col", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":394
 *     def clear_mat_col(self, col):  # variant of set_mat_col
 *         """Clear column of the constraint matrix"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         glpk.set_mat_col(self._prob, col, 0, NULL, NULL)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":395
 *         """Clear column of the constraint matrix"""
 *         col = self.find_col_as_needed(col)
 *         glpk.set_mat_col(self._prob, col, 0, NULL, NULL)             # <<<<<<<<<<<<<<
 * 
 *     def load_matrix(self, coeffs):
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 395; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_set_mat_col(__pyx_v_self->_prob, __pyx_t_4, 0, NULL, NULL);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":392
 *             glpk.free(vals)
 * 
 *     def clear_mat_col(self, col):  # variant of set_mat_col             # <<<<<<<<<<<<<<
 *         """Clear column of the constraint matrix"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.clear_mat_col", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":397
 *         glpk.set_mat_col(self._prob, col, 0, NULL, NULL)
 * 
 *     def load_matrix(self, coeffs):             # <<<<<<<<<<<<<<
 *         """Load (replace) the whole constraint matrix
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_41load_matrix(PyObject *__pyx_v_self, PyObject *__pyx_v_coeffs); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_40load_matrix[] = "Problem.load_matrix(self, coeffs)\nLoad (replace) the whole constraint matrix\n\n        :param coeffs: |Mapping| from row and column name (str string)\n            pairs (length-2 `tuple`) to coefficient values (|Real|).\n\n        ";
static PyObject *__pyx_pw_8ecyglpki_7Problem_41load_matrix(PyObject *__pyx_v_self, PyObject *__pyx_v_coeffs) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("load_matrix (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_40load_matrix(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_coeffs));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_8ecyglpki_7Problem_11load_matrix_2generator(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":405
 *         """
 *         _coeffscheck(coeffs)
 *         if not all(isinstance(key, tuple) and (len(key) is 2)             # <<<<<<<<<<<<<<
 *                    for key in coeffs.keys()):
 *             raise TypeError("Coefficient keys must be pairs, " +
 */

static PyObject *__pyx_pf_8ecyglpki_7Problem_11load_matrix_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr *)__pyx_tp_new_8ecyglpki___pyx_scope_struct_1_genexpr(__pyx_ptype_8ecyglpki___pyx_scope_struct_1_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_8ecyglpki_7Problem_11load_matrix_2generator, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.load_matrix.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_8ecyglpki_7Problem_11load_matrix_2generator(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr *__pyx_cur_scope = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  Py_ssize_t __pyx_t_3;
  PyObject *(*__pyx_t_4)(PyObject *);
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":406
 *         _coeffscheck(coeffs)
 *         if not all(isinstance(key, tuple) and (len(key) is 2)
 *                    for key in coeffs.keys()):             # <<<<<<<<<<<<<<
 *             raise TypeError("Coefficient keys must be pairs, " +
 *                             "i.e., length-2 tuples.")
 */
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_coeffs)) { __Pyx_RaiseClosureNameError("coeffs"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_coeffs, __pyx_n_s_keys); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_3 = 0;
    __pyx_t_4 = NULL;
  } else {
    __pyx_t_3 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = Py_TYPE(__pyx_t_1)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (!__pyx_t_4 && PyList_CheckExact(__pyx_t_1)) {
      if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_1)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else if (!__pyx_t_4 && PyTuple_CheckExact(__pyx_t_1)) {
      if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_3); __Pyx_INCREF(__pyx_t_2); __pyx_t_3++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else {
      __pyx_t_2 = __pyx_t_4(__pyx_t_1);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 406; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_key);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_key, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":405
 *         """
 *         _coeffscheck(coeffs)
 *         if not all(isinstance(key, tuple) and (len(key) is 2)             # <<<<<<<<<<<<<<
 *                    for key in coeffs.keys()):
 *             raise TypeError("Coefficient keys must be pairs, " +
 */
    __pyx_t_5 = PyTuple_Check(__pyx_cur_scope->__pyx_v_key); 
    if (__pyx_t_5) {
      __pyx_t_6 = PyObject_Length(__pyx_cur_scope->__pyx_v_key); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_7 = (__pyx_t_6 == 2);
      __pyx_t_8 = __pyx_t_7;
    } else {
      __pyx_t_8 = __pyx_t_5;
    }
    __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_8); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_3;
    __pyx_cur_scope->__pyx_t_2 = __pyx_t_4;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_3 = __pyx_cur_scope->__pyx_t_1;
    __pyx_t_4 = __pyx_cur_scope->__pyx_t_2;
    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r);
  __pyx_generator->resume_label = -1;
  __Pyx_Generator_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return NULL;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":397
 *         glpk.set_mat_col(self._prob, col, 0, NULL, NULL)
 * 
 *     def load_matrix(self, coeffs):             # <<<<<<<<<<<<<<
 *         """Load (replace) the whole constraint matrix
 * 
 */

static PyObject *__pyx_pf_8ecyglpki_7Problem_40load_matrix(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_coeffs) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix *__pyx_cur_scope;
  int __pyx_v_k;
  int *__pyx_v_rows;
  int *__pyx_v_cols;
  double *__pyx_v_vals;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *(*__pyx_t_10)(PyObject *);
  int __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  double __pyx_t_13;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("load_matrix", 0);
  __pyx_cur_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix *)__pyx_tp_new_8ecyglpki___pyx_scope_struct__load_matrix(__pyx_ptype_8ecyglpki___pyx_scope_struct__load_matrix, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_coeffs = __pyx_v_coeffs;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_coeffs);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_coeffs);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":404
 * 
 *         """
 *         _coeffscheck(coeffs)             # <<<<<<<<<<<<<<
 *         if not all(isinstance(key, tuple) and (len(key) is 2)
 *                    for key in coeffs.keys()):
 */
  __pyx_t_1 = __pyx_cur_scope->__pyx_v_coeffs;
  __Pyx_INCREF(__pyx_t_1);
  __pyx_t_2 = __pyx_f_8ecyglpki__coeffscheck(__pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":405
 *         """
 *         _coeffscheck(coeffs)
 *         if not all(isinstance(key, tuple) and (len(key) is 2)             # <<<<<<<<<<<<<<
 *                    for key in coeffs.keys()):
 *             raise TypeError("Coefficient keys must be pairs, " +
 */
  __pyx_t_2 = __pyx_pf_8ecyglpki_7Problem_11load_matrix_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((!__pyx_t_3) != 0);
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":407
 *         if not all(isinstance(key, tuple) and (len(key) is 2)
 *                    for key in coeffs.keys()):
 *             raise TypeError("Coefficient keys must be pairs, " +             # <<<<<<<<<<<<<<
 *                             "i.e., length-2 tuples.")
 *         cdef int k = len(coeffs)
 */
    __pyx_t_2 = PyNumber_Add(__pyx_kp_s_Coefficient_keys_must_be_pairs, __pyx_kp_s_i_e_length_2_tuples); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 407; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":409
 *             raise TypeError("Coefficient keys must be pairs, " +
 *                             "i.e., length-2 tuples.")
 *         cdef int k = len(coeffs)             # <<<<<<<<<<<<<<
 *         cdef int* rows = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))
 */
  __pyx_t_2 = __pyx_cur_scope->__pyx_v_coeffs;
  __Pyx_INCREF(__pyx_t_2);
  __pyx_t_5 = PyObject_Length(__pyx_t_2); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_k = __pyx_t_5;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":410
 *                             "i.e., length-2 tuples.")
 *         cdef int k = len(coeffs)
 *         cdef int* rows = <int*>glpk.alloc(1+k, sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 */
  __pyx_v_rows = ((int *)glp_alloc((1 + __pyx_v_k), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":411
 *         cdef int k = len(coeffs)
 *         cdef int* rows = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 *         try:
 */
  __pyx_v_cols = ((int *)glp_alloc((1 + __pyx_v_k), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":412
 *         cdef int* rows = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))             # <<<<<<<<<<<<<<
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):
 */
  __pyx_v_vals = ((double *)glp_alloc((1 + __pyx_v_k), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":413
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 *         try:             # <<<<<<<<<<<<<<
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 rows[i] = self.find_row_as_needed(item[0][0])
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":414
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):             # <<<<<<<<<<<<<<
 *                 rows[i] = self.find_row_as_needed(item[0][0])
 *                 cols[i] = self.find_col_as_needed(item[0][1])
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_cur_scope->__pyx_v_coeffs, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (PyList_CheckExact(__pyx_t_6) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
      __pyx_t_7 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = Py_TYPE(__pyx_t_1)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_1)) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_1)) {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else {
        __pyx_t_6 = __pyx_t_7(__pyx_t_1);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
        PyObject* sequence = __pyx_t_6;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_8 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_8);
        #else
        __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_8);
        #endif
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_9 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
        index = 0; __pyx_t_2 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_2)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_2);
        index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_8);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_t_10 = NULL;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_10 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 414; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_L10_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
      __pyx_t_2 = 0;
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":415
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 rows[i] = self.find_row_as_needed(item[0][0])             # <<<<<<<<<<<<<<
 *                 cols[i] = self.find_col_as_needed(item[0][1])
 *                 vals[i] = item[1]
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L5_error;};
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_2 = __Pyx_GetItemInt(__pyx_t_8, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L5_error;};
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      (__pyx_v_rows[__pyx_t_12]) = __pyx_t_11;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":416
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 rows[i] = self.find_row_as_needed(item[0][0])
 *                 cols[i] = self.find_col_as_needed(item[0][1])             # <<<<<<<<<<<<<<
 *                 vals[i] = item[1]
 *             glpk.load_matrix(self._prob, k, rows, cols, vals)
 */
      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L5_error;};
      __Pyx_GOTREF(__pyx_t_8);
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_t_8, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L5_error;};
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_8);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_8, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 416; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      (__pyx_v_cols[__pyx_t_12]) = __pyx_t_11;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":417
 *                 rows[i] = self.find_row_as_needed(item[0][0])
 *                 cols[i] = self.find_col_as_needed(item[0][1])
 *                 vals[i] = item[1]             # <<<<<<<<<<<<<<
 *             glpk.load_matrix(self._prob, k, rows, cols, vals)
 *         finally:
 */
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_item, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L5_error;};
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      (__pyx_v_vals[__pyx_t_12]) = __pyx_t_13;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":418
 *                 cols[i] = self.find_col_as_needed(item[0][1])
 *                 vals[i] = item[1]
 *             glpk.load_matrix(self._prob, k, rows, cols, vals)             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(rows)
 */
    glp_load_matrix(__pyx_v_self->_prob, __pyx_v_k, __pyx_v_rows, __pyx_v_cols, __pyx_v_vals);
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":420
 *             glpk.load_matrix(self._prob, k, rows, cols, vals)
 *         finally:
 *             glpk.free(rows)             # <<<<<<<<<<<<<<
 *             glpk.free(cols)
 *             glpk.free(vals)
 */
  /*finally:*/ {
    /*normal exit:*/{
      glp_free(__pyx_v_rows);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":421
 *         finally:
 *             glpk.free(rows)
 *             glpk.free(cols)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
      glp_free(__pyx_v_cols);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":422
 *             glpk.free(rows)
 *             glpk.free(cols)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def sort_matrix(self):
 */
      glp_free(__pyx_v_vals);
      goto __pyx_L6;
    }
    /*exception exit:*/{
      __pyx_L5_error:;
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_20);
      __Pyx_XGOTREF(__pyx_t_21);
      __pyx_t_11 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
      {

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":420
 *             glpk.load_matrix(self._prob, k, rows, cols, vals)
 *         finally:
 *             glpk.free(rows)             # <<<<<<<<<<<<<<
 *             glpk.free(cols)
 *             glpk.free(vals)
 */
        glp_free(__pyx_v_rows);

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":421
 *         finally:
 *             glpk.free(rows)
 *             glpk.free(cols)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
        glp_free(__pyx_v_cols);

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":422
 *             glpk.free(rows)
 *             glpk.free(cols)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def sort_matrix(self):
 */
        glp_free(__pyx_v_vals);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_XGIVEREF(__pyx_t_20);
        __Pyx_XGIVEREF(__pyx_t_21);
        __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      }
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
      goto __pyx_L1_error;
    }
    __pyx_L6:;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":397
 *         glpk.set_mat_col(self._prob, col, 0, NULL, NULL)
 * 
 *     def load_matrix(self, coeffs):             # <<<<<<<<<<<<<<
 *         """Load (replace) the whole constraint matrix
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("ecyglpki.Problem.load_matrix", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":424
 *             glpk.free(vals)
 * 
 *     def sort_matrix(self):             # <<<<<<<<<<<<<<
 *         """Sort elements of the constraint matrix"""
 *         glpk.sort_matrix(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_43sort_matrix(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_42sort_matrix[] = "Problem.sort_matrix(self)\nSort elements of the constraint matrix";
static PyObject *__pyx_pw_8ecyglpki_7Problem_43sort_matrix(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sort_matrix (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_42sort_matrix(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_42sort_matrix(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("sort_matrix", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":426
 *     def sort_matrix(self):
 *         """Sort elements of the constraint matrix"""
 *         glpk.sort_matrix(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def clear_matrix(self):  # variant of load_matrix
 */
  glp_sort_matrix(__pyx_v_self->_prob);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":424
 *             glpk.free(vals)
 * 
 *     def sort_matrix(self):             # <<<<<<<<<<<<<<
 *         """Sort elements of the constraint matrix"""
 *         glpk.sort_matrix(self._prob)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":428
 *         glpk.sort_matrix(self._prob)
 * 
 *     def clear_matrix(self):  # variant of load_matrix             # <<<<<<<<<<<<<<
 *         """Clear the whole constraint matrix"""
 *         glpk.load_matrix(self._prob, 0, NULL, NULL, NULL)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_45clear_matrix(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_44clear_matrix[] = "Problem.clear_matrix(self)\nClear the whole constraint matrix";
static PyObject *__pyx_pw_8ecyglpki_7Problem_45clear_matrix(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clear_matrix (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_44clear_matrix(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_44clear_matrix(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("clear_matrix", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":430
 *     def clear_matrix(self):  # variant of load_matrix
 *         """Clear the whole constraint matrix"""
 *         glpk.load_matrix(self._prob, 0, NULL, NULL, NULL)             # <<<<<<<<<<<<<<
 * 
 *     def del_rows(self, *rows):
 */
  glp_load_matrix(__pyx_v_self->_prob, 0, NULL, NULL, NULL);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":428
 *         glpk.sort_matrix(self._prob)
 * 
 *     def clear_matrix(self):  # variant of load_matrix             # <<<<<<<<<<<<<<
 *         """Clear the whole constraint matrix"""
 *         glpk.load_matrix(self._prob, 0, NULL, NULL, NULL)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":432
 *         glpk.load_matrix(self._prob, 0, NULL, NULL, NULL)
 * 
 *     def del_rows(self, *rows):             # <<<<<<<<<<<<<<
 *         """Delete specified rows from problem object
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_47del_rows(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_46del_rows[] = "Problem.del_rows(self, *rows)\nDelete specified rows from problem object\n\n        :param names: the names (str strings) of the rows to delete\n\n        ";
static PyObject *__pyx_pw_8ecyglpki_7Problem_47del_rows(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_rows = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("del_rows (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "del_rows", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_rows = __pyx_args;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_46del_rows(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_rows);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_rows);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_46del_rows(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_rows) {
  int __pyx_v_k;
  int *__pyx_v_rowinds;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_row = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *(*__pyx_t_9)(PyObject *);
  int __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  int __pyx_t_12;
  char const *__pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("del_rows", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":438
 * 
 *         """
 *         cdef int k = len(rows)             # <<<<<<<<<<<<<<
 *         if k is 0:
 *             return
 */
  __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_rows); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 438; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":439
 *         """
 *         cdef int k = len(rows)
 *         if k is 0:             # <<<<<<<<<<<<<<
 *             return
 *         cdef int* rowinds = <int*>glpk.alloc(1+k, sizeof(int))
 */
  __pyx_t_2 = ((__pyx_v_k == 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":440
 *         cdef int k = len(rows)
 *         if k is 0:
 *             return             # <<<<<<<<<<<<<<
 *         cdef int* rowinds = <int*>glpk.alloc(1+k, sizeof(int))
 *         try:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":441
 *         if k is 0:
 *             return
 *         cdef int* rowinds = <int*>glpk.alloc(1+k, sizeof(int))             # <<<<<<<<<<<<<<
 *         try:
 *             for i, row in enumerate(rows, start=1):
 */
  __pyx_v_rowinds = ((int *)glp_alloc((1 + __pyx_v_k), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":442
 *             return
 *         cdef int* rowinds = <int*>glpk.alloc(1+k, sizeof(int))
 *         try:             # <<<<<<<<<<<<<<
 *             for i, row in enumerate(rows, start=1):
 *                 rowinds[i] = self.find_row_as_needed(row)
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":443
 *         cdef int* rowinds = <int*>glpk.alloc(1+k, sizeof(int))
 *         try:
 *             for i, row in enumerate(rows, start=1):             # <<<<<<<<<<<<<<
 *                 rowinds[i] = self.find_row_as_needed(row)
 *             glpk.del_rows(self._prob, k, rowinds)
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_rows);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_rows);
    __Pyx_GIVEREF(__pyx_v_rows);
    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyList_CheckExact(__pyx_t_5) || PyTuple_CheckExact(__pyx_t_5)) {
      __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    for (;;) {
      if (!__pyx_t_6 && PyList_CheckExact(__pyx_t_4)) {
        if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else if (!__pyx_t_6 && PyTuple_CheckExact(__pyx_t_4)) {
        if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else {
        __pyx_t_5 = __pyx_t_6(__pyx_t_4);
        if (unlikely(!__pyx_t_5)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_5);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
        PyObject* sequence = __pyx_t_5;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_3 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_3)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_3);
        index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 443; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_L10_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
      __pyx_t_3 = 0;
      __Pyx_XDECREF_SET(__pyx_v_row, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":444
 *         try:
 *             for i, row in enumerate(rows, start=1):
 *                 rowinds[i] = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *             glpk.del_rows(self._prob, k, rowinds)
 *         finally:
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_v_row);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_row);
      __Pyx_GIVEREF(__pyx_v_row);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      (__pyx_v_rowinds[__pyx_t_11]) = __pyx_t_10;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":445
 *             for i, row in enumerate(rows, start=1):
 *                 rowinds[i] = self.find_row_as_needed(row)
 *             glpk.del_rows(self._prob, k, rowinds)             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(rowinds)
 */
    glp_del_rows(__pyx_v_self->_prob, __pyx_v_k, __pyx_v_rowinds);
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":447
 *             glpk.del_rows(self._prob, k, rowinds)
 *         finally:
 *             glpk.free(rowinds)             # <<<<<<<<<<<<<<
 * 
 *     def del_cols(self, *cols):
 */
  /*finally:*/ {
    /*normal exit:*/{
      glp_free(__pyx_v_rowinds);
      goto __pyx_L6;
    }
    /*exception exit:*/{
      __pyx_L5_error:;
      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __pyx_t_10 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
      {
        glp_free(__pyx_v_rowinds);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
      goto __pyx_L1_error;
    }
    __pyx_L6:;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":432
 *         glpk.load_matrix(self._prob, 0, NULL, NULL, NULL)
 * 
 *     def del_rows(self, *rows):             # <<<<<<<<<<<<<<
 *         """Delete specified rows from problem object
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("ecyglpki.Problem.del_rows", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":449
 *             glpk.free(rowinds)
 * 
 *     def del_cols(self, *cols):             # <<<<<<<<<<<<<<
 *         """Delete specified columns from problem object
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_49del_cols(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_48del_cols[] = "Problem.del_cols(self, *cols)\nDelete specified columns from problem object\n\n        :param names: the names (str strings) of the columns to delete\n\n        ";
static PyObject *__pyx_pw_8ecyglpki_7Problem_49del_cols(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_cols = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("del_cols (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "del_cols", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_cols = __pyx_args;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_48del_cols(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_cols);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_cols);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_48del_cols(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_cols) {
  int __pyx_v_k;
  int *__pyx_v_colinds;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_col = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *(*__pyx_t_9)(PyObject *);
  int __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  int __pyx_t_12;
  char const *__pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("del_cols", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":455
 * 
 *         """
 *         cdef int k = len(cols)             # <<<<<<<<<<<<<<
 *         if k is 0:
 *             return
 */
  __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_cols); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 455; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":456
 *         """
 *         cdef int k = len(cols)
 *         if k is 0:             # <<<<<<<<<<<<<<
 *             return
 *         cdef int* colinds = <int*>glpk.alloc(1+k, sizeof(int))
 */
  __pyx_t_2 = ((__pyx_v_k == 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":457
 *         cdef int k = len(cols)
 *         if k is 0:
 *             return             # <<<<<<<<<<<<<<
 *         cdef int* colinds = <int*>glpk.alloc(1+k, sizeof(int))
 *         try:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":458
 *         if k is 0:
 *             return
 *         cdef int* colinds = <int*>glpk.alloc(1+k, sizeof(int))             # <<<<<<<<<<<<<<
 *         try:
 *             for i, col in enumerate(cols, start=1):
 */
  __pyx_v_colinds = ((int *)glp_alloc((1 + __pyx_v_k), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":459
 *             return
 *         cdef int* colinds = <int*>glpk.alloc(1+k, sizeof(int))
 *         try:             # <<<<<<<<<<<<<<
 *             for i, col in enumerate(cols, start=1):
 *                 colinds[i] = self.find_col_as_needed(col)
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":460
 *         cdef int* colinds = <int*>glpk.alloc(1+k, sizeof(int))
 *         try:
 *             for i, col in enumerate(cols, start=1):             # <<<<<<<<<<<<<<
 *                 colinds[i] = self.find_col_as_needed(col)
 *             glpk.del_cols(self._prob, k, colinds)
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_cols);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_cols);
    __Pyx_GIVEREF(__pyx_v_cols);
    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyList_CheckExact(__pyx_t_5) || PyTuple_CheckExact(__pyx_t_5)) {
      __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    for (;;) {
      if (!__pyx_t_6 && PyList_CheckExact(__pyx_t_4)) {
        if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else if (!__pyx_t_6 && PyTuple_CheckExact(__pyx_t_4)) {
        if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else {
        __pyx_t_5 = __pyx_t_6(__pyx_t_4);
        if (unlikely(!__pyx_t_5)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_5);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
        PyObject* sequence = __pyx_t_5;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_3 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_3)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_3);
        index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 460; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_L10_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
      __pyx_t_3 = 0;
      __Pyx_XDECREF_SET(__pyx_v_col, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":461
 *         try:
 *             for i, col in enumerate(cols, start=1):
 *                 colinds[i] = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *             glpk.del_cols(self._prob, k, colinds)
 *         finally:
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_v_col);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_col);
      __Pyx_GIVEREF(__pyx_v_col);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      (__pyx_v_colinds[__pyx_t_11]) = __pyx_t_10;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":462
 *             for i, col in enumerate(cols, start=1):
 *                 colinds[i] = self.find_col_as_needed(col)
 *             glpk.del_cols(self._prob, k, colinds)             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(colinds)
 */
    glp_del_cols(__pyx_v_self->_prob, __pyx_v_k, __pyx_v_colinds);
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":464
 *             glpk.del_cols(self._prob, k, colinds)
 *         finally:
 *             glpk.free(colinds)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  /*finally:*/ {
    /*normal exit:*/{
      glp_free(__pyx_v_colinds);
      goto __pyx_L6;
    }
    /*exception exit:*/{
      __pyx_L5_error:;
      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __pyx_t_10 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
      {
        glp_free(__pyx_v_colinds);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
      goto __pyx_L1_error;
    }
    __pyx_L6:;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":449
 *             glpk.free(rowinds)
 * 
 *     def del_cols(self, *cols):             # <<<<<<<<<<<<<<
 *         """Delete specified columns from problem object
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("ecyglpki.Problem.del_cols", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":467
 * 
 *     @classmethod
 *     def copy_prob(cls, Problem source, bint copy_names):             # <<<<<<<<<<<<<<
 *         """Copy problem object content"""
 *         problem = cls()
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_51copy_prob(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_50copy_prob[] = "Problem.copy_prob(type cls, Problem source, bool copy_names)\nCopy problem object content";
static PyObject *__pyx_pw_8ecyglpki_7Problem_51copy_prob(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  struct __pyx_obj_8ecyglpki_Problem *__pyx_v_source = 0;
  int __pyx_v_copy_names;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("copy_prob (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,&__pyx_n_s_copy_names,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_source)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_copy_names)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("copy_prob", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "copy_prob") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_source = ((struct __pyx_obj_8ecyglpki_Problem *)values[0]);
    __pyx_v_copy_names = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_copy_names == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("copy_prob", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.copy_prob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_source), __pyx_ptype_8ecyglpki_Problem, 1, "source", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_50copy_prob(((PyObject*)__pyx_v_cls), __pyx_v_source, __pyx_v_copy_names);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_50copy_prob(PyObject *__pyx_v_cls, struct __pyx_obj_8ecyglpki_Problem *__pyx_v_source, int __pyx_v_copy_names) {
  PyObject *__pyx_v_problem = NULL;
  struct glp_prob *__pyx_v__prob;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  void *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("copy_prob", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":469
 *     def copy_prob(cls, Problem source, bint copy_names):
 *         """Copy problem object content"""
 *         problem = cls()             # <<<<<<<<<<<<<<
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_problem = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":471
 *         problem = cls()
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         glpk.copy_prob(_prob, source._prob, copy_names)
 *         return problem
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_prob_ptr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 471; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":470
 *         """Copy problem object content"""
 *         problem = cls()
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     problem._prob_ptr(), NULL)
 *         glpk.copy_prob(_prob, source._prob, copy_names)
 */
  __pyx_t_3 = PyCapsule_GetPointer(__pyx_t_2, NULL); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v__prob = ((struct glp_prob *)__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":472
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 *         glpk.copy_prob(_prob, source._prob, copy_names)             # <<<<<<<<<<<<<<
 *         return problem
 * 
 */
  glp_copy_prob(__pyx_v__prob, __pyx_v_source->_prob, __pyx_v_copy_names);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":473
 *                                                     problem._prob_ptr(), NULL)
 *         glpk.copy_prob(_prob, source._prob, copy_names)
 *         return problem             # <<<<<<<<<<<<<<
 * 
 *     def erase_prob(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_problem);
  __pyx_r = __pyx_v_problem;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":467
 * 
 *     @classmethod
 *     def copy_prob(cls, Problem source, bint copy_names):             # <<<<<<<<<<<<<<
 *         """Copy problem object content"""
 *         problem = cls()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.copy_prob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_problem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":475
 *         return problem
 * 
 *     def erase_prob(self):             # <<<<<<<<<<<<<<
 *         """Erase problem object content"""
 *         glpk.erase_prob(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_53erase_prob(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_52erase_prob[] = "Problem.erase_prob(self)\nErase problem object content";
static PyObject *__pyx_pw_8ecyglpki_7Problem_53erase_prob(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("erase_prob (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_52erase_prob(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_52erase_prob(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("erase_prob", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":477
 *     def erase_prob(self):
 *         """Erase problem object content"""
 *         glpk.erase_prob(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def get_prob_name(self):
 */
  glp_erase_prob(__pyx_v_self->_prob);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":475
 *         return problem
 * 
 *     def erase_prob(self):             # <<<<<<<<<<<<<<
 *         """Erase problem object content"""
 *         glpk.erase_prob(self._prob)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":479
 *         glpk.erase_prob(self._prob)
 * 
 *     def get_prob_name(self):             # <<<<<<<<<<<<<<
 *         """Retrieve problem name"""
 *         return chars2name(glpk.get_prob_name(self._prob))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_55get_prob_name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_54get_prob_name[] = "Problem.get_prob_name(self)\nRetrieve problem name";
static PyObject *__pyx_pw_8ecyglpki_7Problem_55get_prob_name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_prob_name (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_54get_prob_name(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_54get_prob_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_prob_name", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":481
 *     def get_prob_name(self):
 *         """Retrieve problem name"""
 *         return chars2name(glpk.get_prob_name(self._prob))             # <<<<<<<<<<<<<<
 * 
 *     def get_obj_name(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_8ecyglpki_chars2name(glp_get_prob_name(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":479
 *         glpk.erase_prob(self._prob)
 * 
 *     def get_prob_name(self):             # <<<<<<<<<<<<<<
 *         """Retrieve problem name"""
 *         return chars2name(glpk.get_prob_name(self._prob))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.get_prob_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":483
 *         return chars2name(glpk.get_prob_name(self._prob))
 * 
 *     def get_obj_name(self):             # <<<<<<<<<<<<<<
 *         """Retrieve objective function name"""
 *         return chars2name(glpk.get_obj_name(self._prob))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_57get_obj_name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_56get_obj_name[] = "Problem.get_obj_name(self)\nRetrieve objective function name";
static PyObject *__pyx_pw_8ecyglpki_7Problem_57get_obj_name(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_obj_name (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_56get_obj_name(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_56get_obj_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_obj_name", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":485
 *     def get_obj_name(self):
 *         """Retrieve objective function name"""
 *         return chars2name(glpk.get_obj_name(self._prob))             # <<<<<<<<<<<<<<
 * 
 *     def get_obj_dir(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_8ecyglpki_chars2name(glp_get_obj_name(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 485; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":483
 *         return chars2name(glpk.get_prob_name(self._prob))
 * 
 *     def get_obj_name(self):             # <<<<<<<<<<<<<<
 *         """Retrieve objective function name"""
 *         return chars2name(glpk.get_obj_name(self._prob))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.get_obj_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":487
 *         return chars2name(glpk.get_obj_name(self._prob))
 * 
 *     def get_obj_dir(self):             # <<<<<<<<<<<<<<
 *         """Retrieve optimization direction flag"""
 *         return optdir2str[glpk.get_obj_dir(self._prob)]
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_59get_obj_dir(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_58get_obj_dir[] = "Problem.get_obj_dir(self)\nRetrieve optimization direction flag";
static PyObject *__pyx_pw_8ecyglpki_7Problem_59get_obj_dir(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_obj_dir (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_58get_obj_dir(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_58get_obj_dir(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_obj_dir", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":489
 *     def get_obj_dir(self):
 *         """Retrieve optimization direction flag"""
 *         return optdir2str[glpk.get_obj_dir(self._prob)]             # <<<<<<<<<<<<<<
 * 
 *     def get_num_rows(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = glp_get_obj_dir(__pyx_v_self->_prob);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_optdir2str, __pyx_t_1, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":487
 *         return chars2name(glpk.get_obj_name(self._prob))
 * 
 *     def get_obj_dir(self):             # <<<<<<<<<<<<<<
 *         """Retrieve optimization direction flag"""
 *         return optdir2str[glpk.get_obj_dir(self._prob)]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.get_obj_dir", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":491
 *         return optdir2str[glpk.get_obj_dir(self._prob)]
 * 
 *     def get_num_rows(self):             # <<<<<<<<<<<<<<
 *         """Retrieve number of rows"""
 *         return glpk.get_num_rows(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_61get_num_rows(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_60get_num_rows[] = "Problem.get_num_rows(self)\nRetrieve number of rows";
static PyObject *__pyx_pw_8ecyglpki_7Problem_61get_num_rows(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_num_rows (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_60get_num_rows(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_60get_num_rows(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_num_rows", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":493
 *     def get_num_rows(self):
 *         """Retrieve number of rows"""
 *         return glpk.get_num_rows(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def get_num_cols(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_get_num_rows(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":491
 *         return optdir2str[glpk.get_obj_dir(self._prob)]
 * 
 *     def get_num_rows(self):             # <<<<<<<<<<<<<<
 *         """Retrieve number of rows"""
 *         return glpk.get_num_rows(self._prob)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.get_num_rows", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":495
 *         return glpk.get_num_rows(self._prob)
 * 
 *     def get_num_cols(self):             # <<<<<<<<<<<<<<
 *         """Retrieve number of columns"""
 *         return glpk.get_num_cols(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_63get_num_cols(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_62get_num_cols[] = "Problem.get_num_cols(self)\nRetrieve number of columns";
static PyObject *__pyx_pw_8ecyglpki_7Problem_63get_num_cols(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_num_cols (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_62get_num_cols(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_62get_num_cols(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_num_cols", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":497
 *     def get_num_cols(self):
 *         """Retrieve number of columns"""
 *         return glpk.get_num_cols(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def get_row_name(self, int row):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_get_num_cols(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":495
 *         return glpk.get_num_rows(self._prob)
 * 
 *     def get_num_cols(self):             # <<<<<<<<<<<<<<
 *         """Retrieve number of columns"""
 *         return glpk.get_num_cols(self._prob)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.get_num_cols", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":499
 *         return glpk.get_num_cols(self._prob)
 * 
 *     def get_row_name(self, int row):             # <<<<<<<<<<<<<<
 *         """Retrieve row name"""
 *         return chars2name(glpk.get_row_name(self._prob, row))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_65get_row_name(PyObject *__pyx_v_self, PyObject *__pyx_arg_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_64get_row_name[] = "Problem.get_row_name(self, int row)\nRetrieve row name";
static PyObject *__pyx_pw_8ecyglpki_7Problem_65get_row_name(PyObject *__pyx_v_self, PyObject *__pyx_arg_row) {
  int __pyx_v_row;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_row_name (wrapper)", 0);
  assert(__pyx_arg_row); {
    __pyx_v_row = __Pyx_PyInt_As_int(__pyx_arg_row); if (unlikely((__pyx_v_row == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_64get_row_name(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((int)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_64get_row_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_row) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_row_name", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":501
 *     def get_row_name(self, int row):
 *         """Retrieve row name"""
 *         return chars2name(glpk.get_row_name(self._prob, row))             # <<<<<<<<<<<<<<
 * 
 *     def get_row_name_if(self, int row, names_preferred=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_8ecyglpki_chars2name(glp_get_row_name(__pyx_v_self->_prob, __pyx_v_row)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":499
 *         return glpk.get_num_cols(self._prob)
 * 
 *     def get_row_name(self, int row):             # <<<<<<<<<<<<<<
 *         """Retrieve row name"""
 *         return chars2name(glpk.get_row_name(self._prob, row))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":503
 *         return chars2name(glpk.get_row_name(self._prob, row))
 * 
 *     def get_row_name_if(self, int row, names_preferred=False):             # <<<<<<<<<<<<<<
 *         if names_preferred:
 *             name = self.get_row_name(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_67get_row_name_if(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_66get_row_name_if[] = "Problem.get_row_name_if(self, int row, names_preferred=False)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_67get_row_name_if(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_row;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_row_name_if (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_row,&__pyx_n_s_names_preferred,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_row)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_row_name_if") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_row = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_row == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_names_preferred = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_row_name_if", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 503; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_name_if", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_66get_row_name_if(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_row, __pyx_v_names_preferred);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_66get_row_name_if(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_row, PyObject *__pyx_v_names_preferred) {
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_row_name_if", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":504
 * 
 *     def get_row_name_if(self, int row, names_preferred=False):
 *         if names_preferred:             # <<<<<<<<<<<<<<
 *             name = self.get_row_name(row)
 *             return row if name is '' else name
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_names_preferred); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":505
 *     def get_row_name_if(self, int row, names_preferred=False):
 *         if names_preferred:
 *             name = self.get_row_name(row)             # <<<<<<<<<<<<<<
 *             return row if name is '' else name
 *         else:
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_row); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 505; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_name = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":506
 *         if names_preferred:
 *             name = self.get_row_name(row)
 *             return row if name is '' else name             # <<<<<<<<<<<<<<
 *         else:
 *             return row
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = (__pyx_v_name == __pyx_kp_s__2);
    if ((__pyx_t_1 != 0)) {
      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_row); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __Pyx_INCREF(__pyx_v_name);
      __pyx_t_3 = __pyx_v_name;
    }
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":508
 *             return row if name is '' else name
 *         else:
 *             return row             # <<<<<<<<<<<<<<
 * 
 *     def get_col_name(self, int col):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_row); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":503
 *         return chars2name(glpk.get_row_name(self._prob, row))
 * 
 *     def get_row_name_if(self, int row, names_preferred=False):             # <<<<<<<<<<<<<<
 *         if names_preferred:
 *             name = self.get_row_name(row)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_name_if", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":510
 *             return row
 * 
 *     def get_col_name(self, int col):             # <<<<<<<<<<<<<<
 *         """Retrieve column name"""
 *         return chars2name(glpk.get_col_name(self._prob, col))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_69get_col_name(PyObject *__pyx_v_self, PyObject *__pyx_arg_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_68get_col_name[] = "Problem.get_col_name(self, int col)\nRetrieve column name";
static PyObject *__pyx_pw_8ecyglpki_7Problem_69get_col_name(PyObject *__pyx_v_self, PyObject *__pyx_arg_col) {
  int __pyx_v_col;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_col_name (wrapper)", 0);
  assert(__pyx_arg_col); {
    __pyx_v_col = __Pyx_PyInt_As_int(__pyx_arg_col); if (unlikely((__pyx_v_col == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 510; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.get_col_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_68get_col_name(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((int)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_68get_col_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_col_name", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":512
 *     def get_col_name(self, int col):
 *         """Retrieve column name"""
 *         return chars2name(glpk.get_col_name(self._prob, col))             # <<<<<<<<<<<<<<
 * 
 *     def get_col_name_if(self, int col, names_preferred=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_8ecyglpki_chars2name(glp_get_col_name(__pyx_v_self->_prob, __pyx_v_col)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 512; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":510
 *             return row
 * 
 *     def get_col_name(self, int col):             # <<<<<<<<<<<<<<
 *         """Retrieve column name"""
 *         return chars2name(glpk.get_col_name(self._prob, col))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.get_col_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":514
 *         return chars2name(glpk.get_col_name(self._prob, col))
 * 
 *     def get_col_name_if(self, int col, names_preferred=False):             # <<<<<<<<<<<<<<
 *         if names_preferred:
 *             name = self.get_col_name(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_71get_col_name_if(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_70get_col_name_if[] = "Problem.get_col_name_if(self, int col, names_preferred=False)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_71get_col_name_if(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_col;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_col_name_if (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_col,&__pyx_n_s_names_preferred,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_col)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_col_name_if") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_col = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_col == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_names_preferred = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_col_name_if", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.get_col_name_if", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_70get_col_name_if(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_col, __pyx_v_names_preferred);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_70get_col_name_if(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_col, PyObject *__pyx_v_names_preferred) {
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_col_name_if", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":515
 * 
 *     def get_col_name_if(self, int col, names_preferred=False):
 *         if names_preferred:             # <<<<<<<<<<<<<<
 *             name = self.get_col_name(col)
 *             return col if name is '' else name
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_names_preferred); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":516
 *     def get_col_name_if(self, int col, names_preferred=False):
 *         if names_preferred:
 *             name = self.get_col_name(col)             # <<<<<<<<<<<<<<
 *             return col if name is '' else name
 *         else:
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_col_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_col); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_v_name = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":517
 *         if names_preferred:
 *             name = self.get_col_name(col)
 *             return col if name is '' else name             # <<<<<<<<<<<<<<
 *         else:
 *             return col
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = (__pyx_v_name == __pyx_kp_s__2);
    if ((__pyx_t_1 != 0)) {
      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_col); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 517; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = __pyx_t_4;
      __pyx_t_4 = 0;
    } else {
      __Pyx_INCREF(__pyx_v_name);
      __pyx_t_3 = __pyx_v_name;
    }
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":519
 *             return col if name is '' else name
 *         else:
 *             return col             # <<<<<<<<<<<<<<
 * 
 *     def get_row_or_col_name(self, int ind):  # _get_row/col_name variant
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_col); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":514
 *         return chars2name(glpk.get_col_name(self._prob, col))
 * 
 *     def get_col_name_if(self, int col, names_preferred=False):             # <<<<<<<<<<<<<<
 *         if names_preferred:
 *             name = self.get_col_name(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Problem.get_col_name_if", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":521
 *             return col
 * 
 *     def get_row_or_col_name(self, int ind):  # _get_row/col_name variant             # <<<<<<<<<<<<<<
 *         """Retrieve row or column name"""
 *         cdef int m = self.get_num_rows()
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_73get_row_or_col_name(PyObject *__pyx_v_self, PyObject *__pyx_arg_ind); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_72get_row_or_col_name[] = "Problem.get_row_or_col_name(self, int ind)\nRetrieve row or column name";
static PyObject *__pyx_pw_8ecyglpki_7Problem_73get_row_or_col_name(PyObject *__pyx_v_self, PyObject *__pyx_arg_ind) {
  int __pyx_v_ind;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_row_or_col_name (wrapper)", 0);
  assert(__pyx_arg_ind); {
    __pyx_v_ind = __Pyx_PyInt_As_int(__pyx_arg_ind); if (unlikely((__pyx_v_ind == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 521; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_or_col_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_72get_row_or_col_name(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((int)__pyx_v_ind));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_72get_row_or_col_name(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_ind) {
  int __pyx_v_m;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_row_or_col_name", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":523
 *     def get_row_or_col_name(self, int ind):  # _get_row/col_name variant
 *         """Retrieve row or column name"""
 *         cdef int m = self.get_num_rows()             # <<<<<<<<<<<<<<
 *         if ind > m:  # column
 *             return 'col', self.get_col_name(ind - m)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_num_rows); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 523; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_m = __pyx_t_3;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":524
 *         """Retrieve row or column name"""
 *         cdef int m = self.get_num_rows()
 *         if ind > m:  # column             # <<<<<<<<<<<<<<
 *             return 'col', self.get_col_name(ind - m)
 *         else:  # row
 */
  __pyx_t_4 = ((__pyx_v_ind > __pyx_v_m) != 0);
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":525
 *         cdef int m = self.get_num_rows()
 *         if ind > m:  # column
 *             return 'col', self.get_col_name(ind - m)             # <<<<<<<<<<<<<<
 *         else:  # row
 *             return 'row', self.get_row_name(ind)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_col_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_ind - __pyx_v_m)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 525; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_INCREF(__pyx_n_s_col);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_n_s_col);
    __Pyx_GIVEREF(__pyx_n_s_col);
    PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":527
 *             return 'col', self.get_col_name(ind - m)
 *         else:  # row
 *             return 'row', self.get_row_name(ind)             # <<<<<<<<<<<<<<
 * 
 *     def get_row_or_col_name_if(self, int ind, names_preferred=False):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_name); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_ind); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 527; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_n_s_row);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_row);
    __Pyx_GIVEREF(__pyx_n_s_row);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":521
 *             return col
 * 
 *     def get_row_or_col_name(self, int ind):  # _get_row/col_name variant             # <<<<<<<<<<<<<<
 *         """Retrieve row or column name"""
 *         cdef int m = self.get_num_rows()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_or_col_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":529
 *             return 'row', self.get_row_name(ind)
 * 
 *     def get_row_or_col_name_if(self, int ind, names_preferred=False):             # <<<<<<<<<<<<<<
 *         if names_preferred:
 *             row_or_col, name = self.get_row_or_col_name(ind)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_75get_row_or_col_name_if(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_74get_row_or_col_name_if[] = "Problem.get_row_or_col_name_if(self, int ind, names_preferred=False)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_75get_row_or_col_name_if(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_ind;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_row_or_col_name_if (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ind,&__pyx_n_s_names_preferred,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ind)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_row_or_col_name_if") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ind = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_ind == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_names_preferred = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_row_or_col_name_if", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_or_col_name_if", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_74get_row_or_col_name_if(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_ind, __pyx_v_names_preferred);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_74get_row_or_col_name_if(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_ind, PyObject *__pyx_v_names_preferred) {
  PyObject *__pyx_v_row_or_col = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_v_m = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *(*__pyx_t_6)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_row_or_col_name_if", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":530
 * 
 *     def get_row_or_col_name_if(self, int ind, names_preferred=False):
 *         if names_preferred:             # <<<<<<<<<<<<<<
 *             row_or_col, name = self.get_row_or_col_name(ind)
 *             return row_or_col, ind if name is '' else row_or_col, name
 */
  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_names_preferred); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 530; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":531
 *     def get_row_or_col_name_if(self, int ind, names_preferred=False):
 *         if names_preferred:
 *             row_or_col, name = self.get_row_or_col_name(ind)             # <<<<<<<<<<<<<<
 *             return row_or_col, ind if name is '' else row_or_col, name
 *         else:
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_ind); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
      PyObject* sequence = __pyx_t_3;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_2 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_2 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_2);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      #endif
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = Py_TYPE(__pyx_t_5)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_4)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_2 = __pyx_t_6(__pyx_t_5); if (unlikely(!__pyx_t_2)) goto __pyx_L4_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_2);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_6(__pyx_t_5), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_6 = NULL;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      goto __pyx_L5_unpacking_done;
      __pyx_L4_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __pyx_t_6 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_L5_unpacking_done:;
    }
    __pyx_v_row_or_col = __pyx_t_4;
    __pyx_t_4 = 0;
    __pyx_v_name = __pyx_t_2;
    __pyx_t_2 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":532
 *         if names_preferred:
 *             row_or_col, name = self.get_row_or_col_name(ind)
 *             return row_or_col, ind if name is '' else row_or_col, name             # <<<<<<<<<<<<<<
 *         else:
 *             m = self.get_num_rows()
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = (__pyx_v_name == __pyx_kp_s__2);
    if ((__pyx_t_1 != 0)) {
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_ind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = __pyx_t_2;
      __pyx_t_2 = 0;
    } else {
      __Pyx_INCREF(__pyx_v_row_or_col);
      __pyx_t_3 = __pyx_v_row_or_col;
    }
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 532; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_row_or_col);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row_or_col);
    __Pyx_GIVEREF(__pyx_v_row_or_col);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_name);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_name);
    __Pyx_GIVEREF(__pyx_v_name);
    __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":534
 *             return row_or_col, ind if name is '' else row_or_col, name
 *         else:
 *             m = self.get_num_rows()             # <<<<<<<<<<<<<<
 *             if ind > m:  # column
 *                 return 'col', ind - m
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_num_rows); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 534; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_v_m = __pyx_t_3;
    __pyx_t_3 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":535
 *         else:
 *             m = self.get_num_rows()
 *             if ind > m:  # column             # <<<<<<<<<<<<<<
 *                 return 'col', ind - m
 *             else:  # row
 */
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_ind); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyObject_RichCompare(__pyx_t_3, __pyx_v_m, Py_GT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_1 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (__pyx_t_1) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":536
 *             m = self.get_num_rows()
 *             if ind > m:  # column
 *                 return 'col', ind - m             # <<<<<<<<<<<<<<
 *             else:  # row
 *                 return 'row', ind
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_ind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyNumber_Subtract(__pyx_t_2, __pyx_v_m); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 536; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_INCREF(__pyx_n_s_col);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_n_s_col);
      __Pyx_GIVEREF(__pyx_n_s_col);
      PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
      __Pyx_GIVEREF(__pyx_t_3);
      __pyx_t_3 = 0;
      __pyx_r = __pyx_t_2;
      __pyx_t_2 = 0;
      goto __pyx_L0;
    }
    /*else*/ {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":538
 *                 return 'col', ind - m
 *             else:  # row
 *                 return 'row', ind             # <<<<<<<<<<<<<<
 * 
 *     def get_row_type(self, row):
 */
      __Pyx_XDECREF(__pyx_r);
      __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_ind); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 538; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_n_s_row);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_row);
      __Pyx_GIVEREF(__pyx_n_s_row);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
      __Pyx_GIVEREF(__pyx_t_2);
      __pyx_t_2 = 0;
      __pyx_r = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L0;
    }
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":529
 *             return 'row', self.get_row_name(ind)
 * 
 *     def get_row_or_col_name_if(self, int ind, names_preferred=False):             # <<<<<<<<<<<<<<
 *         if names_preferred:
 *             row_or_col, name = self.get_row_or_col_name(ind)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_or_col_name_if", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row_or_col);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XDECREF(__pyx_v_m);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":540
 *                 return 'row', ind
 * 
 *     def get_row_type(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row type"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_77get_row_type(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_76get_row_type[] = "Problem.get_row_type(self, row)\nRetrieve row type";
static PyObject *__pyx_pw_8ecyglpki_7Problem_77get_row_type(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_row_type (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_76get_row_type(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_76get_row_type(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_row_type", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":542
 *     def get_row_type(self, row):
 *         """Retrieve row type"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         return vartype2str[glpk.get_row_type(self._prob, row)]
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 542; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":543
 *         """Retrieve row type"""
 *         row = self.find_row_as_needed(row)
 *         return vartype2str[glpk.get_row_type(self._prob, row)]             # <<<<<<<<<<<<<<
 * 
 *     def get_row_lb(self, row):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = glp_get_row_type(__pyx_v_self->_prob, __pyx_t_4);
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_vartype2str, __pyx_t_5, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":540
 *                 return 'row', ind
 * 
 *     def get_row_type(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row type"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":545
 *         return vartype2str[glpk.get_row_type(self._prob, row)]
 * 
 *     def get_row_lb(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row lower bound"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_79get_row_lb(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_78get_row_lb[] = "Problem.get_row_lb(self, row)\nRetrieve row lower bound";
static PyObject *__pyx_pw_8ecyglpki_7Problem_79get_row_lb(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_row_lb (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_78get_row_lb(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_78get_row_lb(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row) {
  double __pyx_v_lb;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  double __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_row_lb", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":547
 *     def get_row_lb(self, row):
 *         """Retrieve row lower bound"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         cdef double lb = glpk.get_row_lb(self._prob, row)
 *         return -float('inf') if lb == -double_MAX else lb
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 547; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":548
 *         """Retrieve row lower bound"""
 *         row = self.find_row_as_needed(row)
 *         cdef double lb = glpk.get_row_lb(self._prob, row)             # <<<<<<<<<<<<<<
 *         return -float('inf') if lb == -double_MAX else lb
 * 
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_lb = glp_get_row_lb(__pyx_v_self->_prob, __pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":549
 *         row = self.find_row_as_needed(row)
 *         cdef double lb = glpk.get_row_lb(self._prob, row)
 *         return -float('inf') if lb == -double_MAX else lb             # <<<<<<<<<<<<<<
 * 
 *     def get_row_ub(self, row):
 */
  __Pyx_XDECREF(__pyx_r);
  if (((__pyx_v_lb == (-__pyx_v_8ecyglpki_double_MAX)) != 0)) {
    __pyx_t_5 = __Pyx_PyObject_AsDouble(__pyx_n_s_inf); if (unlikely(__pyx_t_5 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_2 = PyFloat_FromDouble((-__pyx_t_5)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {
    __pyx_t_2 = PyFloat_FromDouble(__pyx_v_lb); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 549; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":545
 *         return vartype2str[glpk.get_row_type(self._prob, row)]
 * 
 *     def get_row_lb(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row lower bound"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_lb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":551
 *         return -float('inf') if lb == -double_MAX else lb
 * 
 *     def get_row_ub(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row upper bound"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_81get_row_ub(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_80get_row_ub[] = "Problem.get_row_ub(self, row)\nRetrieve row upper bound";
static PyObject *__pyx_pw_8ecyglpki_7Problem_81get_row_ub(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_row_ub (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_80get_row_ub(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_80get_row_ub(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row) {
  double __pyx_v_ub;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  double __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_row_ub", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":553
 *     def get_row_ub(self, row):
 *         """Retrieve row upper bound"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         cdef double ub = glpk.get_row_ub(self._prob, row)
 *         return -float('inf') if ub == -double_MAX else ub
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 553; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":554
 *         """Retrieve row upper bound"""
 *         row = self.find_row_as_needed(row)
 *         cdef double ub = glpk.get_row_ub(self._prob, row)             # <<<<<<<<<<<<<<
 *         return -float('inf') if ub == -double_MAX else ub
 * 
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_ub = glp_get_row_ub(__pyx_v_self->_prob, __pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":555
 *         row = self.find_row_as_needed(row)
 *         cdef double ub = glpk.get_row_ub(self._prob, row)
 *         return -float('inf') if ub == -double_MAX else ub             # <<<<<<<<<<<<<<
 * 
 *     def get_col_type(self, col):
 */
  __Pyx_XDECREF(__pyx_r);
  if (((__pyx_v_ub == (-__pyx_v_8ecyglpki_double_MAX)) != 0)) {
    __pyx_t_5 = __Pyx_PyObject_AsDouble(__pyx_n_s_inf); if (unlikely(__pyx_t_5 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_2 = PyFloat_FromDouble((-__pyx_t_5)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {
    __pyx_t_2 = PyFloat_FromDouble(__pyx_v_ub); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 555; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":551
 *         return -float('inf') if lb == -double_MAX else lb
 * 
 *     def get_row_ub(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row upper bound"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_ub", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":557
 *         return -float('inf') if ub == -double_MAX else ub
 * 
 *     def get_col_type(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column type"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_83get_col_type(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_82get_col_type[] = "Problem.get_col_type(self, col)\nRetrieve column type";
static PyObject *__pyx_pw_8ecyglpki_7Problem_83get_col_type(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_col_type (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_82get_col_type(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_82get_col_type(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_col_type", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":559
 *     def get_col_type(self, col):
 *         """Retrieve column type"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         return vartype2str[glpk.get_col_type(self._prob, col)]
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 559; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":560
 *         """Retrieve column type"""
 *         col = self.find_col_as_needed(col)
 *         return vartype2str[glpk.get_col_type(self._prob, col)]             # <<<<<<<<<<<<<<
 * 
 *     def get_col_lb(self, col):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = glp_get_col_type(__pyx_v_self->_prob, __pyx_t_4);
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_vartype2str, __pyx_t_5, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":557
 *         return -float('inf') if ub == -double_MAX else ub
 * 
 *     def get_col_type(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column type"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_col_type", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":562
 *         return vartype2str[glpk.get_col_type(self._prob, col)]
 * 
 *     def get_col_lb(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column lower bound"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_85get_col_lb(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_84get_col_lb[] = "Problem.get_col_lb(self, col)\nRetrieve column lower bound";
static PyObject *__pyx_pw_8ecyglpki_7Problem_85get_col_lb(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_col_lb (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_84get_col_lb(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_84get_col_lb(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  double __pyx_v_lb;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  double __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_col_lb", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":564
 *     def get_col_lb(self, col):
 *         """Retrieve column lower bound"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         cdef double lb = glpk.get_col_lb(self._prob, col)
 *         return -float('inf') if lb == -double_MAX else lb
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":565
 *         """Retrieve column lower bound"""
 *         col = self.find_col_as_needed(col)
 *         cdef double lb = glpk.get_col_lb(self._prob, col)             # <<<<<<<<<<<<<<
 *         return -float('inf') if lb == -double_MAX else lb
 * 
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 565; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_lb = glp_get_col_lb(__pyx_v_self->_prob, __pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":566
 *         col = self.find_col_as_needed(col)
 *         cdef double lb = glpk.get_col_lb(self._prob, col)
 *         return -float('inf') if lb == -double_MAX else lb             # <<<<<<<<<<<<<<
 * 
 *     def get_col_ub(self, col):
 */
  __Pyx_XDECREF(__pyx_r);
  if (((__pyx_v_lb == (-__pyx_v_8ecyglpki_double_MAX)) != 0)) {
    __pyx_t_5 = __Pyx_PyObject_AsDouble(__pyx_n_s_inf); if (unlikely(__pyx_t_5 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_2 = PyFloat_FromDouble((-__pyx_t_5)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {
    __pyx_t_2 = PyFloat_FromDouble(__pyx_v_lb); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 566; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":562
 *         return vartype2str[glpk.get_col_type(self._prob, col)]
 * 
 *     def get_col_lb(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column lower bound"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_col_lb", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":568
 *         return -float('inf') if lb == -double_MAX else lb
 * 
 *     def get_col_ub(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column upper bound"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_87get_col_ub(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_86get_col_ub[] = "Problem.get_col_ub(self, col)\nRetrieve column upper bound";
static PyObject *__pyx_pw_8ecyglpki_7Problem_87get_col_ub(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_col_ub (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_86get_col_ub(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_86get_col_ub(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  double __pyx_v_ub;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  double __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_col_ub", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":570
 *     def get_col_ub(self, col):
 *         """Retrieve column upper bound"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         cdef double ub = glpk.get_col_ub(self._prob, col)
 *         return -float('inf') if ub == -double_MAX else ub
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 570; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":571
 *         """Retrieve column upper bound"""
 *         col = self.find_col_as_needed(col)
 *         cdef double ub = glpk.get_col_ub(self._prob, col)             # <<<<<<<<<<<<<<
 *         return -float('inf') if ub == -double_MAX else ub
 * 
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_ub = glp_get_col_ub(__pyx_v_self->_prob, __pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":572
 *         col = self.find_col_as_needed(col)
 *         cdef double ub = glpk.get_col_ub(self._prob, col)
 *         return -float('inf') if ub == -double_MAX else ub             # <<<<<<<<<<<<<<
 * 
 *     def get_obj_coef(self, col):
 */
  __Pyx_XDECREF(__pyx_r);
  if (((__pyx_v_ub == (-__pyx_v_8ecyglpki_double_MAX)) != 0)) {
    __pyx_t_5 = __Pyx_PyObject_AsDouble(__pyx_n_s_inf); if (unlikely(__pyx_t_5 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_2 = PyFloat_FromDouble((-__pyx_t_5)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
  } else {
    __pyx_t_2 = PyFloat_FromDouble(__pyx_v_ub); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __pyx_t_2;
    __pyx_t_2 = 0;
  }
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":568
 *         return -float('inf') if lb == -double_MAX else lb
 * 
 *     def get_col_ub(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column upper bound"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_col_ub", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":574
 *         return -float('inf') if ub == -double_MAX else ub
 * 
 *     def get_obj_coef(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve obj. coefficient"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_89get_obj_coef(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_88get_obj_coef[] = "Problem.get_obj_coef(self, col)\nRetrieve obj. coefficient";
static PyObject *__pyx_pw_8ecyglpki_7Problem_89get_obj_coef(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_obj_coef (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_88get_obj_coef(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_88get_obj_coef(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_obj_coef", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":576
 *     def get_obj_coef(self, col):
 *         """Retrieve obj. coefficient"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         return glpk.get_obj_coef(self._prob, col)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 576; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":577
 *         """Retrieve obj. coefficient"""
 *         col = self.find_col_as_needed(col)
 *         return glpk.get_obj_coef(self._prob, col)             # <<<<<<<<<<<<<<
 * 
 *     def get_obj_const(self):  # variant of get_obj_coef
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyFloat_FromDouble(glp_get_obj_coef(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":574
 *         return -float('inf') if ub == -double_MAX else ub
 * 
 *     def get_obj_coef(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve obj. coefficient"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_obj_coef", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":579
 *         return glpk.get_obj_coef(self._prob, col)
 * 
 *     def get_obj_const(self):  # variant of get_obj_coef             # <<<<<<<<<<<<<<
 *         """Retrieve obj. constant term"""
 *         return glpk.get_obj_coef(self._prob, 0)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_91get_obj_const(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_90get_obj_const[] = "Problem.get_obj_const(self)\nRetrieve obj. constant term";
static PyObject *__pyx_pw_8ecyglpki_7Problem_91get_obj_const(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_obj_const (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_90get_obj_const(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_90get_obj_const(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_obj_const", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":581
 *     def get_obj_const(self):  # variant of get_obj_coef
 *         """Retrieve obj. constant term"""
 *         return glpk.get_obj_coef(self._prob, 0)             # <<<<<<<<<<<<<<
 * 
 *     def get_num_nz(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(glp_get_obj_coef(__pyx_v_self->_prob, 0)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":579
 *         return glpk.get_obj_coef(self._prob, col)
 * 
 *     def get_obj_const(self):  # variant of get_obj_coef             # <<<<<<<<<<<<<<
 *         """Retrieve obj. constant term"""
 *         return glpk.get_obj_coef(self._prob, 0)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.get_obj_const", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":583
 *         return glpk.get_obj_coef(self._prob, 0)
 * 
 *     def get_num_nz(self):             # <<<<<<<<<<<<<<
 *         """Retrieve number of constraint coefficients"""
 *         return glpk.get_num_nz(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_93get_num_nz(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_92get_num_nz[] = "Problem.get_num_nz(self)\nRetrieve number of constraint coefficients";
static PyObject *__pyx_pw_8ecyglpki_7Problem_93get_num_nz(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_num_nz (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_92get_num_nz(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_92get_num_nz(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_num_nz", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":585
 *     def get_num_nz(self):
 *         """Retrieve number of constraint coefficients"""
 *         return glpk.get_num_nz(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def get_mat_row(self, row, names_preferred=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_get_num_nz(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":583
 *         return glpk.get_obj_coef(self._prob, 0)
 * 
 *     def get_num_nz(self):             # <<<<<<<<<<<<<<
 *         """Retrieve number of constraint coefficients"""
 *         return glpk.get_num_nz(self._prob)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.get_num_nz", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":587
 *         return glpk.get_num_nz(self._prob)
 * 
 *     def get_mat_row(self, row, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Retrieve row of the constraint matrix"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_95get_mat_row(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_94get_mat_row[] = "Problem.get_mat_row(self, row, names_preferred=False)\nRetrieve row of the constraint matrix";
static PyObject *__pyx_pw_8ecyglpki_7Problem_95get_mat_row(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_row = 0;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_mat_row (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_row,&__pyx_n_s_names_preferred,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_row)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_mat_row") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_row = values[0];
    __pyx_v_names_preferred = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_mat_row", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 587; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.get_mat_row", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_94get_mat_row(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_row, __pyx_v_names_preferred);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_94get_mat_row(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row, PyObject *__pyx_v_names_preferred) {
  int __pyx_v_n;
  int *__pyx_v_cols;
  double *__pyx_v_vals;
  int __pyx_v_k;
  PyObject *__pyx_v_coeffs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  long __pyx_t_5;
  long __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  char const *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_mat_row", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":589
 *     def get_mat_row(self, row, names_preferred=False):
 *         """Retrieve row of the constraint matrix"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         cdef int n = self.get_num_cols()
 *         cdef int* cols =  <int*>glpk.alloc(1+n, sizeof(int))
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 589; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":590
 *         """Retrieve row of the constraint matrix"""
 *         row = self.find_row_as_needed(row)
 *         cdef int n = self.get_num_cols()             # <<<<<<<<<<<<<<
 *         cdef int* cols =  <int*>glpk.alloc(1+n, sizeof(int))
 *         cdef double* vals =  <double*>glpk.alloc(1+n, sizeof(double))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_num_cols); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_n = __pyx_t_4;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":591
 *         row = self.find_row_as_needed(row)
 *         cdef int n = self.get_num_cols()
 *         cdef int* cols =  <int*>glpk.alloc(1+n, sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef double* vals =  <double*>glpk.alloc(1+n, sizeof(double))
 *         cdef int k
 */
  __pyx_v_cols = ((int *)glp_alloc((1 + __pyx_v_n), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":592
 *         cdef int n = self.get_num_cols()
 *         cdef int* cols =  <int*>glpk.alloc(1+n, sizeof(int))
 *         cdef double* vals =  <double*>glpk.alloc(1+n, sizeof(double))             # <<<<<<<<<<<<<<
 *         cdef int k
 *         try:
 */
  __pyx_v_vals = ((double *)glp_alloc((1 + __pyx_v_n), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":594
 *         cdef double* vals =  <double*>glpk.alloc(1+n, sizeof(double))
 *         cdef int k
 *         try:             # <<<<<<<<<<<<<<
 *             k = glpk.get_mat_row(self._prob, row, cols, vals)
 *             coeffs = {self.get_col_name_if(cols[i], names_preferred): vals[i]
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":595
 *         cdef int k
 *         try:
 *             k = glpk.get_mat_row(self._prob, row, cols, vals)             # <<<<<<<<<<<<<<
 *             coeffs = {self.get_col_name_if(cols[i], names_preferred): vals[i]
 *                       for i in range(1, 1+k)}
 */
    __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __pyx_v_k = glp_get_mat_row(__pyx_v_self->_prob, __pyx_t_4, __pyx_v_cols, __pyx_v_vals);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":596
 *         try:
 *             k = glpk.get_mat_row(self._prob, row, cols, vals)
 *             coeffs = {self.get_col_name_if(cols[i], names_preferred): vals[i]             # <<<<<<<<<<<<<<
 *                       for i in range(1, 1+k)}
 *         finally:
 */
    { /* enter inner scope */
      long __pyx_9genexpr13__pyx_v_i;
      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_2);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":597
 *             k = glpk.get_mat_row(self._prob, row, cols, vals)
 *             coeffs = {self.get_col_name_if(cols[i], names_preferred): vals[i]
 *                       for i in range(1, 1+k)}             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(cols)
 */
      __pyx_t_5 = (1 + __pyx_v_k);
      for (__pyx_t_6 = 1; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
        __pyx_9genexpr13__pyx_v_i = __pyx_t_6;

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":596
 *         try:
 *             k = glpk.get_mat_row(self._prob, row, cols, vals)
 *             coeffs = {self.get_col_name_if(cols[i], names_preferred): vals[i]             # <<<<<<<<<<<<<<
 *                       for i in range(1, 1+k)}
 *         finally:
 */
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_col_name_if); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_cols[__pyx_9genexpr13__pyx_v_i])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_names_preferred);
        PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_names_preferred);
        __Pyx_GIVEREF(__pyx_v_names_preferred);
        __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyFloat_FromDouble((__pyx_v_vals[__pyx_9genexpr13__pyx_v_i])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        if (unlikely(PyDict_SetItem(__pyx_t_2, (PyObject*)__pyx_t_1, (PyObject*)__pyx_t_7))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 596; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    } /* exit inner scope */
    __pyx_v_coeffs = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":599
 *                       for i in range(1, 1+k)}
 *         finally:
 *             glpk.free(cols)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 *         return coeffs
 */
  /*finally:*/ {
    /*normal exit:*/{
      glp_free(__pyx_v_cols);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":600
 *         finally:
 *             glpk.free(cols)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 *         return coeffs
 * 
 */
      glp_free(__pyx_v_vals);
      goto __pyx_L5;
    }
    /*exception exit:*/{
      __pyx_L4_error:;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __pyx_t_4 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
      {

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":599
 *                       for i in range(1, 1+k)}
 *         finally:
 *             glpk.free(cols)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 *         return coeffs
 */
        glp_free(__pyx_v_cols);

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":600
 *         finally:
 *             glpk.free(cols)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 *         return coeffs
 * 
 */
        glp_free(__pyx_v_vals);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":601
 *             glpk.free(cols)
 *             glpk.free(vals)
 *         return coeffs             # <<<<<<<<<<<<<<
 * 
 *     def get_mat_col(self, col, names_preferred=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_coeffs);
  __pyx_r = __pyx_v_coeffs;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":587
 *         return glpk.get_num_nz(self._prob)
 * 
 *     def get_mat_row(self, row, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Retrieve row of the constraint matrix"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("ecyglpki.Problem.get_mat_row", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_coeffs);
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":603
 *         return coeffs
 * 
 *     def get_mat_col(self, col, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Retrieve column of the constraint matrix"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_97get_mat_col(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_96get_mat_col[] = "Problem.get_mat_col(self, col, names_preferred=False)\nRetrieve column of the constraint matrix";
static PyObject *__pyx_pw_8ecyglpki_7Problem_97get_mat_col(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_col = 0;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_mat_col (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_col,&__pyx_n_s_names_preferred,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_col)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_mat_col") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_col = values[0];
    __pyx_v_names_preferred = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_mat_col", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.get_mat_col", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_96get_mat_col(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_col, __pyx_v_names_preferred);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_96get_mat_col(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_names_preferred) {
  int __pyx_v_m;
  int *__pyx_v_rows;
  double *__pyx_v_vals;
  int __pyx_v_k;
  PyObject *__pyx_v_coeffs = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  long __pyx_t_5;
  long __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  char const *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_mat_col", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":605
 *     def get_mat_col(self, col, names_preferred=False):
 *         """Retrieve column of the constraint matrix"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         cdef int m = self.get_num_rows()
 *         cdef int* rows =  <int*>glpk.alloc(1+m, sizeof(int))
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":606
 *         """Retrieve column of the constraint matrix"""
 *         col = self.find_col_as_needed(col)
 *         cdef int m = self.get_num_rows()             # <<<<<<<<<<<<<<
 *         cdef int* rows =  <int*>glpk.alloc(1+m, sizeof(int))
 *         cdef double* vals =  <double*>glpk.alloc(1+m, sizeof(double))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_num_rows); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 606; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_m = __pyx_t_4;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":607
 *         col = self.find_col_as_needed(col)
 *         cdef int m = self.get_num_rows()
 *         cdef int* rows =  <int*>glpk.alloc(1+m, sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef double* vals =  <double*>glpk.alloc(1+m, sizeof(double))
 *         cdef int k
 */
  __pyx_v_rows = ((int *)glp_alloc((1 + __pyx_v_m), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":608
 *         cdef int m = self.get_num_rows()
 *         cdef int* rows =  <int*>glpk.alloc(1+m, sizeof(int))
 *         cdef double* vals =  <double*>glpk.alloc(1+m, sizeof(double))             # <<<<<<<<<<<<<<
 *         cdef int k
 *         try:
 */
  __pyx_v_vals = ((double *)glp_alloc((1 + __pyx_v_m), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":610
 *         cdef double* vals =  <double*>glpk.alloc(1+m, sizeof(double))
 *         cdef int k
 *         try:             # <<<<<<<<<<<<<<
 *             k = glpk.get_mat_col(self._prob, col, rows, vals)
 *             coeffs = {self.get_row_name_if(rows[i], names_preferred): vals[i]
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":611
 *         cdef int k
 *         try:
 *             k = glpk.get_mat_col(self._prob, col, rows, vals)             # <<<<<<<<<<<<<<
 *             coeffs = {self.get_row_name_if(rows[i], names_preferred): vals[i]
 *                       for i in range(1, 1+k)}
 */
    __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __pyx_v_k = glp_get_mat_col(__pyx_v_self->_prob, __pyx_t_4, __pyx_v_rows, __pyx_v_vals);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":612
 *         try:
 *             k = glpk.get_mat_col(self._prob, col, rows, vals)
 *             coeffs = {self.get_row_name_if(rows[i], names_preferred): vals[i]             # <<<<<<<<<<<<<<
 *                       for i in range(1, 1+k)}
 *         finally:
 */
    { /* enter inner scope */
      long __pyx_9genexpr14__pyx_v_i;
      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_2);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":613
 *             k = glpk.get_mat_col(self._prob, col, rows, vals)
 *             coeffs = {self.get_row_name_if(rows[i], names_preferred): vals[i]
 *                       for i in range(1, 1+k)}             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(rows)
 */
      __pyx_t_5 = (1 + __pyx_v_k);
      for (__pyx_t_6 = 1; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
        __pyx_9genexpr14__pyx_v_i = __pyx_t_6;

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":612
 *         try:
 *             k = glpk.get_mat_col(self._prob, col, rows, vals)
 *             coeffs = {self.get_row_name_if(rows[i], names_preferred): vals[i]             # <<<<<<<<<<<<<<
 *                       for i in range(1, 1+k)}
 *         finally:
 */
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_name_if); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_rows[__pyx_9genexpr14__pyx_v_i])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_names_preferred);
        PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_names_preferred);
        __Pyx_GIVEREF(__pyx_v_names_preferred);
        __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_7 = PyFloat_FromDouble((__pyx_v_vals[__pyx_9genexpr14__pyx_v_i])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        if (unlikely(PyDict_SetItem(__pyx_t_2, (PyObject*)__pyx_t_1, (PyObject*)__pyx_t_7))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 612; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    } /* exit inner scope */
    __pyx_v_coeffs = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":615
 *                       for i in range(1, 1+k)}
 *         finally:
 *             glpk.free(rows)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 *         return coeffs
 */
  /*finally:*/ {
    /*normal exit:*/{
      glp_free(__pyx_v_rows);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":616
 *         finally:
 *             glpk.free(rows)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 *         return coeffs
 * 
 */
      glp_free(__pyx_v_vals);
      goto __pyx_L5;
    }
    /*exception exit:*/{
      __pyx_L4_error:;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __pyx_t_4 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
      {

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":615
 *                       for i in range(1, 1+k)}
 *         finally:
 *             glpk.free(rows)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 *         return coeffs
 */
        glp_free(__pyx_v_rows);

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":616
 *         finally:
 *             glpk.free(rows)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 *         return coeffs
 * 
 */
        glp_free(__pyx_v_vals);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":617
 *             glpk.free(rows)
 *             glpk.free(vals)
 *         return coeffs             # <<<<<<<<<<<<<<
 * 
 *     def find_row(self, str name):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_coeffs);
  __pyx_r = __pyx_v_coeffs;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":603
 *         return coeffs
 * 
 *     def get_mat_col(self, col, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Retrieve column of the constraint matrix"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("ecyglpki.Problem.get_mat_col", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_coeffs);
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":619
 *         return coeffs
 * 
 *     def find_row(self, str name):             # <<<<<<<<<<<<<<
 *         """Find row by its name"""
 *         cdef int row = glpk.find_row(self._prob, name2chars(name))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_99find_row(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_98find_row[] = "Problem.find_row(self, str name)\nFind row by its name";
static PyObject *__pyx_pw_8ecyglpki_7Problem_99find_row(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("find_row (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 619; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_98find_row(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_name));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_98find_row(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_name) {
  int __pyx_v_row;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("find_row", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":621
 *     def find_row(self, str name):
 *         """Find row by its name"""
 *         cdef int row = glpk.find_row(self._prob, name2chars(name))             # <<<<<<<<<<<<<<
 *         if row is 0:
 *             raise ValueError("'" + name + "' is not a row name.")
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_name2chars(__pyx_v_name); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 621; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_row = glp_find_row(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":622
 *         """Find row by its name"""
 *         cdef int row = glpk.find_row(self._prob, name2chars(name))
 *         if row is 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("'" + name + "' is not a row name.")
 *         return row
 */
  __pyx_t_2 = ((__pyx_v_row == 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":623
 *         cdef int row = glpk.find_row(self._prob, name2chars(name))
 *         if row is 0:
 *             raise ValueError("'" + name + "' is not a row name.")             # <<<<<<<<<<<<<<
 *         return row
 * 
 */
    __pyx_t_3 = PyNumber_Add(__pyx_kp_s__7, __pyx_v_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_kp_s_is_not_a_row_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 623; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":624
 *         if row is 0:
 *             raise ValueError("'" + name + "' is not a row name.")
 *         return row             # <<<<<<<<<<<<<<
 * 
 *     def find_row_as_needed(self, row):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_row); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 624; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":619
 *         return coeffs
 * 
 *     def find_row(self, str name):             # <<<<<<<<<<<<<<
 *         """Find row by its name"""
 *         cdef int row = glpk.find_row(self._prob, name2chars(name))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Problem.find_row", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":626
 *         return row
 * 
 *     def find_row_as_needed(self, row):             # <<<<<<<<<<<<<<
 *         if isinstance(row, int):
 *             return row
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_101find_row_as_needed(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_100find_row_as_needed[] = "Problem.find_row_as_needed(self, row)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_101find_row_as_needed(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("find_row_as_needed (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_100find_row_as_needed(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_100find_row_as_needed(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("find_row_as_needed", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":627
 * 
 *     def find_row_as_needed(self, row):
 *         if isinstance(row, int):             # <<<<<<<<<<<<<<
 *             return row
 *         elif isinstance(row, str):
 */
  __pyx_t_1 = PyInt_Check(__pyx_v_row); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":628
 *     def find_row_as_needed(self, row):
 *         if isinstance(row, int):
 *             return row             # <<<<<<<<<<<<<<
 *         elif isinstance(row, str):
 *             return self.find_row(row)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_row);
    __pyx_r = __pyx_v_row;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":629
 *         if isinstance(row, int):
 *             return row
 *         elif isinstance(row, str):             # <<<<<<<<<<<<<<
 *             return self.find_row(row)
 *         else:
 */
  __pyx_t_2 = PyString_Check(__pyx_v_row); 
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":630
 *             return row
 *         elif isinstance(row, str):
 *             return self.find_row(row)             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError("'row' must be a number ('int') or a name " +
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_row);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_row);
    __Pyx_GIVEREF(__pyx_v_row);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 630; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":632
 *             return self.find_row(row)
 *         else:
 *             raise TypeError("'row' must be a number ('int') or a name " +             # <<<<<<<<<<<<<<
 *                             "(str 'str'), not '" + type(row).__name__ +
 *                             "'.")
 */
    __pyx_t_5 = PyNumber_Add(__pyx_kp_s_row_must_be_a_number_int_or_a_n, __pyx_kp_s_str_str_not); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":633
 *         else:
 *             raise TypeError("'row' must be a number ('int') or a name " +
 *                             "(str 'str'), not '" + type(row).__name__ +             # <<<<<<<<<<<<<<
 *                             "'.")
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_row)), __pyx_n_s_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_kp_s__8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 633; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":632
 *             return self.find_row(row)
 *         else:
 *             raise TypeError("'row' must be a number ('int') or a name " +             # <<<<<<<<<<<<<<
 *                             "(str 'str'), not '" + type(row).__name__ +
 *                             "'.")
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 632; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":626
 *         return row
 * 
 *     def find_row_as_needed(self, row):             # <<<<<<<<<<<<<<
 *         if isinstance(row, int):
 *             return row
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("ecyglpki.Problem.find_row_as_needed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":636
 *                             "'.")
 * 
 *     def find_col(self, str name):             # <<<<<<<<<<<<<<
 *         """Find column by its name"""
 *         cdef int col = glpk.find_col(self._prob, name2chars(name))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_103find_col(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_102find_col[] = "Problem.find_col(self, str name)\nFind column by its name";
static PyObject *__pyx_pw_8ecyglpki_7Problem_103find_col(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("find_col (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 636; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_102find_col(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_name));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_102find_col(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_name) {
  int __pyx_v_col;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("find_col", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":638
 *     def find_col(self, str name):
 *         """Find column by its name"""
 *         cdef int col = glpk.find_col(self._prob, name2chars(name))             # <<<<<<<<<<<<<<
 *         if col is 0:
 *             raise ValueError("'" + name + "' is not a column name.")
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_name2chars(__pyx_v_name); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 638; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_col = glp_find_col(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":639
 *         """Find column by its name"""
 *         cdef int col = glpk.find_col(self._prob, name2chars(name))
 *         if col is 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("'" + name + "' is not a column name.")
 *         return col
 */
  __pyx_t_2 = ((__pyx_v_col == 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":640
 *         cdef int col = glpk.find_col(self._prob, name2chars(name))
 *         if col is 0:
 *             raise ValueError("'" + name + "' is not a column name.")             # <<<<<<<<<<<<<<
 *         return col
 * 
 */
    __pyx_t_3 = PyNumber_Add(__pyx_kp_s__7, __pyx_v_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_kp_s_is_not_a_column_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 640; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":641
 *         if col is 0:
 *             raise ValueError("'" + name + "' is not a column name.")
 *         return col             # <<<<<<<<<<<<<<
 * 
 *     def find_col_as_needed(self, col):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_col); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 641; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":636
 *                             "'.")
 * 
 *     def find_col(self, str name):             # <<<<<<<<<<<<<<
 *         """Find column by its name"""
 *         cdef int col = glpk.find_col(self._prob, name2chars(name))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Problem.find_col", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":643
 *         return col
 * 
 *     def find_col_as_needed(self, col):             # <<<<<<<<<<<<<<
 *         if isinstance(col, int):
 *             return col
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_105find_col_as_needed(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_104find_col_as_needed[] = "Problem.find_col_as_needed(self, col)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_105find_col_as_needed(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("find_col_as_needed (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_104find_col_as_needed(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_104find_col_as_needed(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("find_col_as_needed", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":644
 * 
 *     def find_col_as_needed(self, col):
 *         if isinstance(col, int):             # <<<<<<<<<<<<<<
 *             return col
 *         elif isinstance(col, str):
 */
  __pyx_t_1 = PyInt_Check(__pyx_v_col); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":645
 *     def find_col_as_needed(self, col):
 *         if isinstance(col, int):
 *             return col             # <<<<<<<<<<<<<<
 *         elif isinstance(col, str):
 *             return self.find_col(col)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_col);
    __pyx_r = __pyx_v_col;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":646
 *         if isinstance(col, int):
 *             return col
 *         elif isinstance(col, str):             # <<<<<<<<<<<<<<
 *             return self.find_col(col)
 *         else:
 */
  __pyx_t_2 = PyString_Check(__pyx_v_col); 
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":647
 *             return col
 *         elif isinstance(col, str):
 *             return self.find_col(col)             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError("'col' must be a number ('int') or a name " +
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_col);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_col);
    __Pyx_GIVEREF(__pyx_v_col);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 647; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":649
 *             return self.find_col(col)
 *         else:
 *             raise TypeError("'col' must be a number ('int') or a name " +             # <<<<<<<<<<<<<<
 *                             "(str 'str'), not '" + type(col).__name__ +
 *                             "'.")
 */
    __pyx_t_5 = PyNumber_Add(__pyx_kp_s_col_must_be_a_number_int_or_a_n, __pyx_kp_s_str_str_not); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":650
 *         else:
 *             raise TypeError("'col' must be a number ('int') or a name " +
 *                             "(str 'str'), not '" + type(col).__name__ +             # <<<<<<<<<<<<<<
 *                             "'.")
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_col)), __pyx_n_s_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_kp_s__8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 650; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":649
 *             return self.find_col(col)
 *         else:
 *             raise TypeError("'col' must be a number ('int') or a name " +             # <<<<<<<<<<<<<<
 *                             "(str 'str'), not '" + type(col).__name__ +
 *                             "'.")
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 649; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":643
 *         return col
 * 
 *     def find_col_as_needed(self, col):             # <<<<<<<<<<<<<<
 *         if isinstance(col, int):
 *             return col
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("ecyglpki.Problem.find_col_as_needed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":653
 *                             "'.")
 * 
 *     def find_row_or_col_as_needed(self, ind):             # <<<<<<<<<<<<<<
 *         if isinstance(ind, int):
 *             return ind
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_107find_row_or_col_as_needed(PyObject *__pyx_v_self, PyObject *__pyx_v_ind); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_106find_row_or_col_as_needed[] = "Problem.find_row_or_col_as_needed(self, ind)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_107find_row_or_col_as_needed(PyObject *__pyx_v_self, PyObject *__pyx_v_ind) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("find_row_or_col_as_needed (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_106find_row_or_col_as_needed(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_ind));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_106find_row_or_col_as_needed(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_ind) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  Py_ssize_t __pyx_t_3;
  int __pyx_t_4;
  PyObject *__pyx_t_5 = NULL;
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("find_row_or_col_as_needed", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":654
 * 
 *     def find_row_or_col_as_needed(self, ind):
 *         if isinstance(ind, int):             # <<<<<<<<<<<<<<
 *             return ind
 *         elif not isinstance(ind, tuple) or (len(ind) is not 2):
 */
  __pyx_t_1 = PyInt_Check(__pyx_v_ind); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":655
 *     def find_row_or_col_as_needed(self, ind):
 *         if isinstance(ind, int):
 *             return ind             # <<<<<<<<<<<<<<
 *         elif not isinstance(ind, tuple) or (len(ind) is not 2):
 *             raise TypeError("'ind' must be a number ('int') or a pair, not '" +
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_ind);
    __pyx_r = __pyx_v_ind;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":656
 *         if isinstance(ind, int):
 *             return ind
 *         elif not isinstance(ind, tuple) or (len(ind) is not 2):             # <<<<<<<<<<<<<<
 *             raise TypeError("'ind' must be a number ('int') or a pair, not '" +
 *                             type(ind).__name__ + "'.")
 */
  __pyx_t_2 = PyTuple_Check(__pyx_v_ind); 
  __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
  if (!__pyx_t_1) {
    __pyx_t_3 = PyObject_Length(__pyx_v_ind); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 656; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_2 = ((__pyx_t_3 != 2) != 0);
    __pyx_t_4 = __pyx_t_2;
  } else {
    __pyx_t_4 = __pyx_t_1;
  }
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":658
 *         elif not isinstance(ind, tuple) or (len(ind) is not 2):
 *             raise TypeError("'ind' must be a number ('int') or a pair, not '" +
 *                             type(ind).__name__ + "'.")             # <<<<<<<<<<<<<<
 *         elif ind[0] is 'row':
 *             return self.find_row_as_needed(ind[1])
 */
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_ind)), __pyx_n_s_name); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":657
 *             return ind
 *         elif not isinstance(ind, tuple) or (len(ind) is not 2):
 *             raise TypeError("'ind' must be a number ('int') or a pair, not '" +             # <<<<<<<<<<<<<<
 *                             type(ind).__name__ + "'.")
 *         elif ind[0] is 'row':
 */
    __pyx_t_6 = PyNumber_Add(__pyx_kp_s_ind_must_be_a_number_int_or_a_p, __pyx_t_5); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":658
 *         elif not isinstance(ind, tuple) or (len(ind) is not 2):
 *             raise TypeError("'ind' must be a number ('int') or a pair, not '" +
 *                             type(ind).__name__ + "'.")             # <<<<<<<<<<<<<<
 *         elif ind[0] is 'row':
 *             return self.find_row_as_needed(ind[1])
 */
    __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_s__8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 658; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":657
 *             return ind
 *         elif not isinstance(ind, tuple) or (len(ind) is not 2):
 *             raise TypeError("'ind' must be a number ('int') or a pair, not '" +             # <<<<<<<<<<<<<<
 *                             type(ind).__name__ + "'.")
 *         elif ind[0] is 'row':
 */
    __pyx_t_6 = PyTuple_New(1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_6, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_Raise(__pyx_t_5, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 657; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":659
 *             raise TypeError("'ind' must be a number ('int') or a pair, not '" +
 *                             type(ind).__name__ + "'.")
 *         elif ind[0] is 'row':             # <<<<<<<<<<<<<<
 *             return self.find_row_as_needed(ind[1])
 *         elif ind[0] is 'col':
 */
  __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_ind, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 659; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_4 = (__pyx_t_5 == __pyx_n_s_row);
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_1 = (__pyx_t_4 != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":660
 *                             type(ind).__name__ + "'.")
 *         elif ind[0] is 'row':
 *             return self.find_row_as_needed(ind[1])             # <<<<<<<<<<<<<<
 *         elif ind[0] is 'col':
 *             return self.get_num_rows() + self.find_col_as_needed(ind[1])
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_ind, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 660; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_r = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":661
 *         elif ind[0] is 'row':
 *             return self.find_row_as_needed(ind[1])
 *         elif ind[0] is 'col':             # <<<<<<<<<<<<<<
 *             return self.get_num_rows() + self.find_col_as_needed(ind[1])
 *         else:
 */
  __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_ind, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 661; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_1 = (__pyx_t_6 == __pyx_n_s_col);
  __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
  __pyx_t_4 = (__pyx_t_1 != 0);
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":662
 *             return self.find_row_as_needed(ind[1])
 *         elif ind[0] is 'col':
 *             return self.get_num_rows() + self.find_col_as_needed(ind[1])             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError("'ind[0]' must be 'row' or 'col', not '" +
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_num_rows); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_5 = __Pyx_GetItemInt(__pyx_v_ind, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_t_5);
    __Pyx_GIVEREF(__pyx_t_5);
    __pyx_t_5 = 0;
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    __pyx_t_8 = PyNumber_Add(__pyx_t_7, __pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 662; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __pyx_r = __pyx_t_8;
    __pyx_t_8 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":665
 *         else:
 *             raise ValueError("'ind[0]' must be 'row' or 'col', not '" +
 *                              str(ind[0]) + "'.")             # <<<<<<<<<<<<<<
 * 
 *     def set_rii(self, row, double sf):
 */
    __pyx_t_8 = __Pyx_GetItemInt(__pyx_v_ind, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_8 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_8);
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_5, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":664
 *             return self.get_num_rows() + self.find_col_as_needed(ind[1])
 *         else:
 *             raise ValueError("'ind[0]' must be 'row' or 'col', not '" +             # <<<<<<<<<<<<<<
 *                              str(ind[0]) + "'.")
 * 
 */
    __pyx_t_5 = PyNumber_Add(__pyx_kp_s_ind_0_must_be_row_or_col_not, __pyx_t_8); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":665
 *         else:
 *             raise ValueError("'ind[0]' must be 'row' or 'col', not '" +
 *                              str(ind[0]) + "'.")             # <<<<<<<<<<<<<<
 * 
 *     def set_rii(self, row, double sf):
 */
    __pyx_t_8 = PyNumber_Add(__pyx_t_5, __pyx_kp_s__8); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 665; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":664
 *             return self.get_num_rows() + self.find_col_as_needed(ind[1])
 *         else:
 *             raise ValueError("'ind[0]' must be 'row' or 'col', not '" +             # <<<<<<<<<<<<<<
 *                              str(ind[0]) + "'.")
 * 
 */
    __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_8);
    __Pyx_GIVEREF(__pyx_t_8);
    __pyx_t_8 = 0;
    __pyx_t_8 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_5, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_8);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_Raise(__pyx_t_8, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 664; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":653
 *                             "'.")
 * 
 *     def find_row_or_col_as_needed(self, ind):             # <<<<<<<<<<<<<<
 *         if isinstance(ind, int):
 *             return ind
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("ecyglpki.Problem.find_row_or_col_as_needed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":667
 *                              str(ind[0]) + "'.")
 * 
 *     def set_rii(self, row, double sf):             # <<<<<<<<<<<<<<
 *         """Set (change) row scale factor"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_109set_rii(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_108set_rii[] = "Problem.set_rii(self, row, double sf)\nSet (change) row scale factor";
static PyObject *__pyx_pw_8ecyglpki_7Problem_109set_rii(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_row = 0;
  double __pyx_v_sf;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_rii (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_row,&__pyx_n_s_sf,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_row)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sf)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_rii", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_rii") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_row = values[0];
    __pyx_v_sf = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_sf == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_rii", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 667; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_rii", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_108set_rii(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_row, __pyx_v_sf);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_108set_rii(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row, double __pyx_v_sf) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_rii", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":669
 *     def set_rii(self, row, double sf):
 *         """Set (change) row scale factor"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         glpk.set_rii(self._prob, row, sf)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 669; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":670
 *         """Set (change) row scale factor"""
 *         row = self.find_row_as_needed(row)
 *         glpk.set_rii(self._prob, row, sf)             # <<<<<<<<<<<<<<
 * 
 *     def set_sjj(self, col, double sf):
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 670; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_set_rii(__pyx_v_self->_prob, __pyx_t_4, __pyx_v_sf);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":667
 *                              str(ind[0]) + "'.")
 * 
 *     def set_rii(self, row, double sf):             # <<<<<<<<<<<<<<
 *         """Set (change) row scale factor"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.set_rii", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":672
 *         glpk.set_rii(self._prob, row, sf)
 * 
 *     def set_sjj(self, col, double sf):             # <<<<<<<<<<<<<<
 *         """Set (change) column scale factor"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_111set_sjj(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_110set_sjj[] = "Problem.set_sjj(self, col, double sf)\nSet (change) column scale factor";
static PyObject *__pyx_pw_8ecyglpki_7Problem_111set_sjj(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_col = 0;
  double __pyx_v_sf;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_sjj (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_col,&__pyx_n_s_sf,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_col)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sf)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_sjj", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_sjj") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_col = values[0];
    __pyx_v_sf = __pyx_PyFloat_AsDouble(values[1]); if (unlikely((__pyx_v_sf == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_sjj", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 672; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_sjj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_110set_sjj(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_col, __pyx_v_sf);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_110set_sjj(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, double __pyx_v_sf) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_sjj", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":674
 *     def set_sjj(self, col, double sf):
 *         """Set (change) column scale factor"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         glpk.set_sjj(self._prob, col, sf)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 674; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":675
 *         """Set (change) column scale factor"""
 *         col = self.find_col_as_needed(col)
 *         glpk.set_sjj(self._prob, col, sf)             # <<<<<<<<<<<<<<
 * 
 *     def get_rii(self, row):
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 675; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_set_sjj(__pyx_v_self->_prob, __pyx_t_4, __pyx_v_sf);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":672
 *         glpk.set_rii(self._prob, row, sf)
 * 
 *     def set_sjj(self, col, double sf):             # <<<<<<<<<<<<<<
 *         """Set (change) column scale factor"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.set_sjj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":677
 *         glpk.set_sjj(self._prob, col, sf)
 * 
 *     def get_rii(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row scale factor"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_113get_rii(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_112get_rii[] = "Problem.get_rii(self, row)\nRetrieve row scale factor";
static PyObject *__pyx_pw_8ecyglpki_7Problem_113get_rii(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_rii (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_112get_rii(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_112get_rii(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_rii", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":679
 *     def get_rii(self, row):
 *         """Retrieve row scale factor"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         return glpk.get_rii(self._prob, row)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 679; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":680
 *         """Retrieve row scale factor"""
 *         row = self.find_row_as_needed(row)
 *         return glpk.get_rii(self._prob, row)             # <<<<<<<<<<<<<<
 * 
 *     def get_sjj(self, col):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyFloat_FromDouble(glp_get_rii(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 680; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":677
 *         glpk.set_sjj(self._prob, col, sf)
 * 
 *     def get_rii(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row scale factor"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_rii", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":682
 *         return glpk.get_rii(self._prob, row)
 * 
 *     def get_sjj(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column scale factor"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_115get_sjj(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_114get_sjj[] = "Problem.get_sjj(self, col)\nRetrieve column scale factor";
static PyObject *__pyx_pw_8ecyglpki_7Problem_115get_sjj(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_sjj (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_114get_sjj(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_114get_sjj(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_sjj", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":684
 *     def get_sjj(self, col):
 *         """Retrieve column scale factor"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         return glpk.get_sjj(self._prob, col)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 684; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":685
 *         """Retrieve column scale factor"""
 *         col = self.find_col_as_needed(col)
 *         return glpk.get_sjj(self._prob, col)             # <<<<<<<<<<<<<<
 * 
 *     def scale_prob(self, *algorithms):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyFloat_FromDouble(glp_get_sjj(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 685; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":682
 *         return glpk.get_rii(self._prob, row)
 * 
 *     def get_sjj(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column scale factor"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_sjj", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":687
 *         return glpk.get_sjj(self._prob, col)
 * 
 *     def scale_prob(self, *algorithms):             # <<<<<<<<<<<<<<
 *         """Scale problem data
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_117scale_prob(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_116scale_prob[] = "Problem.scale_prob(self, *algorithms)\nScale problem data\n\n        :param algorithms: the algorithms to apply, one or more from `'auto'`,\n            `'skip'`, `'geometric'`, `'equilibration'`, `'round'`\n\n        ";
static PyObject *__pyx_pw_8ecyglpki_7Problem_117scale_prob(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_algorithms = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("scale_prob (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "scale_prob", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_algorithms = __pyx_args;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_116scale_prob(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_algorithms);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_algorithms);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_8ecyglpki_7Problem_10scale_prob_2generator1(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":695
 *         """
 *         if len(algorithms) is not 0:
 *             glpk.scale_prob(self._prob, sum(str2scalopt[algorithm]             # <<<<<<<<<<<<<<
 *                                             for algorithm in algorithms))
 * 
 */

static PyObject *__pyx_pf_8ecyglpki_7Problem_10scale_prob_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr *)__pyx_tp_new_8ecyglpki___pyx_scope_struct_3_genexpr(__pyx_ptype_8ecyglpki___pyx_scope_struct_3_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_8ecyglpki_7Problem_10scale_prob_2generator1, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.scale_prob.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_8ecyglpki_7Problem_10scale_prob_2generator1(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr *__pyx_cur_scope = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":696
 *         if len(algorithms) is not 0:
 *             glpk.scale_prob(self._prob, sum(str2scalopt[algorithm]
 *                                             for algorithm in algorithms))             # <<<<<<<<<<<<<<
 * 
 *     def unscale_prob(self):
 */
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_algorithms)) { __Pyx_RaiseClosureNameError("algorithms"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
  if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_algorithms == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_algorithms; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 696; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    #endif
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_algorithm);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_algorithm, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":695
 *         """
 *         if len(algorithms) is not 0:
 *             glpk.scale_prob(self._prob, sum(str2scalopt[algorithm]             # <<<<<<<<<<<<<<
 *                                             for algorithm in algorithms))
 * 
 */
    __pyx_t_3 = PyObject_GetItem(__pyx_v_8ecyglpki_str2scalopt, __pyx_cur_scope->__pyx_v_algorithm); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r);
  __pyx_generator->resume_label = -1;
  __Pyx_Generator_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return NULL;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":687
 *         return glpk.get_sjj(self._prob, col)
 * 
 *     def scale_prob(self, *algorithms):             # <<<<<<<<<<<<<<
 *         """Scale problem data
 * 
 */

static PyObject *__pyx_pf_8ecyglpki_7Problem_116scale_prob(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_algorithms) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("scale_prob", 0);
  __pyx_cur_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob *)__pyx_tp_new_8ecyglpki___pyx_scope_struct_2_scale_prob(__pyx_ptype_8ecyglpki___pyx_scope_struct_2_scale_prob, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_algorithms = __pyx_v_algorithms;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_algorithms);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_algorithms);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":694
 * 
 *         """
 *         if len(algorithms) is not 0:             # <<<<<<<<<<<<<<
 *             glpk.scale_prob(self._prob, sum(str2scalopt[algorithm]
 *                                             for algorithm in algorithms))
 */
  __pyx_t_1 = __pyx_cur_scope->__pyx_v_algorithms;
  __Pyx_INCREF(__pyx_t_1);
  if (unlikely(__pyx_t_1 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_2 = PyTuple_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 694; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = ((__pyx_t_2 != 0) != 0);
  if (__pyx_t_3) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":695
 *         """
 *         if len(algorithms) is not 0:
 *             glpk.scale_prob(self._prob, sum(str2scalopt[algorithm]             # <<<<<<<<<<<<<<
 *                                             for algorithm in algorithms))
 * 
 */
    __pyx_t_1 = __pyx_pf_8ecyglpki_7Problem_10scale_prob_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_sum, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    glp_scale_prob(__pyx_v_self->_prob, __pyx_t_5);
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":687
 *         return glpk.get_sjj(self._prob, col)
 * 
 *     def scale_prob(self, *algorithms):             # <<<<<<<<<<<<<<
 *         """Scale problem data
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Problem.scale_prob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":698
 *                                             for algorithm in algorithms))
 * 
 *     def unscale_prob(self):             # <<<<<<<<<<<<<<
 *         """Unscale problem data"""
 *         glpk.unscale_prob(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_119unscale_prob(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_118unscale_prob[] = "Problem.unscale_prob(self)\nUnscale problem data";
static PyObject *__pyx_pw_8ecyglpki_7Problem_119unscale_prob(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("unscale_prob (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_118unscale_prob(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_118unscale_prob(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("unscale_prob", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":700
 *     def unscale_prob(self):
 *         """Unscale problem data"""
 *         glpk.unscale_prob(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def set_row_stat(self, row, str status):
 */
  glp_unscale_prob(__pyx_v_self->_prob);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":698
 *                                             for algorithm in algorithms))
 * 
 *     def unscale_prob(self):             # <<<<<<<<<<<<<<
 *         """Unscale problem data"""
 *         glpk.unscale_prob(self._prob)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":702
 *         glpk.unscale_prob(self._prob)
 * 
 *     def set_row_stat(self, row, str status):             # <<<<<<<<<<<<<<
 *         """Set (change) row status"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_121set_row_stat(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_120set_row_stat[] = "Problem.set_row_stat(self, row, str status)\nSet (change) row status";
static PyObject *__pyx_pw_8ecyglpki_7Problem_121set_row_stat(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_row = 0;
  PyObject *__pyx_v_status = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_row_stat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_row,&__pyx_n_s_status,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_row)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_status)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_row_stat", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_row_stat") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_row = values[0];
    __pyx_v_status = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_row_stat", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_row_stat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), (&PyString_Type), 1, "status", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 702; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_120set_row_stat(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_row, __pyx_v_status);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_120set_row_stat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row, PyObject *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_row_stat", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":704
 *     def set_row_stat(self, row, str status):
 *         """Set (change) row status"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         _statuscheck(self.get_row_type(row), status)
 *         glpk.set_row_stat(self._prob, row, str2varstat[status])
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 704; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":705
 *         """Set (change) row status"""
 *         row = self.find_row_as_needed(row)
 *         _statuscheck(self.get_row_type(row), status)             # <<<<<<<<<<<<<<
 *         glpk.set_row_stat(self._prob, row, str2varstat[status])
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_type); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = __pyx_f_8ecyglpki__statuscheck(((PyObject*)__pyx_t_1), __pyx_v_status); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 705; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":706
 *         row = self.find_row_as_needed(row)
 *         _statuscheck(self.get_row_type(row), status)
 *         glpk.set_row_stat(self._prob, row, str2varstat[status])             # <<<<<<<<<<<<<<
 * 
 *     def set_col_stat(self, col, str status):
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = PyObject_GetItem(__pyx_v_8ecyglpki_str2varstat, __pyx_v_status); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 706; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  glp_set_row_stat(__pyx_v_self->_prob, __pyx_t_4, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":702
 *         glpk.unscale_prob(self._prob)
 * 
 *     def set_row_stat(self, row, str status):             # <<<<<<<<<<<<<<
 *         """Set (change) row status"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.set_row_stat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":708
 *         glpk.set_row_stat(self._prob, row, str2varstat[status])
 * 
 *     def set_col_stat(self, col, str status):             # <<<<<<<<<<<<<<
 *         """Set (change) column status"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_123set_col_stat(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_122set_col_stat[] = "Problem.set_col_stat(self, col, str status)\nSet (change) column status";
static PyObject *__pyx_pw_8ecyglpki_7Problem_123set_col_stat(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_col = 0;
  PyObject *__pyx_v_status = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_col_stat (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_col,&__pyx_n_s_status,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_col)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_status)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_col_stat", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_col_stat") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_col = values[0];
    __pyx_v_status = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_col_stat", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_col_stat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_status), (&PyString_Type), 1, "status", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 708; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_122set_col_stat(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_col, __pyx_v_status);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_122set_col_stat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_status) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_col_stat", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":710
 *     def set_col_stat(self, col, str status):
 *         """Set (change) column status"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         _statuscheck(self.get_col_type(col), status)
 *         glpk.set_col_stat(self._prob, col, str2varstat[status])
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 710; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":711
 *         """Set (change) column status"""
 *         col = self.find_col_as_needed(col)
 *         _statuscheck(self.get_col_type(col), status)             # <<<<<<<<<<<<<<
 *         glpk.set_col_stat(self._prob, col, str2varstat[status])
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_col_type); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  if (!(likely(PyString_CheckExact(__pyx_t_1))||((__pyx_t_1) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_t_1)->tp_name), 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = __pyx_f_8ecyglpki__statuscheck(((PyObject*)__pyx_t_1), __pyx_v_status); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 711; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":712
 *         col = self.find_col_as_needed(col)
 *         _statuscheck(self.get_col_type(col), status)
 *         glpk.set_col_stat(self._prob, col, str2varstat[status])             # <<<<<<<<<<<<<<
 * 
 *     def std_basis(self):
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = PyObject_GetItem(__pyx_v_8ecyglpki_str2varstat, __pyx_v_status); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 712; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  glp_set_col_stat(__pyx_v_self->_prob, __pyx_t_4, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":708
 *         glpk.set_row_stat(self._prob, row, str2varstat[status])
 * 
 *     def set_col_stat(self, col, str status):             # <<<<<<<<<<<<<<
 *         """Set (change) column status"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.set_col_stat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":714
 *         glpk.set_col_stat(self._prob, col, str2varstat[status])
 * 
 *     def std_basis(self):             # <<<<<<<<<<<<<<
 *         """Construct standard initial LP basis"""
 *         glpk.std_basis(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_125std_basis(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_124std_basis[] = "Problem.std_basis(self)\nConstruct standard initial LP basis";
static PyObject *__pyx_pw_8ecyglpki_7Problem_125std_basis(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("std_basis (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_124std_basis(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_124std_basis(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("std_basis", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":716
 *     def std_basis(self):
 *         """Construct standard initial LP basis"""
 *         glpk.std_basis(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def adv_basis(self):
 */
  glp_std_basis(__pyx_v_self->_prob);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":714
 *         glpk.set_col_stat(self._prob, col, str2varstat[status])
 * 
 *     def std_basis(self):             # <<<<<<<<<<<<<<
 *         """Construct standard initial LP basis"""
 *         glpk.std_basis(self._prob)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":718
 *         glpk.std_basis(self._prob)
 * 
 *     def adv_basis(self):             # <<<<<<<<<<<<<<
 *         """Construct advanced initial LP basis"""
 *         glpk.adv_basis(self._prob, 0)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_127adv_basis(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_126adv_basis[] = "Problem.adv_basis(self)\nConstruct advanced initial LP basis";
static PyObject *__pyx_pw_8ecyglpki_7Problem_127adv_basis(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("adv_basis (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_126adv_basis(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_126adv_basis(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("adv_basis", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":720
 *     def adv_basis(self):
 *         """Construct advanced initial LP basis"""
 *         glpk.adv_basis(self._prob, 0)             # <<<<<<<<<<<<<<
 * 
 *     def cpx_basis(self):
 */
  glp_adv_basis(__pyx_v_self->_prob, 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":718
 *         glpk.std_basis(self._prob)
 * 
 *     def adv_basis(self):             # <<<<<<<<<<<<<<
 *         """Construct advanced initial LP basis"""
 *         glpk.adv_basis(self._prob, 0)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":722
 *         glpk.adv_basis(self._prob, 0)
 * 
 *     def cpx_basis(self):             # <<<<<<<<<<<<<<
 *         """Construct Bixby's initial LP basis"""
 *         glpk.cpx_basis(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_129cpx_basis(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_128cpx_basis[] = "Problem.cpx_basis(self)\nConstruct Bixby's initial LP basis";
static PyObject *__pyx_pw_8ecyglpki_7Problem_129cpx_basis(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cpx_basis (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_128cpx_basis(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_128cpx_basis(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cpx_basis", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":724
 *     def cpx_basis(self):
 *         """Construct Bixby's initial LP basis"""
 *         glpk.cpx_basis(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def simplex(self, SimplexControls controls):
 */
  glp_cpx_basis(__pyx_v_self->_prob);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":722
 *         glpk.adv_basis(self._prob, 0)
 * 
 *     def cpx_basis(self):             # <<<<<<<<<<<<<<
 *         """Construct Bixby's initial LP basis"""
 *         glpk.cpx_basis(self._prob)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":726
 *         glpk.cpx_basis(self._prob)
 * 
 *     def simplex(self, SimplexControls controls):             # <<<<<<<<<<<<<<
 *         """Solve LP problem with the simplex method"""
 *         if ((controls.meth is not 'dual') and
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_131simplex(PyObject *__pyx_v_self, PyObject *__pyx_v_controls); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_130simplex[] = "Problem.simplex(self, SimplexControls controls)\nSolve LP problem with the simplex method";
static PyObject *__pyx_pw_8ecyglpki_7Problem_131simplex(PyObject *__pyx_v_self, PyObject *__pyx_v_controls) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("simplex (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_controls), __pyx_ptype_8ecyglpki_SimplexControls, 1, "controls", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 726; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_130simplex(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_controls));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_130simplex(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_controls) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("simplex", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":728
 *     def simplex(self, SimplexControls controls):
 *         """Solve LP problem with the simplex method"""
 *         if ((controls.meth is not 'dual') and             # <<<<<<<<<<<<<<
 *             ((controls.obj_ll > -double_MAX) or
 *              (controls.obj_ul < +double_MAX))):
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_controls), __pyx_n_s_meth); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 728; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__pyx_t_1 != __pyx_n_s_dual);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":729
 *         """Solve LP problem with the simplex method"""
 *         if ((controls.meth is not 'dual') and
 *             ((controls.obj_ll > -double_MAX) or             # <<<<<<<<<<<<<<
 *              (controls.obj_ul < +double_MAX))):
 *                 raise ValueError("Objective function limits only with dual " +
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_controls), __pyx_n_s_obj_ll); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyFloat_FromDouble((-__pyx_v_8ecyglpki_double_MAX)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyObject_RichCompare(__pyx_t_1, __pyx_t_3, Py_GT); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 729; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (!__pyx_t_5) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":730
 *         if ((controls.meth is not 'dual') and
 *             ((controls.obj_ll > -double_MAX) or
 *              (controls.obj_ul < +double_MAX))):             # <<<<<<<<<<<<<<
 *                 raise ValueError("Objective function limits only with dual " +
 *                                  "simplex.")
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_controls), __pyx_n_s_obj_ul); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyFloat_FromDouble(__pyx_v_8ecyglpki_double_MAX); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_1 = PyObject_RichCompare(__pyx_t_4, __pyx_t_3, Py_LT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_6 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_6 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 730; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_7 = __pyx_t_6;
    } else {
      __pyx_t_7 = __pyx_t_5;
    }
    __pyx_t_5 = __pyx_t_7;
  } else {
    __pyx_t_5 = __pyx_t_2;
  }
  if (__pyx_t_5) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":731
 *             ((controls.obj_ll > -double_MAX) or
 *              (controls.obj_ul < +double_MAX))):
 *                 raise ValueError("Objective function limits only with dual " +             # <<<<<<<<<<<<<<
 *                                  "simplex.")
 *         cdef int retcode = glpk.simplex(self._prob, &controls._smcp)
 */
    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_Objective_function_limits_only_w, __pyx_kp_s_simplex); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 731; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":733
 *                 raise ValueError("Objective function limits only with dual " +
 *                                  "simplex.")
 *         cdef int retcode = glpk.simplex(self._prob, &controls._smcp)             # <<<<<<<<<<<<<<
 *         if retcode is 0:
 *             return self.get_status()
 */
  __pyx_v_retcode = glp_simplex(__pyx_v_self->_prob, (&__pyx_v_controls->_smcp));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":734
 *                                  "simplex.")
 *         cdef int retcode = glpk.simplex(self._prob, &controls._smcp)
 *         if retcode is 0:             # <<<<<<<<<<<<<<
 *             return self.get_status()
 *         elif retcode in {glpk.EOBJLL, glpk.EOBJUL}:
 */
  __pyx_t_5 = ((__pyx_v_retcode == 0) != 0);
  if (__pyx_t_5) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":735
 *         cdef int retcode = glpk.simplex(self._prob, &controls._smcp)
 *         if retcode is 0:
 *             return self.get_status()             # <<<<<<<<<<<<<<
 *         elif retcode in {glpk.EOBJLL, glpk.EOBJUL}:
 *             return smretcode2str[retcode]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_status); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 735; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":736
 *         if retcode is 0:
 *             return self.get_status()
 *         elif retcode in {glpk.EOBJLL, glpk.EOBJUL}:             # <<<<<<<<<<<<<<
 *             return smretcode2str[retcode]
 *         else:
 */
  switch (__pyx_v_retcode) {
    case GLP_EOBJLL:
    case GLP_EOBJUL:
    __pyx_t_5 = 1;
    break;
    default:
    __pyx_t_5 = 0;
    break;
  }
  __pyx_t_2 = (__pyx_t_5 != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":737
 *             return self.get_status()
 *         elif retcode in {glpk.EOBJLL, glpk.EOBJUL}:
 *             return smretcode2str[retcode]             # <<<<<<<<<<<<<<
 *         else:
 *             raise smretcode2error[retcode]
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_smretcode2str, __pyx_v_retcode, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 737; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":739
 *             return smretcode2str[retcode]
 *         else:
 *             raise smretcode2error[retcode]             # <<<<<<<<<<<<<<
 * 
 *     def exact(self, SimplexControls controls):
 */
    __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_smretcode2error, __pyx_v_retcode, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 739; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":726
 *         glpk.cpx_basis(self._prob)
 * 
 *     def simplex(self, SimplexControls controls):             # <<<<<<<<<<<<<<
 *         """Solve LP problem with the simplex method"""
 *         if ((controls.meth is not 'dual') and
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Problem.simplex", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":741
 *             raise smretcode2error[retcode]
 * 
 *     def exact(self, SimplexControls controls):             # <<<<<<<<<<<<<<
 *         """Solve LP problem in exact arithmetic"""
 *         if controls.meth is not 'primal':
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_133exact(PyObject *__pyx_v_self, PyObject *__pyx_v_controls); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_132exact[] = "Problem.exact(self, SimplexControls controls)\nSolve LP problem in exact arithmetic";
static PyObject *__pyx_pw_8ecyglpki_7Problem_133exact(PyObject *__pyx_v_self, PyObject *__pyx_v_controls) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("exact (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_controls), __pyx_ptype_8ecyglpki_SimplexControls, 1, "controls", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 741; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_132exact(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((struct __pyx_obj_8ecyglpki_SimplexControls *)__pyx_v_controls));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_132exact(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, struct __pyx_obj_8ecyglpki_SimplexControls *__pyx_v_controls) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("exact", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":743
 *     def exact(self, SimplexControls controls):
 *         """Solve LP problem in exact arithmetic"""
 *         if controls.meth is not 'primal':             # <<<<<<<<<<<<<<
 *             raise ValueError("Only primal simplex with exact arithmetic.")
 *         cdef int retcode = glpk.exact(self._prob, &controls._smcp)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_controls), __pyx_n_s_meth); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 743; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = (__pyx_t_1 != __pyx_n_s_primal);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":744
 *         """Solve LP problem in exact arithmetic"""
 *         if controls.meth is not 'primal':
 *             raise ValueError("Only primal simplex with exact arithmetic.")             # <<<<<<<<<<<<<<
 *         cdef int retcode = glpk.exact(self._prob, &controls._smcp)
 *         if retcode is not 0:
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":745
 *         if controls.meth is not 'primal':
 *             raise ValueError("Only primal simplex with exact arithmetic.")
 *         cdef int retcode = glpk.exact(self._prob, &controls._smcp)             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise smretcode2error[retcode]
 */
  __pyx_v_retcode = glp_exact(__pyx_v_self->_prob, (&__pyx_v_controls->_smcp));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":746
 *             raise ValueError("Only primal simplex with exact arithmetic.")
 *         cdef int retcode = glpk.exact(self._prob, &controls._smcp)
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise smretcode2error[retcode]
 *         return self.get_status()
 */
  __pyx_t_3 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_3) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":747
 *         cdef int retcode = glpk.exact(self._prob, &controls._smcp)
 *         if retcode is not 0:
 *             raise smretcode2error[retcode]             # <<<<<<<<<<<<<<
 *         return self.get_status()
 * 
 */
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_smretcode2error, __pyx_v_retcode, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 747; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":748
 *         if retcode is not 0:
 *             raise smretcode2error[retcode]
 *         return self.get_status()             # <<<<<<<<<<<<<<
 * 
 *     def get_status(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_status); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 748; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_4;
  __pyx_t_4 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":741
 *             raise smretcode2error[retcode]
 * 
 *     def exact(self, SimplexControls controls):             # <<<<<<<<<<<<<<
 *         """Solve LP problem in exact arithmetic"""
 *         if controls.meth is not 'primal':
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Problem.exact", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":750
 *         return self.get_status()
 * 
 *     def get_status(self):             # <<<<<<<<<<<<<<
 *         """Retrieve generic status of basic solution"""
 *         return solstat2str[glpk.get_status(self._prob)]
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_135get_status(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_134get_status[] = "Problem.get_status(self)\nRetrieve generic status of basic solution";
static PyObject *__pyx_pw_8ecyglpki_7Problem_135get_status(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_status (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_134get_status(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_134get_status(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_status", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":752
 *     def get_status(self):
 *         """Retrieve generic status of basic solution"""
 *         return solstat2str[glpk.get_status(self._prob)]             # <<<<<<<<<<<<<<
 * 
 *     def get_prim_stat(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = glp_get_status(__pyx_v_self->_prob);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_solstat2str, __pyx_t_1, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 752; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":750
 *         return self.get_status()
 * 
 *     def get_status(self):             # <<<<<<<<<<<<<<
 *         """Retrieve generic status of basic solution"""
 *         return solstat2str[glpk.get_status(self._prob)]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.get_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":754
 *         return solstat2str[glpk.get_status(self._prob)]
 * 
 *     def get_prim_stat(self):             # <<<<<<<<<<<<<<
 *         """Retrieve status of primal basic solution"""
 *         return solstat2str[glpk.get_prim_stat(self._prob)]
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_137get_prim_stat(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_136get_prim_stat[] = "Problem.get_prim_stat(self)\nRetrieve status of primal basic solution";
static PyObject *__pyx_pw_8ecyglpki_7Problem_137get_prim_stat(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_prim_stat (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_136get_prim_stat(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_136get_prim_stat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_prim_stat", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":756
 *     def get_prim_stat(self):
 *         """Retrieve status of primal basic solution"""
 *         return solstat2str[glpk.get_prim_stat(self._prob)]             # <<<<<<<<<<<<<<
 * 
 *     def get_dual_stat(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = glp_get_prim_stat(__pyx_v_self->_prob);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_solstat2str, __pyx_t_1, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 756; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":754
 *         return solstat2str[glpk.get_status(self._prob)]
 * 
 *     def get_prim_stat(self):             # <<<<<<<<<<<<<<
 *         """Retrieve status of primal basic solution"""
 *         return solstat2str[glpk.get_prim_stat(self._prob)]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.get_prim_stat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":758
 *         return solstat2str[glpk.get_prim_stat(self._prob)]
 * 
 *     def get_dual_stat(self):             # <<<<<<<<<<<<<<
 *         """Retrieve status of dual basic solution"""
 *         return solstat2str[glpk.get_dual_stat(self._prob)]
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_139get_dual_stat(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_138get_dual_stat[] = "Problem.get_dual_stat(self)\nRetrieve status of dual basic solution";
static PyObject *__pyx_pw_8ecyglpki_7Problem_139get_dual_stat(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_dual_stat (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_138get_dual_stat(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_138get_dual_stat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_dual_stat", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":760
 *     def get_dual_stat(self):
 *         """Retrieve status of dual basic solution"""
 *         return solstat2str[glpk.get_dual_stat(self._prob)]             # <<<<<<<<<<<<<<
 * 
 *     def get_obj_val(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = glp_get_dual_stat(__pyx_v_self->_prob);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_solstat2str, __pyx_t_1, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 760; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":758
 *         return solstat2str[glpk.get_prim_stat(self._prob)]
 * 
 *     def get_dual_stat(self):             # <<<<<<<<<<<<<<
 *         """Retrieve status of dual basic solution"""
 *         return solstat2str[glpk.get_dual_stat(self._prob)]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.get_dual_stat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":762
 *         return solstat2str[glpk.get_dual_stat(self._prob)]
 * 
 *     def get_obj_val(self):             # <<<<<<<<<<<<<<
 *         """Retrieve objective value (basic solution)"""
 *         return glpk.get_obj_val(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_141get_obj_val(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_140get_obj_val[] = "Problem.get_obj_val(self)\nRetrieve objective value (basic solution)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_141get_obj_val(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_obj_val (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_140get_obj_val(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_140get_obj_val(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_obj_val", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":764
 *     def get_obj_val(self):
 *         """Retrieve objective value (basic solution)"""
 *         return glpk.get_obj_val(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def get_row_stat(self, row):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(glp_get_obj_val(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 764; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":762
 *         return solstat2str[glpk.get_dual_stat(self._prob)]
 * 
 *     def get_obj_val(self):             # <<<<<<<<<<<<<<
 *         """Retrieve objective value (basic solution)"""
 *         return glpk.get_obj_val(self._prob)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.get_obj_val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":766
 *         return glpk.get_obj_val(self._prob)
 * 
 *     def get_row_stat(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row status"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_143get_row_stat(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_142get_row_stat[] = "Problem.get_row_stat(self, row)\nRetrieve row status";
static PyObject *__pyx_pw_8ecyglpki_7Problem_143get_row_stat(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_row_stat (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_142get_row_stat(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_142get_row_stat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_row_stat", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":768
 *     def get_row_stat(self, row):
 *         """Retrieve row status"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         return varstat2str[glpk.get_row_stat(self._prob, row)]
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 768; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":769
 *         """Retrieve row status"""
 *         row = self.find_row_as_needed(row)
 *         return varstat2str[glpk.get_row_stat(self._prob, row)]             # <<<<<<<<<<<<<<
 * 
 *     def get_row_prim(self, row):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = glp_get_row_stat(__pyx_v_self->_prob, __pyx_t_4);
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_varstat2str, __pyx_t_5, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 769; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":766
 *         return glpk.get_obj_val(self._prob)
 * 
 *     def get_row_stat(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row status"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_stat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":771
 *         return varstat2str[glpk.get_row_stat(self._prob, row)]
 * 
 *     def get_row_prim(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row primal value (basic solution)"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_145get_row_prim(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_144get_row_prim[] = "Problem.get_row_prim(self, row)\nRetrieve row primal value (basic solution)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_145get_row_prim(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_row_prim (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_144get_row_prim(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_144get_row_prim(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_row_prim", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":773
 *     def get_row_prim(self, row):
 *         """Retrieve row primal value (basic solution)"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         return glpk.get_row_prim(self._prob, row)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 773; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":774
 *         """Retrieve row primal value (basic solution)"""
 *         row = self.find_row_as_needed(row)
 *         return glpk.get_row_prim(self._prob, row)             # <<<<<<<<<<<<<<
 * 
 *     def get_row_dual(self, row):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyFloat_FromDouble(glp_get_row_prim(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 774; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":771
 *         return varstat2str[glpk.get_row_stat(self._prob, row)]
 * 
 *     def get_row_prim(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row primal value (basic solution)"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_prim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":776
 *         return glpk.get_row_prim(self._prob, row)
 * 
 *     def get_row_dual(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row dual value (basic solution)"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_147get_row_dual(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_146get_row_dual[] = "Problem.get_row_dual(self, row)\nRetrieve row dual value (basic solution)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_147get_row_dual(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_row_dual (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_146get_row_dual(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_146get_row_dual(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_row_dual", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":778
 *     def get_row_dual(self, row):
 *         """Retrieve row dual value (basic solution)"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         return glpk.get_row_dual(self._prob, row)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 778; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":779
 *         """Retrieve row dual value (basic solution)"""
 *         row = self.find_row_as_needed(row)
 *         return glpk.get_row_dual(self._prob, row)             # <<<<<<<<<<<<<<
 * 
 *     def get_col_stat(self, col):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyFloat_FromDouble(glp_get_row_dual(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 779; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":776
 *         return glpk.get_row_prim(self._prob, row)
 * 
 *     def get_row_dual(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row dual value (basic solution)"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_dual", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":781
 *         return glpk.get_row_dual(self._prob, row)
 * 
 *     def get_col_stat(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column status"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_149get_col_stat(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_148get_col_stat[] = "Problem.get_col_stat(self, col)\nRetrieve column status";
static PyObject *__pyx_pw_8ecyglpki_7Problem_149get_col_stat(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_col_stat (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_148get_col_stat(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_148get_col_stat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_col_stat", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":783
 *     def get_col_stat(self, col):
 *         """Retrieve column status"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         return varstat2str[glpk.get_col_stat(self._prob, col)]
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 783; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":784
 *         """Retrieve column status"""
 *         col = self.find_col_as_needed(col)
 *         return varstat2str[glpk.get_col_stat(self._prob, col)]             # <<<<<<<<<<<<<<
 * 
 *     def get_col_prim(self, col):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = glp_get_col_stat(__pyx_v_self->_prob, __pyx_t_4);
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_varstat2str, __pyx_t_5, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 784; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":781
 *         return glpk.get_row_dual(self._prob, row)
 * 
 *     def get_col_stat(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column status"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_col_stat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":786
 *         return varstat2str[glpk.get_col_stat(self._prob, col)]
 * 
 *     def get_col_prim(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column primal value (basic solution)"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_151get_col_prim(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_150get_col_prim[] = "Problem.get_col_prim(self, col)\nRetrieve column primal value (basic solution)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_151get_col_prim(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_col_prim (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_150get_col_prim(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_150get_col_prim(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_col_prim", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":788
 *     def get_col_prim(self, col):
 *         """Retrieve column primal value (basic solution)"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         return glpk.get_col_prim(self._prob, col)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 788; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":789
 *         """Retrieve column primal value (basic solution)"""
 *         col = self.find_col_as_needed(col)
 *         return glpk.get_col_prim(self._prob, col)             # <<<<<<<<<<<<<<
 * 
 *     def get_col_dual(self, col):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyFloat_FromDouble(glp_get_col_prim(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 789; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":786
 *         return varstat2str[glpk.get_col_stat(self._prob, col)]
 * 
 *     def get_col_prim(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column primal value (basic solution)"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_col_prim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":791
 *         return glpk.get_col_prim(self._prob, col)
 * 
 *     def get_col_dual(self, col):             # <<<<<<<<<<<<<<
 *         """retrieve column dual value (basic solution)"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_153get_col_dual(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_152get_col_dual[] = "Problem.get_col_dual(self, col)\nretrieve column dual value (basic solution)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_153get_col_dual(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_col_dual (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_152get_col_dual(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_152get_col_dual(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_col_dual", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":793
 *     def get_col_dual(self, col):
 *         """retrieve column dual value (basic solution)"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         return glpk.get_col_dual(self._prob, col)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 793; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":794
 *         """retrieve column dual value (basic solution)"""
 *         col = self.find_col_as_needed(col)
 *         return glpk.get_col_dual(self._prob, col)             # <<<<<<<<<<<<<<
 * 
 *     def get_unbnd_ray(self, names_preferred=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyFloat_FromDouble(glp_get_col_dual(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 794; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":791
 *         return glpk.get_col_prim(self._prob, col)
 * 
 *     def get_col_dual(self, col):             # <<<<<<<<<<<<<<
 *         """retrieve column dual value (basic solution)"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_col_dual", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":796
 *         return glpk.get_col_dual(self._prob, col)
 * 
 *     def get_unbnd_ray(self, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Determine variable causing unboundedness"""
 *         return self.get_row_or_col_name_if(glpk.get_unbnd_ray(self._prob),
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_155get_unbnd_ray(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_154get_unbnd_ray[] = "Problem.get_unbnd_ray(self, names_preferred=False)\nDetermine variable causing unboundedness";
static PyObject *__pyx_pw_8ecyglpki_7Problem_155get_unbnd_ray(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_unbnd_ray (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_names_preferred,0};
    PyObject* values[1] = {0};
    values[0] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[0] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_unbnd_ray") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_names_preferred = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_unbnd_ray", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 796; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.get_unbnd_ray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_154get_unbnd_ray(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_names_preferred);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_154get_unbnd_ray(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_names_preferred) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_unbnd_ray", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":798
 *     def get_unbnd_ray(self, names_preferred=False):
 *         """Determine variable causing unboundedness"""
 *         return self.get_row_or_col_name_if(glpk.get_unbnd_ray(self._prob),             # <<<<<<<<<<<<<<
 *                                            names_preferred)
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(glp_get_unbnd_ray(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":799
 *         """Determine variable causing unboundedness"""
 *         return self.get_row_or_col_name_if(glpk.get_unbnd_ray(self._prob),
 *                                            names_preferred)             # <<<<<<<<<<<<<<
 * 
 *     def interior(self, IPointControls controls):
 */
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_names_preferred);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_names_preferred);
  __Pyx_GIVEREF(__pyx_v_names_preferred);
  __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":798
 *     def get_unbnd_ray(self, names_preferred=False):
 *         """Determine variable causing unboundedness"""
 *         return self.get_row_or_col_name_if(glpk.get_unbnd_ray(self._prob),             # <<<<<<<<<<<<<<
 *                                            names_preferred)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 798; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":796
 *         return glpk.get_col_dual(self._prob, col)
 * 
 *     def get_unbnd_ray(self, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Determine variable causing unboundedness"""
 *         return self.get_row_or_col_name_if(glpk.get_unbnd_ray(self._prob),
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_unbnd_ray", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":801
 *                                            names_preferred)
 * 
 *     def interior(self, IPointControls controls):             # <<<<<<<<<<<<<<
 *         """Solve LP problem with the interior-point method"""
 *         cdef int retcode = glpk.interior(self._prob, &controls._iptcp)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_157interior(PyObject *__pyx_v_self, PyObject *__pyx_v_controls); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_156interior[] = "Problem.interior(self, IPointControls controls)\nSolve LP problem with the interior-point method";
static PyObject *__pyx_pw_8ecyglpki_7Problem_157interior(PyObject *__pyx_v_self, PyObject *__pyx_v_controls) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("interior (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_controls), __pyx_ptype_8ecyglpki_IPointControls, 1, "controls", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 801; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_156interior(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((struct __pyx_obj_8ecyglpki_IPointControls *)__pyx_v_controls));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_156interior(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, struct __pyx_obj_8ecyglpki_IPointControls *__pyx_v_controls) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("interior", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":803
 *     def interior(self, IPointControls controls):
 *         """Solve LP problem with the interior-point method"""
 *         cdef int retcode = glpk.interior(self._prob, &controls._iptcp)             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise iptretcode2error[retcode]
 */
  __pyx_v_retcode = glp_interior(__pyx_v_self->_prob, (&__pyx_v_controls->_iptcp));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":804
 *         """Solve LP problem with the interior-point method"""
 *         cdef int retcode = glpk.interior(self._prob, &controls._iptcp)
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise iptretcode2error[retcode]
 *         return self.ipt_status()
 */
  __pyx_t_1 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":805
 *         cdef int retcode = glpk.interior(self._prob, &controls._iptcp)
 *         if retcode is not 0:
 *             raise iptretcode2error[retcode]             # <<<<<<<<<<<<<<
 *         return self.ipt_status()
 * 
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_iptretcode2error, __pyx_v_retcode, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 805; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":806
 *         if retcode is not 0:
 *             raise iptretcode2error[retcode]
 *         return self.ipt_status()             # <<<<<<<<<<<<<<
 * 
 *     def ipt_status(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ipt_status); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 806; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":801
 *                                            names_preferred)
 * 
 *     def interior(self, IPointControls controls):             # <<<<<<<<<<<<<<
 *         """Solve LP problem with the interior-point method"""
 *         cdef int retcode = glpk.interior(self._prob, &controls._iptcp)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.interior", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":808
 *         return self.ipt_status()
 * 
 *     def ipt_status(self):             # <<<<<<<<<<<<<<
 *         """Retrieve status of interior-point solution"""
 *         return solstat2str[glpk.ipt_status(self._prob)]
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_159ipt_status(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_158ipt_status[] = "Problem.ipt_status(self)\nRetrieve status of interior-point solution";
static PyObject *__pyx_pw_8ecyglpki_7Problem_159ipt_status(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ipt_status (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_158ipt_status(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_158ipt_status(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ipt_status", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":810
 *     def ipt_status(self):
 *         """Retrieve status of interior-point solution"""
 *         return solstat2str[glpk.ipt_status(self._prob)]             # <<<<<<<<<<<<<<
 * 
 *     def ipt_obj_val(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = glp_ipt_status(__pyx_v_self->_prob);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_solstat2str, __pyx_t_1, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 810; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":808
 *         return self.ipt_status()
 * 
 *     def ipt_status(self):             # <<<<<<<<<<<<<<
 *         """Retrieve status of interior-point solution"""
 *         return solstat2str[glpk.ipt_status(self._prob)]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.ipt_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":812
 *         return solstat2str[glpk.ipt_status(self._prob)]
 * 
 *     def ipt_obj_val(self):             # <<<<<<<<<<<<<<
 *         """Retrieve objective value (interior point)"""
 *         return glpk.ipt_obj_val(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_161ipt_obj_val(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_160ipt_obj_val[] = "Problem.ipt_obj_val(self)\nRetrieve objective value (interior point)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_161ipt_obj_val(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ipt_obj_val (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_160ipt_obj_val(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_160ipt_obj_val(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ipt_obj_val", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":814
 *     def ipt_obj_val(self):
 *         """Retrieve objective value (interior point)"""
 *         return glpk.ipt_obj_val(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def ipt_row_prim(self, row):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(glp_ipt_obj_val(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 814; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":812
 *         return solstat2str[glpk.ipt_status(self._prob)]
 * 
 *     def ipt_obj_val(self):             # <<<<<<<<<<<<<<
 *         """Retrieve objective value (interior point)"""
 *         return glpk.ipt_obj_val(self._prob)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.ipt_obj_val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":816
 *         return glpk.ipt_obj_val(self._prob)
 * 
 *     def ipt_row_prim(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row primal value (interior point)"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_163ipt_row_prim(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_162ipt_row_prim[] = "Problem.ipt_row_prim(self, row)\nRetrieve row primal value (interior point)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_163ipt_row_prim(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ipt_row_prim (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_162ipt_row_prim(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_162ipt_row_prim(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ipt_row_prim", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":818
 *     def ipt_row_prim(self, row):
 *         """Retrieve row primal value (interior point)"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         return glpk.ipt_row_prim(self._prob, row)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 818; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":819
 *         """Retrieve row primal value (interior point)"""
 *         row = self.find_row_as_needed(row)
 *         return glpk.ipt_row_prim(self._prob, row)             # <<<<<<<<<<<<<<
 * 
 *     def ipt_row_dual(self, row):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyFloat_FromDouble(glp_ipt_row_prim(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 819; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":816
 *         return glpk.ipt_obj_val(self._prob)
 * 
 *     def ipt_row_prim(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row primal value (interior point)"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.ipt_row_prim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":821
 *         return glpk.ipt_row_prim(self._prob, row)
 * 
 *     def ipt_row_dual(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row dual value (interior point)"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_165ipt_row_dual(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_164ipt_row_dual[] = "Problem.ipt_row_dual(self, row)\nRetrieve row dual value (interior point)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_165ipt_row_dual(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ipt_row_dual (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_164ipt_row_dual(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_164ipt_row_dual(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ipt_row_dual", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":823
 *     def ipt_row_dual(self, row):
 *         """Retrieve row dual value (interior point)"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         return glpk.ipt_row_dual(self._prob, row)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 823; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":824
 *         """Retrieve row dual value (interior point)"""
 *         row = self.find_row_as_needed(row)
 *         return glpk.ipt_row_dual(self._prob, row)             # <<<<<<<<<<<<<<
 * 
 *     def ipt_col_prim(self, col):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyFloat_FromDouble(glp_ipt_row_dual(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 824; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":821
 *         return glpk.ipt_row_prim(self._prob, row)
 * 
 *     def ipt_row_dual(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row dual value (interior point)"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.ipt_row_dual", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":826
 *         return glpk.ipt_row_dual(self._prob, row)
 * 
 *     def ipt_col_prim(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column primal value (interior point)"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_167ipt_col_prim(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_166ipt_col_prim[] = "Problem.ipt_col_prim(self, col)\nRetrieve column primal value (interior point)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_167ipt_col_prim(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ipt_col_prim (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_166ipt_col_prim(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_166ipt_col_prim(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ipt_col_prim", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":828
 *     def ipt_col_prim(self, col):
 *         """Retrieve column primal value (interior point)"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         return glpk.ipt_col_prim(self._prob, col)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 828; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":829
 *         """Retrieve column primal value (interior point)"""
 *         col = self.find_col_as_needed(col)
 *         return glpk.ipt_col_prim(self._prob, col)             # <<<<<<<<<<<<<<
 * 
 *     def ipt_col_dual(self, col):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyFloat_FromDouble(glp_ipt_col_prim(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 829; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":826
 *         return glpk.ipt_row_dual(self._prob, row)
 * 
 *     def ipt_col_prim(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column primal value (interior point)"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.ipt_col_prim", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":831
 *         return glpk.ipt_col_prim(self._prob, col)
 * 
 *     def ipt_col_dual(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column dual value (interior point)"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_169ipt_col_dual(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_168ipt_col_dual[] = "Problem.ipt_col_dual(self, col)\nRetrieve column dual value (interior point)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_169ipt_col_dual(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ipt_col_dual (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_168ipt_col_dual(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_168ipt_col_dual(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ipt_col_dual", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":833
 *     def ipt_col_dual(self, col):
 *         """Retrieve column dual value (interior point)"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         return glpk.ipt_col_dual(self._prob, col)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 833; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":834
 *         """Retrieve column dual value (interior point)"""
 *         col = self.find_col_as_needed(col)
 *         return glpk.ipt_col_dual(self._prob, col)             # <<<<<<<<<<<<<<
 * 
 *     def set_col_kind(self, col, str kind):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyFloat_FromDouble(glp_ipt_col_dual(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 834; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":831
 *         return glpk.ipt_col_prim(self._prob, col)
 * 
 *     def ipt_col_dual(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column dual value (interior point)"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.ipt_col_dual", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":836
 *         return glpk.ipt_col_dual(self._prob, col)
 * 
 *     def set_col_kind(self, col, str kind):             # <<<<<<<<<<<<<<
 *         """Set (change) column kind"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_171set_col_kind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_170set_col_kind[] = "Problem.set_col_kind(self, col, str kind)\nSet (change) column kind";
static PyObject *__pyx_pw_8ecyglpki_7Problem_171set_col_kind(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_col = 0;
  PyObject *__pyx_v_kind = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_col_kind (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_col,&__pyx_n_s_kind,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_col)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_kind)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_col_kind", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_col_kind") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_col = values[0];
    __pyx_v_kind = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_col_kind", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.set_col_kind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_kind), (&PyString_Type), 1, "kind", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 836; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_170set_col_kind(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_col, __pyx_v_kind);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_170set_col_kind(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_kind) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_col_kind", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":838
 *     def set_col_kind(self, col, str kind):
 *         """Set (change) column kind"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         glpk.set_col_kind(self._prob, col, str2varkind[kind])
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 838; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":839
 *         """Set (change) column kind"""
 *         col = self.find_col_as_needed(col)
 *         glpk.set_col_kind(self._prob, col, str2varkind[kind])             # <<<<<<<<<<<<<<
 * 
 *     def get_col_kind(self, col):
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyObject_GetItem(__pyx_v_8ecyglpki_str2varkind, __pyx_v_kind); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 839; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  glp_set_col_kind(__pyx_v_self->_prob, __pyx_t_4, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":836
 *         return glpk.ipt_col_dual(self._prob, col)
 * 
 *     def set_col_kind(self, col, str kind):             # <<<<<<<<<<<<<<
 *         """Set (change) column kind"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.set_col_kind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":841
 *         glpk.set_col_kind(self._prob, col, str2varkind[kind])
 * 
 *     def get_col_kind(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column kind; returns varkind"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_173get_col_kind(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_172get_col_kind[] = "Problem.get_col_kind(self, col)\nRetrieve column kind; returns varkind";
static PyObject *__pyx_pw_8ecyglpki_7Problem_173get_col_kind(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_col_kind (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_172get_col_kind(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_172get_col_kind(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_col_kind", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":843
 *     def get_col_kind(self, col):
 *         """Retrieve column kind; returns varkind"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         return varkind2str[glpk.get_col_kind(self._prob, col)]
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 843; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":844
 *         """Retrieve column kind; returns varkind"""
 *         col = self.find_col_as_needed(col)
 *         return varkind2str[glpk.get_col_kind(self._prob, col)]             # <<<<<<<<<<<<<<
 * 
 *     def get_num_int(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = glp_get_col_kind(__pyx_v_self->_prob, __pyx_t_4);
  __pyx_t_3 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_varkind2str, __pyx_t_5, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 844; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":841
 *         glpk.set_col_kind(self._prob, col, str2varkind[kind])
 * 
 *     def get_col_kind(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column kind; returns varkind"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_col_kind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":846
 *         return varkind2str[glpk.get_col_kind(self._prob, col)]
 * 
 *     def get_num_int(self):             # <<<<<<<<<<<<<<
 *         """Retrieve number of integer columns"""
 *         return glpk.get_num_int(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_175get_num_int(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_174get_num_int[] = "Problem.get_num_int(self)\nRetrieve number of integer columns";
static PyObject *__pyx_pw_8ecyglpki_7Problem_175get_num_int(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_num_int (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_174get_num_int(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_174get_num_int(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_num_int", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":848
 *     def get_num_int(self):
 *         """Retrieve number of integer columns"""
 *         return glpk.get_num_int(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def get_num_bin(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_get_num_int(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 848; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":846
 *         return varkind2str[glpk.get_col_kind(self._prob, col)]
 * 
 *     def get_num_int(self):             # <<<<<<<<<<<<<<
 *         """Retrieve number of integer columns"""
 *         return glpk.get_num_int(self._prob)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.get_num_int", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":850
 *         return glpk.get_num_int(self._prob)
 * 
 *     def get_num_bin(self):             # <<<<<<<<<<<<<<
 *         """Retrieve number of binary columns"""
 *         return glpk.get_num_bin(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_177get_num_bin(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_176get_num_bin[] = "Problem.get_num_bin(self)\nRetrieve number of binary columns";
static PyObject *__pyx_pw_8ecyglpki_7Problem_177get_num_bin(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_num_bin (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_176get_num_bin(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_176get_num_bin(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_num_bin", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":852
 *     def get_num_bin(self):
 *         """Retrieve number of binary columns"""
 *         return glpk.get_num_bin(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def intopt(self, IntOptControls controls):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_get_num_bin(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 852; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":850
 *         return glpk.get_num_int(self._prob)
 * 
 *     def get_num_bin(self):             # <<<<<<<<<<<<<<
 *         """Retrieve number of binary columns"""
 *         return glpk.get_num_bin(self._prob)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.get_num_bin", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":854
 *         return glpk.get_num_bin(self._prob)
 * 
 *     def intopt(self, IntOptControls controls):             # <<<<<<<<<<<<<<
 *         """Solve MIP problem with the branch-and-bound method"""
 *         cdef int retcode = glpk.intopt(self._prob, &controls._iocp)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_179intopt(PyObject *__pyx_v_self, PyObject *__pyx_v_controls); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_178intopt[] = "Problem.intopt(self, IntOptControls controls)\nSolve MIP problem with the branch-and-bound method";
static PyObject *__pyx_pw_8ecyglpki_7Problem_179intopt(PyObject *__pyx_v_self, PyObject *__pyx_v_controls) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("intopt (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_controls), __pyx_ptype_8ecyglpki_IntOptControls, 1, "controls", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 854; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_178intopt(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((struct __pyx_obj_8ecyglpki_IntOptControls *)__pyx_v_controls));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_178intopt(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, struct __pyx_obj_8ecyglpki_IntOptControls *__pyx_v_controls) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("intopt", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":856
 *     def intopt(self, IntOptControls controls):
 *         """Solve MIP problem with the branch-and-bound method"""
 *         cdef int retcode = glpk.intopt(self._prob, &controls._iocp)             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]
 */
  __pyx_v_retcode = glp_intopt(__pyx_v_self->_prob, (&__pyx_v_controls->_iocp));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":857
 *         """Solve MIP problem with the branch-and-bound method"""
 *         cdef int retcode = glpk.intopt(self._prob, &controls._iocp)
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise ioretcode2error[retcode]
 *         return self.mip_status()
 */
  __pyx_t_1 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":858
 *         cdef int retcode = glpk.intopt(self._prob, &controls._iocp)
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]             # <<<<<<<<<<<<<<
 *         return self.mip_status()
 * 
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_ioretcode2error, __pyx_v_retcode, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 858; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":859
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]
 *         return self.mip_status()             # <<<<<<<<<<<<<<
 * 
 *     def mip_status(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mip_status); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 859; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":854
 *         return glpk.get_num_bin(self._prob)
 * 
 *     def intopt(self, IntOptControls controls):             # <<<<<<<<<<<<<<
 *         """Solve MIP problem with the branch-and-bound method"""
 *         cdef int retcode = glpk.intopt(self._prob, &controls._iocp)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.intopt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":861
 *         return self.mip_status()
 * 
 *     def mip_status(self):             # <<<<<<<<<<<<<<
 *         """Retrieve status of MIP solution"""
 *         return solstat2str[glpk.mip_status(self._prob)]
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_181mip_status(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_180mip_status[] = "Problem.mip_status(self)\nRetrieve status of MIP solution";
static PyObject *__pyx_pw_8ecyglpki_7Problem_181mip_status(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mip_status (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_180mip_status(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_180mip_status(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mip_status", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":863
 *     def mip_status(self):
 *         """Retrieve status of MIP solution"""
 *         return solstat2str[glpk.mip_status(self._prob)]             # <<<<<<<<<<<<<<
 * 
 *     def mip_obj_val(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = glp_mip_status(__pyx_v_self->_prob);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_solstat2str, __pyx_t_1, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 863; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":861
 *         return self.mip_status()
 * 
 *     def mip_status(self):             # <<<<<<<<<<<<<<
 *         """Retrieve status of MIP solution"""
 *         return solstat2str[glpk.mip_status(self._prob)]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.mip_status", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":865
 *         return solstat2str[glpk.mip_status(self._prob)]
 * 
 *     def mip_obj_val(self):             # <<<<<<<<<<<<<<
 *         """Retrieve objective value (MIP solution)"""
 *         return glpk.mip_obj_val(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_183mip_obj_val(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_182mip_obj_val[] = "Problem.mip_obj_val(self)\nRetrieve objective value (MIP solution)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_183mip_obj_val(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mip_obj_val (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_182mip_obj_val(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_182mip_obj_val(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mip_obj_val", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":867
 *     def mip_obj_val(self):
 *         """Retrieve objective value (MIP solution)"""
 *         return glpk.mip_obj_val(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def mip_row_val(self, row):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(glp_mip_obj_val(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 867; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":865
 *         return solstat2str[glpk.mip_status(self._prob)]
 * 
 *     def mip_obj_val(self):             # <<<<<<<<<<<<<<
 *         """Retrieve objective value (MIP solution)"""
 *         return glpk.mip_obj_val(self._prob)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.mip_obj_val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":869
 *         return glpk.mip_obj_val(self._prob)
 * 
 *     def mip_row_val(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row value (MIP solution)"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_185mip_row_val(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_184mip_row_val[] = "Problem.mip_row_val(self, row)\nRetrieve row value (MIP solution)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_185mip_row_val(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mip_row_val (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_184mip_row_val(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_184mip_row_val(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mip_row_val", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":871
 *     def mip_row_val(self, row):
 *         """Retrieve row value (MIP solution)"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         return glpk.mip_row_val(self._prob, row)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 871; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":872
 *         """Retrieve row value (MIP solution)"""
 *         row = self.find_row_as_needed(row)
 *         return glpk.mip_row_val(self._prob, row)             # <<<<<<<<<<<<<<
 * 
 *     def mip_col_val(self, col):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyFloat_FromDouble(glp_mip_row_val(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 872; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":869
 *         return glpk.mip_obj_val(self._prob)
 * 
 *     def mip_row_val(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row value (MIP solution)"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.mip_row_val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":874
 *         return glpk.mip_row_val(self._prob, row)
 * 
 *     def mip_col_val(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column value (MIP solution)"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_187mip_col_val(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_186mip_col_val[] = "Problem.mip_col_val(self, col)\nRetrieve column value (MIP solution)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_187mip_col_val(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mip_col_val (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_186mip_col_val(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_186mip_col_val(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mip_col_val", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":876
 *     def mip_col_val(self, col):
 *         """Retrieve column value (MIP solution)"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         return glpk.mip_col_val(self._prob, col)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 876; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":877
 *         """Retrieve column value (MIP solution)"""
 *         col = self.find_col_as_needed(col)
 *         return glpk.mip_col_val(self._prob, col)             # <<<<<<<<<<<<<<
 * 
 *     def check_kkt(self, str solver, str condition, bint dual=False,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyFloat_FromDouble(glp_mip_col_val(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 877; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":874
 *         return glpk.mip_row_val(self._prob, row)
 * 
 *     def mip_col_val(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column value (MIP solution)"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.mip_col_val", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":879
 *         return glpk.mip_col_val(self._prob, col)
 * 
 *     def check_kkt(self, str solver, str condition, bint dual=False,             # <<<<<<<<<<<<<<
 *                   names_preferred=False):
 *         """Check feasibility/optimality conditions"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_189check_kkt(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_188check_kkt[] = "Problem.check_kkt(self, str solver, str condition, bool dual=False, names_preferred=False)\nCheck feasibility/optimality conditions";
static PyObject *__pyx_pw_8ecyglpki_7Problem_189check_kkt(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_solver = 0;
  PyObject *__pyx_v_condition = 0;
  int __pyx_v_dual;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("check_kkt (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_solver,&__pyx_n_s_condition,&__pyx_n_s_dual,&__pyx_n_s_names_preferred,0};
    PyObject* values[4] = {0,0,0,0};

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":880
 * 
 *     def check_kkt(self, str solver, str condition, bint dual=False,
 *                   names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Check feasibility/optimality conditions"""
 *         if dual and (solver is 'intopt'):
 */
    values[3] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_solver)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_condition)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("check_kkt", 0, 2, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_dual);
          if (value) { values[2] = value; kw_args--; }
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "check_kkt") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_solver = ((PyObject*)values[0]);
    __pyx_v_condition = ((PyObject*)values[1]);
    if (values[2]) {
      __pyx_v_dual = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_dual == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    } else {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":879
 *         return glpk.mip_col_val(self._prob, col)
 * 
 *     def check_kkt(self, str solver, str condition, bint dual=False,             # <<<<<<<<<<<<<<
 *                   names_preferred=False):
 *         """Check feasibility/optimality conditions"""
 */
      __pyx_v_dual = ((int)0);
    }
    __pyx_v_names_preferred = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("check_kkt", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.check_kkt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_solver), (&PyString_Type), 1, "solver", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_condition), (&PyString_Type), 1, "condition", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 879; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_188check_kkt(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_solver, __pyx_v_condition, __pyx_v_dual, __pyx_v_names_preferred);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_188check_kkt(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_solver, PyObject *__pyx_v_condition, int __pyx_v_dual, PyObject *__pyx_v_names_preferred) {
  int __pyx_v_sol;
  int __pyx_v_cond;
  double __pyx_v_ae_max;
  int __pyx_v_ae_ind;
  double __pyx_v_re_max;
  int __pyx_v_re_ind;
  PyObject *__pyx_v_ae_id = NULL;
  PyObject *__pyx_v_re_id = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("check_kkt", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":882
 *                   names_preferred=False):
 *         """Check feasibility/optimality conditions"""
 *         if dual and (solver is 'intopt'):             # <<<<<<<<<<<<<<
 *             raise ValueError("Dual conditions cannot be checked for the " +
 *                              "integer optimization solution.")
 */
  if ((__pyx_v_dual != 0)) {
    __pyx_t_1 = (__pyx_v_solver == __pyx_n_s_intopt);
    __pyx_t_2 = (__pyx_t_1 != 0);
  } else {
    __pyx_t_2 = (__pyx_v_dual != 0);
  }
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":883
 *         """Check feasibility/optimality conditions"""
 *         if dual and (solver is 'intopt'):
 *             raise ValueError("Dual conditions cannot be checked for the " +             # <<<<<<<<<<<<<<
 *                              "integer optimization solution.")
 *         cdef int sol = str2solind[solver]
 */
    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Dual_conditions_cannot_be_checke, __pyx_kp_s_integer_optimization_solution); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 883; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":885
 *             raise ValueError("Dual conditions cannot be checked for the " +
 *                              "integer optimization solution.")
 *         cdef int sol = str2solind[solver]             # <<<<<<<<<<<<<<
 *         cdef int cond = pair2condind[(dual, condition)]
 *         cdef double ae_max
 */
  __pyx_t_3 = PyObject_GetItem(__pyx_v_8ecyglpki_str2solind, __pyx_v_solver); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 885; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_sol = __pyx_t_5;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":886
 *                              "integer optimization solution.")
 *         cdef int sol = str2solind[solver]
 *         cdef int cond = pair2condind[(dual, condition)]             # <<<<<<<<<<<<<<
 *         cdef double ae_max
 *         cdef int ae_ind
 */
  __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_v_dual); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_condition);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_condition);
  __Pyx_GIVEREF(__pyx_v_condition);
  __pyx_t_3 = 0;
  __pyx_t_3 = PyObject_GetItem(__pyx_v_8ecyglpki_pair2condind, __pyx_t_4); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 886; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_cond = __pyx_t_5;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":891
 *         cdef double re_max
 *         cdef int re_ind
 *         glpk.check_kkt(self._prob, sol, cond,             # <<<<<<<<<<<<<<
 *                        &ae_max, &ae_ind, &re_max, &re_ind)
 *         if condition is 'equalities':
 */
  glp_check_kkt(__pyx_v_self->_prob, __pyx_v_sol, __pyx_v_cond, (&__pyx_v_ae_max), (&__pyx_v_ae_ind), (&__pyx_v_re_max), (&__pyx_v_re_ind));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":893
 *         glpk.check_kkt(self._prob, sol, cond,
 *                        &ae_max, &ae_ind, &re_max, &re_ind)
 *         if condition is 'equalities':             # <<<<<<<<<<<<<<
 *             if not dual:
 *                 ae_id = 'row', self.get_row_name_if(ae_ind, names_preferred)
 */
  __pyx_t_2 = (__pyx_v_condition == __pyx_n_s_equalities);
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":894
 *                        &ae_max, &ae_ind, &re_max, &re_ind)
 *         if condition is 'equalities':
 *             if not dual:             # <<<<<<<<<<<<<<
 *                 ae_id = 'row', self.get_row_name_if(ae_ind, names_preferred)
 *                 re_id = 'row', self.get_row_name_if(re_ind, names_preferred)
 */
    __pyx_t_1 = ((!(__pyx_v_dual != 0)) != 0);
    if (__pyx_t_1) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":895
 *         if condition is 'equalities':
 *             if not dual:
 *                 ae_id = 'row', self.get_row_name_if(ae_ind, names_preferred)             # <<<<<<<<<<<<<<
 *                 re_id = 'row', self.get_row_name_if(re_ind, names_preferred)
 *             else:
 */
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_name_if); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ae_ind); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_names_preferred);
      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_names_preferred);
      __Pyx_GIVEREF(__pyx_v_names_preferred);
      __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 895; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_n_s_row);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_n_s_row);
      __Pyx_GIVEREF(__pyx_n_s_row);
      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_v_ae_id = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":896
 *             if not dual:
 *                 ae_id = 'row', self.get_row_name_if(ae_ind, names_preferred)
 *                 re_id = 'row', self.get_row_name_if(re_ind, names_preferred)             # <<<<<<<<<<<<<<
 *             else:
 *                 ae_id = 'col', self.get_col_name_if(ae_ind, names_preferred)
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_name_if); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_re_ind); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_names_preferred);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_names_preferred);
      __Pyx_GIVEREF(__pyx_v_names_preferred);
      __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 896; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_n_s_row);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_row);
      __Pyx_GIVEREF(__pyx_n_s_row);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_v_re_id = __pyx_t_3;
      __pyx_t_3 = 0;
      goto __pyx_L5;
    }
    /*else*/ {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":898
 *                 re_id = 'row', self.get_row_name_if(re_ind, names_preferred)
 *             else:
 *                 ae_id = 'col', self.get_col_name_if(ae_ind, names_preferred)             # <<<<<<<<<<<<<<
 *                 re_id = 'col', self.get_col_name_if(re_ind, names_preferred)
 *         elif condition is 'bounds':
 */
      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_col_name_if); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ae_ind); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_names_preferred);
      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_names_preferred);
      __Pyx_GIVEREF(__pyx_v_names_preferred);
      __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 898; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_INCREF(__pyx_n_s_col);
      PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_n_s_col);
      __Pyx_GIVEREF(__pyx_n_s_col);
      PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_v_ae_id = __pyx_t_6;
      __pyx_t_6 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":899
 *             else:
 *                 ae_id = 'col', self.get_col_name_if(ae_ind, names_preferred)
 *                 re_id = 'col', self.get_col_name_if(re_ind, names_preferred)             # <<<<<<<<<<<<<<
 *         elif condition is 'bounds':
 *             ae_id = self.get_row_or_col_name_if(ae_ind, names_preferred)
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_col_name_if); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_re_ind); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_v_names_preferred);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_names_preferred);
      __Pyx_GIVEREF(__pyx_v_names_preferred);
      __pyx_t_4 = 0;
      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 899; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_INCREF(__pyx_n_s_col);
      PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_n_s_col);
      __Pyx_GIVEREF(__pyx_n_s_col);
      PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_4);
      __Pyx_GIVEREF(__pyx_t_4);
      __pyx_t_4 = 0;
      __pyx_v_re_id = __pyx_t_3;
      __pyx_t_3 = 0;
    }
    __pyx_L5:;
    goto __pyx_L4;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":900
 *                 ae_id = 'col', self.get_col_name_if(ae_ind, names_preferred)
 *                 re_id = 'col', self.get_col_name_if(re_ind, names_preferred)
 *         elif condition is 'bounds':             # <<<<<<<<<<<<<<
 *             ae_id = self.get_row_or_col_name_if(ae_ind, names_preferred)
 *             re_id = self.get_row_or_col_name_if(re_ind, names_preferred)
 */
  __pyx_t_1 = (__pyx_v_condition == __pyx_n_s_bounds);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":901
 *                 re_id = 'col', self.get_col_name_if(re_ind, names_preferred)
 *         elif condition is 'bounds':
 *             ae_id = self.get_row_or_col_name_if(ae_ind, names_preferred)             # <<<<<<<<<<<<<<
 *             re_id = self.get_row_or_col_name_if(re_ind, names_preferred)
 *         else:
 */
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_ae_ind); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_names_preferred);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_names_preferred);
    __Pyx_GIVEREF(__pyx_v_names_preferred);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 901; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_v_ae_id = __pyx_t_4;
    __pyx_t_4 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":902
 *         elif condition is 'bounds':
 *             ae_id = self.get_row_or_col_name_if(ae_ind, names_preferred)
 *             re_id = self.get_row_or_col_name_if(re_ind, names_preferred)             # <<<<<<<<<<<<<<
 *         else:
 *             raise ValueError("Condition is either 'equalities' or 'bounds'.")
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_re_ind); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __Pyx_INCREF(__pyx_v_names_preferred);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_names_preferred);
    __Pyx_GIVEREF(__pyx_v_names_preferred);
    __pyx_t_6 = 0;
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_3, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 902; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_re_id = __pyx_t_6;
    __pyx_t_6 = 0;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":904
 *             re_id = self.get_row_or_col_name_if(re_ind, names_preferred)
 *         else:
 *             raise ValueError("Condition is either 'equalities' or 'bounds'.")             # <<<<<<<<<<<<<<
 *         return {'abs': (ae_max, ae_id), 'rel': (re_max, re_id)}
 * 
 */
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__10, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_Raise(__pyx_t_6, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_L4:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":905
 *         else:
 *             raise ValueError("Condition is either 'equalities' or 'bounds'.")
 *         return {'abs': (ae_max, ae_id), 'rel': (re_max, re_id)}             # <<<<<<<<<<<<<<
 * 
 *     def print_sol(self, str fname):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_6 = PyDict_New(); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_6);
  __pyx_t_3 = PyFloat_FromDouble(__pyx_v_ae_max); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __Pyx_INCREF(__pyx_v_ae_id);
  PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_ae_id);
  __Pyx_GIVEREF(__pyx_v_ae_id);
  __pyx_t_3 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_abs, __pyx_t_4) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_t_4 = PyFloat_FromDouble(__pyx_v_re_max); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_re_id);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_re_id);
  __Pyx_GIVEREF(__pyx_v_re_id);
  __pyx_t_4 = 0;
  if (PyDict_SetItem(__pyx_t_6, __pyx_n_s_rel, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 905; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_6;
  __pyx_t_6 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":879
 *         return glpk.mip_col_val(self._prob, col)
 * 
 *     def check_kkt(self, str solver, str condition, bint dual=False,             # <<<<<<<<<<<<<<
 *                   names_preferred=False):
 *         """Check feasibility/optimality conditions"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("ecyglpki.Problem.check_kkt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ae_id);
  __Pyx_XDECREF(__pyx_v_re_id);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":907
 *         return {'abs': (ae_max, ae_id), 'rel': (re_max, re_id)}
 * 
 *     def print_sol(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write basic solution in printable format"""
 *         retcode = glpk.print_sol(self._prob, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_191print_sol(PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_190print_sol[] = "Problem.print_sol(self, str fname)\nWrite basic solution in printable format";
static PyObject *__pyx_pw_8ecyglpki_7Problem_191print_sol(PyObject *__pyx_v_self, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("print_sol (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 907; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_190print_sol(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_190print_sol(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("print_sol", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":909
 *     def print_sol(self, str fname):
 *         """Write basic solution in printable format"""
 *         retcode = glpk.print_sol(self._prob, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing printable basic solution file")
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 909; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_print_sol(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":910
 *         """Write basic solution in printable format"""
 *         retcode = glpk.print_sol(self._prob, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing printable basic solution file")
 * 
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":911
 *         retcode = glpk.print_sol(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing printable basic solution file")             # <<<<<<<<<<<<<<
 * 
 *     def read_sol(self, str fname):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__11, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":907
 *         return {'abs': (ae_max, ae_id), 'rel': (re_max, re_id)}
 * 
 *     def print_sol(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write basic solution in printable format"""
 *         retcode = glpk.print_sol(self._prob, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.print_sol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":913
 *             raise RuntimeError("Error writing printable basic solution file")
 * 
 *     def read_sol(self, str fname):             # <<<<<<<<<<<<<<
 *         """Read basic solution from text file"""
 *         retcode = glpk.read_sol(self._prob, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_193read_sol(PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_192read_sol[] = "Problem.read_sol(self, str fname)\nRead basic solution from text file";
static PyObject *__pyx_pw_8ecyglpki_7Problem_193read_sol(PyObject *__pyx_v_self, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_sol (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 913; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_192read_sol(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_192read_sol(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read_sol", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":915
 *     def read_sol(self, str fname):
 *         """Read basic solution from text file"""
 *         retcode = glpk.read_sol(self._prob, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading basic solution file")
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 915; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_read_sol(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":916
 *         """Read basic solution from text file"""
 *         retcode = glpk.read_sol(self._prob, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error reading basic solution file")
 * 
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":917
 *         retcode = glpk.read_sol(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading basic solution file")             # <<<<<<<<<<<<<<
 * 
 *     def write_sol(self, str fname):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":913
 *             raise RuntimeError("Error writing printable basic solution file")
 * 
 *     def read_sol(self, str fname):             # <<<<<<<<<<<<<<
 *         """Read basic solution from text file"""
 *         retcode = glpk.read_sol(self._prob, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.read_sol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":919
 *             raise RuntimeError("Error reading basic solution file")
 * 
 *     def write_sol(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write basic solution to text file"""
 *         retcode = glpk.write_sol(self._prob, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_195write_sol(PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_194write_sol[] = "Problem.write_sol(self, str fname)\nWrite basic solution to text file";
static PyObject *__pyx_pw_8ecyglpki_7Problem_195write_sol(PyObject *__pyx_v_self, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_sol (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 919; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_194write_sol(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_194write_sol(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write_sol", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":921
 *     def write_sol(self, str fname):
 *         """Write basic solution to text file"""
 *         retcode = glpk.write_sol(self._prob, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing basic solution file")
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 921; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_write_sol(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":922
 *         """Write basic solution to text file"""
 *         retcode = glpk.write_sol(self._prob, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing basic solution file")
 * 
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":923
 *         retcode = glpk.write_sol(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing basic solution file")             # <<<<<<<<<<<<<<
 * 
 *     def print_ranges(self, row_or_cols, str fname):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":919
 *             raise RuntimeError("Error reading basic solution file")
 * 
 *     def write_sol(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write basic solution to text file"""
 *         retcode = glpk.write_sol(self._prob, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.write_sol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":925
 *             raise RuntimeError("Error writing basic solution file")
 * 
 *     def print_ranges(self, row_or_cols, str fname):             # <<<<<<<<<<<<<<
 *         """Print sensitivity analysis report"""
 *         if not isinstance(row_or_cols, collections.abc.Sequence):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_197print_ranges(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_196print_ranges[] = "Problem.print_ranges(self, row_or_cols, str fname)\nPrint sensitivity analysis report";
static PyObject *__pyx_pw_8ecyglpki_7Problem_197print_ranges(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_row_or_cols = 0;
  PyObject *__pyx_v_fname = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("print_ranges (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_row_or_cols,&__pyx_n_s_fname,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_row_or_cols)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("print_ranges", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "print_ranges") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_row_or_cols = values[0];
    __pyx_v_fname = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("print_ranges", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.print_ranges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 925; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_196print_ranges(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_row_or_cols, __pyx_v_fname);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_196print_ranges(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row_or_cols, PyObject *__pyx_v_fname) {
  int __pyx_v_k;
  int *__pyx_v_inds;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_row_or_col = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *(*__pyx_t_10)(PyObject *);
  int __pyx_t_11;
  Py_ssize_t __pyx_t_12;
  char *__pyx_t_13;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("print_ranges", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":927
 *     def print_ranges(self, row_or_cols, str fname):
 *         """Print sensitivity analysis report"""
 *         if not isinstance(row_or_cols, collections.abc.Sequence):             # <<<<<<<<<<<<<<
 *             raise TypeError("'row_or_cols' must be a 'Sequence', not " +
 *                             type(row_or_cols).__name__ + ".")
 */
  __pyx_t_1 = __Pyx_GetModuleGlobalName(__pyx_n_s_collections); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_1, __pyx_n_s_abc); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_Sequence); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = PyObject_IsInstance(__pyx_v_row_or_cols, __pyx_t_1); if (unlikely(__pyx_t_3 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 927; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = ((!(__pyx_t_3 != 0)) != 0);
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":929
 *         if not isinstance(row_or_cols, collections.abc.Sequence):
 *             raise TypeError("'row_or_cols' must be a 'Sequence', not " +
 *                             type(row_or_cols).__name__ + ".")             # <<<<<<<<<<<<<<
 *         cdef int k = len(row_or_cols)
 *         cdef int* inds = <int*>glpk.alloc(1+k, sizeof(int))
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_row_or_cols)), __pyx_n_s_name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":928
 *         """Print sensitivity analysis report"""
 *         if not isinstance(row_or_cols, collections.abc.Sequence):
 *             raise TypeError("'row_or_cols' must be a 'Sequence', not " +             # <<<<<<<<<<<<<<
 *                             type(row_or_cols).__name__ + ".")
 *         cdef int k = len(row_or_cols)
 */
    __pyx_t_2 = PyNumber_Add(__pyx_kp_s_row_or_cols_must_be_a_Sequence, __pyx_t_1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":929
 *         if not isinstance(row_or_cols, collections.abc.Sequence):
 *             raise TypeError("'row_or_cols' must be a 'Sequence', not " +
 *                             type(row_or_cols).__name__ + ".")             # <<<<<<<<<<<<<<
 *         cdef int k = len(row_or_cols)
 *         cdef int* inds = <int*>glpk.alloc(1+k, sizeof(int))
 */
    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_kp_s__4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 929; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":928
 *         """Print sensitivity analysis report"""
 *         if not isinstance(row_or_cols, collections.abc.Sequence):
 *             raise TypeError("'row_or_cols' must be a 'Sequence', not " +             # <<<<<<<<<<<<<<
 *                             type(row_or_cols).__name__ + ".")
 *         cdef int k = len(row_or_cols)
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 928; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":930
 *             raise TypeError("'row_or_cols' must be a 'Sequence', not " +
 *                             type(row_or_cols).__name__ + ".")
 *         cdef int k = len(row_or_cols)             # <<<<<<<<<<<<<<
 *         cdef int* inds = <int*>glpk.alloc(1+k, sizeof(int))
 *         try:
 */
  __pyx_t_5 = PyObject_Length(__pyx_v_row_or_cols); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 930; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_5;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":931
 *                             type(row_or_cols).__name__ + ".")
 *         cdef int k = len(row_or_cols)
 *         cdef int* inds = <int*>glpk.alloc(1+k, sizeof(int))             # <<<<<<<<<<<<<<
 *         try:
 *             for i, row_or_col in enumerate(row_or_cols, start=1):
 */
  __pyx_v_inds = ((int *)glp_alloc((1 + __pyx_v_k), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":932
 *         cdef int k = len(row_or_cols)
 *         cdef int* inds = <int*>glpk.alloc(1+k, sizeof(int))
 *         try:             # <<<<<<<<<<<<<<
 *             for i, row_or_col in enumerate(row_or_cols, start=1):
 *                 inds[i] = self.find_row_or_col_as_needed(row_or_col)
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":933
 *         cdef int* inds = <int*>glpk.alloc(1+k, sizeof(int))
 *         try:
 *             for i, row_or_col in enumerate(row_or_cols, start=1):             # <<<<<<<<<<<<<<
 *                 inds[i] = self.find_row_or_col_as_needed(row_or_col)
 *             glpk.print_ranges(self._prob, k, inds, 0, str2chars(fname))
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_row_or_cols);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_row_or_cols);
    __Pyx_GIVEREF(__pyx_v_row_or_cols);
    __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_2);
    if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_1, __pyx_t_2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_6) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_2 = __pyx_t_6; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
      __pyx_t_7 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_6); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else {
        __pyx_t_6 = __pyx_t_7(__pyx_t_2);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
        PyObject* sequence = __pyx_t_6;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_8 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_8);
        #else
        __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_8);
        #endif
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_9 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_9);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
        index = 0; __pyx_t_1 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_1)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_1);
        index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_8);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_t_10 = NULL;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
        __pyx_t_10 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 933; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_L10_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
      __pyx_t_1 = 0;
      __Pyx_XDECREF_SET(__pyx_v_row_or_col, __pyx_t_8);
      __pyx_t_8 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":934
 *         try:
 *             for i, row_or_col in enumerate(row_or_cols, start=1):
 *                 inds[i] = self.find_row_or_col_as_needed(row_or_col)             # <<<<<<<<<<<<<<
 *             glpk.print_ranges(self._prob, k, inds, 0, str2chars(fname))
 *         finally:
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_or_col_as_needed); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_8 = PyTuple_New(1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_INCREF(__pyx_v_row_or_col);
      PyTuple_SET_ITEM(__pyx_t_8, 0, __pyx_v_row_or_col);
      __Pyx_GIVEREF(__pyx_v_row_or_col);
      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_8, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_11 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_11 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 934; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      (__pyx_v_inds[__pyx_t_12]) = __pyx_t_11;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":935
 *             for i, row_or_col in enumerate(row_or_cols, start=1):
 *                 inds[i] = self.find_row_or_col_as_needed(row_or_col)
 *             glpk.print_ranges(self._prob, k, inds, 0, str2chars(fname))             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(inds)
 */
    __pyx_t_13 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_13 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 935; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    glp_print_ranges(__pyx_v_self->_prob, __pyx_v_k, __pyx_v_inds, 0, __pyx_t_13);
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":937
 *             glpk.print_ranges(self._prob, k, inds, 0, str2chars(fname))
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 * 
 *     def print_ipt(self, str fname):
 */
  /*finally:*/ {
    /*normal exit:*/{
      glp_free(__pyx_v_inds);
      goto __pyx_L6;
    }
    /*exception exit:*/{
      __pyx_L5_error:;
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_20);
      __Pyx_XGOTREF(__pyx_t_21);
      __pyx_t_11 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
      {
        glp_free(__pyx_v_inds);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_XGIVEREF(__pyx_t_20);
        __Pyx_XGIVEREF(__pyx_t_21);
        __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      }
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __pyx_lineno = __pyx_t_11; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
      goto __pyx_L1_error;
    }
    __pyx_L6:;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":925
 *             raise RuntimeError("Error writing basic solution file")
 * 
 *     def print_ranges(self, row_or_cols, str fname):             # <<<<<<<<<<<<<<
 *         """Print sensitivity analysis report"""
 *         if not isinstance(row_or_cols, collections.abc.Sequence):
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("ecyglpki.Problem.print_ranges", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_row_or_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":939
 *             glpk.free(inds)
 * 
 *     def print_ipt(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write interior-point solution in printable format"""
 *         retcode = glpk.print_ipt(self._prob, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_199print_ipt(PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_198print_ipt[] = "Problem.print_ipt(self, str fname)\nWrite interior-point solution in printable format";
static PyObject *__pyx_pw_8ecyglpki_7Problem_199print_ipt(PyObject *__pyx_v_self, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("print_ipt (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 939; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_198print_ipt(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_198print_ipt(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("print_ipt", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":941
 *     def print_ipt(self, str fname):
 *         """Write interior-point solution in printable format"""
 *         retcode = glpk.print_ipt(self._prob, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing printable interior point " +
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 941; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_print_ipt(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":942
 *         """Write interior-point solution in printable format"""
 *         retcode = glpk.print_ipt(self._prob, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing printable interior point " +
 *                                "solution file")
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":943
 *         retcode = glpk.print_ipt(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing printable interior point " +             # <<<<<<<<<<<<<<
 *                                "solution file")
 * 
 */
    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Error_writing_printable_interior, __pyx_kp_s_solution_file); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 943; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":939
 *             glpk.free(inds)
 * 
 *     def print_ipt(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write interior-point solution in printable format"""
 *         retcode = glpk.print_ipt(self._prob, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Problem.print_ipt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":946
 *                                "solution file")
 * 
 *     def read_ipt(self, str fname):             # <<<<<<<<<<<<<<
 *         """Read interior-point solution from text file"""
 *         retcode = glpk.read_ipt(self._prob, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_201read_ipt(PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_200read_ipt[] = "Problem.read_ipt(self, str fname)\nRead interior-point solution from text file";
static PyObject *__pyx_pw_8ecyglpki_7Problem_201read_ipt(PyObject *__pyx_v_self, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_ipt (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 946; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_200read_ipt(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_200read_ipt(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read_ipt", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":948
 *     def read_ipt(self, str fname):
 *         """Read interior-point solution from text file"""
 *         retcode = glpk.read_ipt(self._prob, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading interior point solution file")
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 948; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_read_ipt(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":949
 *         """Read interior-point solution from text file"""
 *         retcode = glpk.read_ipt(self._prob, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error reading interior point solution file")
 * 
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":950
 *         retcode = glpk.read_ipt(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading interior point solution file")             # <<<<<<<<<<<<<<
 * 
 *     def write_ipt(self, str fname):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":946
 *                                "solution file")
 * 
 *     def read_ipt(self, str fname):             # <<<<<<<<<<<<<<
 *         """Read interior-point solution from text file"""
 *         retcode = glpk.read_ipt(self._prob, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.read_ipt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":952
 *             raise RuntimeError("Error reading interior point solution file")
 * 
 *     def write_ipt(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write interior-point solution to text file"""
 *         retcode = glpk.write_ipt(self._prob, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_203write_ipt(PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_202write_ipt[] = "Problem.write_ipt(self, str fname)\nWrite interior-point solution to text file";
static PyObject *__pyx_pw_8ecyglpki_7Problem_203write_ipt(PyObject *__pyx_v_self, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_ipt (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 952; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_202write_ipt(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_202write_ipt(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write_ipt", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":954
 *     def write_ipt(self, str fname):
 *         """Write interior-point solution to text file"""
 *         retcode = glpk.write_ipt(self._prob, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing interior point solution file")
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 954; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_write_ipt(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":955
 *         """Write interior-point solution to text file"""
 *         retcode = glpk.write_ipt(self._prob, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing interior point solution file")
 * 
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":956
 *         retcode = glpk.write_ipt(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing interior point solution file")             # <<<<<<<<<<<<<<
 * 
 *     def print_mip(self, str fname):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":952
 *             raise RuntimeError("Error reading interior point solution file")
 * 
 *     def write_ipt(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write interior-point solution to text file"""
 *         retcode = glpk.write_ipt(self._prob, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.write_ipt", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":958
 *             raise RuntimeError("Error writing interior point solution file")
 * 
 *     def print_mip(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write MIP solution in printable format"""
 *         retcode = glpk.print_mip(self._prob, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_205print_mip(PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_204print_mip[] = "Problem.print_mip(self, str fname)\nWrite MIP solution in printable format";
static PyObject *__pyx_pw_8ecyglpki_7Problem_205print_mip(PyObject *__pyx_v_self, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("print_mip (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 958; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_204print_mip(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_204print_mip(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("print_mip", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":960
 *     def print_mip(self, str fname):
 *         """Write MIP solution in printable format"""
 *         retcode = glpk.print_mip(self._prob, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing printable integer " +
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 960; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_print_mip(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":961
 *         """Write MIP solution in printable format"""
 *         retcode = glpk.print_mip(self._prob, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing printable integer " +
 *                                "optimization solution file")
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":962
 *         retcode = glpk.print_mip(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing printable integer " +             # <<<<<<<<<<<<<<
 *                                "optimization solution file")
 * 
 */
    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Error_writing_printable_integer, __pyx_kp_s_optimization_solution_file); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 962; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":958
 *             raise RuntimeError("Error writing interior point solution file")
 * 
 *     def print_mip(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write MIP solution in printable format"""
 *         retcode = glpk.print_mip(self._prob, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Problem.print_mip", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":965
 *                                "optimization solution file")
 * 
 *     def read_mip(self, str fname):             # <<<<<<<<<<<<<<
 *         """Read MIP solution from text file"""
 *         retcode = glpk.read_mip(self._prob, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_207read_mip(PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_206read_mip[] = "Problem.read_mip(self, str fname)\nRead MIP solution from text file";
static PyObject *__pyx_pw_8ecyglpki_7Problem_207read_mip(PyObject *__pyx_v_self, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_mip (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 965; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_206read_mip(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_206read_mip(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read_mip", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":967
 *     def read_mip(self, str fname):
 *         """Read MIP solution from text file"""
 *         retcode = glpk.read_mip(self._prob, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading integer optimization solution " +
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 967; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_read_mip(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":968
 *         """Read MIP solution from text file"""
 *         retcode = glpk.read_mip(self._prob, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error reading integer optimization solution " +
 *                                "file")
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":969
 *         retcode = glpk.read_mip(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading integer optimization solution " +             # <<<<<<<<<<<<<<
 *                                "file")
 * 
 */
    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Error_reading_integer_optimizati, __pyx_n_s_file); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 969; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":965
 *                                "optimization solution file")
 * 
 *     def read_mip(self, str fname):             # <<<<<<<<<<<<<<
 *         """Read MIP solution from text file"""
 *         retcode = glpk.read_mip(self._prob, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Problem.read_mip", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":972
 *                                "file")
 * 
 *     def write_mip(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write MIP solution to text file"""
 *         retcode = glpk.write_mip(self._prob, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_209write_mip(PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_208write_mip[] = "Problem.write_mip(self, str fname)\nWrite MIP solution to text file";
static PyObject *__pyx_pw_8ecyglpki_7Problem_209write_mip(PyObject *__pyx_v_self, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_mip (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 972; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_208write_mip(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_208write_mip(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write_mip", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":974
 *     def write_mip(self, str fname):
 *         """Write MIP solution to text file"""
 *         retcode = glpk.write_mip(self._prob, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing integer optimization solution " +
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 974; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_write_mip(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":975
 *         """Write MIP solution to text file"""
 *         retcode = glpk.write_mip(self._prob, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing integer optimization solution " +
 *                                "file")
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":976
 *         retcode = glpk.write_mip(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing integer optimization solution " +             # <<<<<<<<<<<<<<
 *                                "file")
 * 
 */
    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Error_writing_integer_optimizati, __pyx_n_s_file); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 976; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":972
 *                                "file")
 * 
 *     def write_mip(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write MIP solution to text file"""
 *         retcode = glpk.write_mip(self._prob, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Problem.write_mip", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":979
 *                                "file")
 * 
 *     def bf_exists(self):             # <<<<<<<<<<<<<<
 *         """Check if LP basis factorization exists"""
 *         return glpk.bf_exists(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_211bf_exists(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_210bf_exists[] = "Problem.bf_exists(self)\nCheck if LP basis factorization exists";
static PyObject *__pyx_pw_8ecyglpki_7Problem_211bf_exists(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bf_exists (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_210bf_exists(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_210bf_exists(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bf_exists", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":981
 *     def bf_exists(self):
 *         """Check if LP basis factorization exists"""
 *         return glpk.bf_exists(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def factorize(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(glp_bf_exists(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 981; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":979
 *                                "file")
 * 
 *     def bf_exists(self):             # <<<<<<<<<<<<<<
 *         """Check if LP basis factorization exists"""
 *         return glpk.bf_exists(self._prob)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.bf_exists", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":983
 *         return glpk.bf_exists(self._prob)
 * 
 *     def factorize(self):             # <<<<<<<<<<<<<<
 *         """Compute LP basis factorization"""
 *         cdef int retcode = glpk.factorize(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_213factorize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_212factorize[] = "Problem.factorize(self)\nCompute LP basis factorization";
static PyObject *__pyx_pw_8ecyglpki_7Problem_213factorize(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("factorize (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_212factorize(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_212factorize(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("factorize", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":985
 *     def factorize(self):
 *         """Compute LP basis factorization"""
 *         cdef int retcode = glpk.factorize(self._prob)             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise smretcode2error[retcode]
 */
  __pyx_v_retcode = glp_factorize(__pyx_v_self->_prob);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":986
 *         """Compute LP basis factorization"""
 *         cdef int retcode = glpk.factorize(self._prob)
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise smretcode2error[retcode]
 * 
 */
  __pyx_t_1 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":987
 *         cdef int retcode = glpk.factorize(self._prob)
 *         if retcode is not 0:
 *             raise smretcode2error[retcode]             # <<<<<<<<<<<<<<
 * 
 *     def bf_updated(self):
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_smretcode2error, __pyx_v_retcode, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 987; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":983
 *         return glpk.bf_exists(self._prob)
 * 
 *     def factorize(self):             # <<<<<<<<<<<<<<
 *         """Compute LP basis factorization"""
 *         cdef int retcode = glpk.factorize(self._prob)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.factorize", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":989
 *             raise smretcode2error[retcode]
 * 
 *     def bf_updated(self):             # <<<<<<<<<<<<<<
 *         """Check if LP basis factorization has been updated"""
 *         return glpk.bf_updated(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_215bf_updated(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_214bf_updated[] = "Problem.bf_updated(self)\nCheck if LP basis factorization has been updated";
static PyObject *__pyx_pw_8ecyglpki_7Problem_215bf_updated(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("bf_updated (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_214bf_updated(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_214bf_updated(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("bf_updated", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":991
 *     def bf_updated(self):
 *         """Check if LP basis factorization has been updated"""
 *         return glpk.bf_updated(self._prob)             # <<<<<<<<<<<<<<
 * 
 *     def get_bfcp(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyBool_FromLong(glp_bf_updated(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 991; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":989
 *             raise smretcode2error[retcode]
 * 
 *     def bf_updated(self):             # <<<<<<<<<<<<<<
 *         """Check if LP basis factorization has been updated"""
 *         return glpk.bf_updated(self._prob)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.bf_updated", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":993
 *         return glpk.bf_updated(self._prob)
 * 
 *     def get_bfcp(self):             # <<<<<<<<<<<<<<
 *         """Retrieve LP basis factorization control parameters"""
 *         return FactorizationControls(self)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_217get_bfcp(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_216get_bfcp[] = "Problem.get_bfcp(self)\nRetrieve LP basis factorization control parameters";
static PyObject *__pyx_pw_8ecyglpki_7Problem_217get_bfcp(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_bfcp (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_216get_bfcp(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_216get_bfcp(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_bfcp", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":995
 *     def get_bfcp(self):
 *         """Retrieve LP basis factorization control parameters"""
 *         return FactorizationControls(self)             # <<<<<<<<<<<<<<
 * 
 *     def set_bfcp(self, FactorizationControls controls):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(((PyObject *)__pyx_v_self));
  PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
  __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_FactorizationControls)), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 995; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":993
 *         return glpk.bf_updated(self._prob)
 * 
 *     def get_bfcp(self):             # <<<<<<<<<<<<<<
 *         """Retrieve LP basis factorization control parameters"""
 *         return FactorizationControls(self)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.get_bfcp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":997
 *         return FactorizationControls(self)
 * 
 *     def set_bfcp(self, FactorizationControls controls):             # <<<<<<<<<<<<<<
 *         """Change LP basis factorization control parameters"""
 *         glpk.set_bfcp(self._prob, &controls._bfcp)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_219set_bfcp(PyObject *__pyx_v_self, PyObject *__pyx_v_controls); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_218set_bfcp[] = "Problem.set_bfcp(self, FactorizationControls controls)\nChange LP basis factorization control parameters";
static PyObject *__pyx_pw_8ecyglpki_7Problem_219set_bfcp(PyObject *__pyx_v_self, PyObject *__pyx_v_controls) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_bfcp (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_controls), __pyx_ptype_8ecyglpki_FactorizationControls, 1, "controls", 0))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 997; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_218set_bfcp(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((struct __pyx_obj_8ecyglpki_FactorizationControls *)__pyx_v_controls));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_218set_bfcp(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, struct __pyx_obj_8ecyglpki_FactorizationControls *__pyx_v_controls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_bfcp", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":999
 *     def set_bfcp(self, FactorizationControls controls):
 *         """Change LP basis factorization control parameters"""
 *         glpk.set_bfcp(self._prob, &controls._bfcp)             # <<<<<<<<<<<<<<
 * 
 *     def get_bhead(self, int k, names_preferred=False):
 */
  glp_set_bfcp(__pyx_v_self->_prob, (&__pyx_v_controls->_bfcp));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":997
 *         return FactorizationControls(self)
 * 
 *     def set_bfcp(self, FactorizationControls controls):             # <<<<<<<<<<<<<<
 *         """Change LP basis factorization control parameters"""
 *         glpk.set_bfcp(self._prob, &controls._bfcp)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1001
 *         glpk.set_bfcp(self._prob, &controls._bfcp)
 * 
 *     def get_bhead(self, int k, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Retrieve LP basis header information"""
 *         return self.get_row_or_col_name_if(glpk.get_bhead(self._prob, k),
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_221get_bhead(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_220get_bhead[] = "Problem.get_bhead(self, int k, names_preferred=False)\nRetrieve LP basis header information";
static PyObject *__pyx_pw_8ecyglpki_7Problem_221get_bhead(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_k;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_bhead (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_k,&__pyx_n_s_names_preferred,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_k)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get_bhead") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1001; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_k = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_k == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1001; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_names_preferred = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("get_bhead", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1001; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.get_bhead", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_220get_bhead(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_k, __pyx_v_names_preferred);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_220get_bhead(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_k, PyObject *__pyx_v_names_preferred) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_bhead", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1003
 *     def get_bhead(self, int k, names_preferred=False):
 *         """Retrieve LP basis header information"""
 *         return self.get_row_or_col_name_if(glpk.get_bhead(self._prob, k),             # <<<<<<<<<<<<<<
 *                                            names_preferred)
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(glp_get_bhead(__pyx_v_self->_prob, __pyx_v_k)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1004
 *         """Retrieve LP basis header information"""
 *         return self.get_row_or_col_name_if(glpk.get_bhead(self._prob, k),
 *                                            names_preferred)             # <<<<<<<<<<<<<<
 * 
 *     def get_row_bind(self, row):
 */
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_names_preferred);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_names_preferred);
  __Pyx_GIVEREF(__pyx_v_names_preferred);
  __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1003
 *     def get_bhead(self, int k, names_preferred=False):
 *         """Retrieve LP basis header information"""
 *         return self.get_row_or_col_name_if(glpk.get_bhead(self._prob, k),             # <<<<<<<<<<<<<<
 *                                            names_preferred)
 * 
 */
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1003; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1001
 *         glpk.set_bfcp(self._prob, &controls._bfcp)
 * 
 *     def get_bhead(self, int k, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Retrieve LP basis header information"""
 *         return self.get_row_or_col_name_if(glpk.get_bhead(self._prob, k),
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_bhead", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1006
 *                                            names_preferred)
 * 
 *     def get_row_bind(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row index in the basis header"""
 *         row = self.find_row_as_needed(row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_223get_row_bind(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_222get_row_bind[] = "Problem.get_row_bind(self, row)\nRetrieve row index in the basis header";
static PyObject *__pyx_pw_8ecyglpki_7Problem_223get_row_bind(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_row_bind (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_222get_row_bind(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_222get_row_bind(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_row_bind", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1008
 *     def get_row_bind(self, row):
 *         """Retrieve row index in the basis header"""
 *         row = self.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         return glpk.get_row_bind(self._prob, row)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1008; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1009
 *         """Retrieve row index in the basis header"""
 *         row = self.find_row_as_needed(row)
 *         return glpk.get_row_bind(self._prob, row)             # <<<<<<<<<<<<<<
 * 
 *     def get_col_bind(self, col):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = __Pyx_PyInt_From_int(glp_get_row_bind(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1009; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1006
 *                                            names_preferred)
 * 
 *     def get_row_bind(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve row index in the basis header"""
 *         row = self.find_row_as_needed(row)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_row_bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1011
 *         return glpk.get_row_bind(self._prob, row)
 * 
 *     def get_col_bind(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column index in the basis header"""
 *         col = self.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_225get_col_bind(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_224get_col_bind[] = "Problem.get_col_bind(self, col)\nRetrieve column index in the basis header";
static PyObject *__pyx_pw_8ecyglpki_7Problem_225get_col_bind(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_col_bind (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_224get_col_bind(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_224get_col_bind(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_col_bind", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1013
 *     def get_col_bind(self, col):
 *         """Retrieve column index in the basis header"""
 *         col = self.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         return glpk.get_col_bind(self._prob, col)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1013; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1014
 *         """Retrieve column index in the basis header"""
 *         col = self.find_col_as_needed(col)
 *         return glpk.get_col_bind(self._prob, col)             # <<<<<<<<<<<<<<
 * 
 *     def ftran(self, tuple rhs):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = __Pyx_PyInt_From_int(glp_get_col_bind(__pyx_v_self->_prob, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1014; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1011
 *         return glpk.get_row_bind(self._prob, row)
 * 
 *     def get_col_bind(self, col):             # <<<<<<<<<<<<<<
 *         """Retrieve column index in the basis header"""
 *         col = self.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.get_col_bind", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1016
 *         return glpk.get_col_bind(self._prob, col)
 * 
 *     def ftran(self, tuple rhs):             # <<<<<<<<<<<<<<
 *         """Perform forward transformation (solve system B*x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_227ftran(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_226ftran[] = "Problem.ftran(self, tuple rhs)\nPerform forward transformation (solve system B*x = b)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_227ftran(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ftran (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rhs), (&PyTuple_Type), 1, "rhs", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_226ftran(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_rhs));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_8ecyglpki_7Problem_5ftran_2generator2(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1018
 *     def ftran(self, tuple rhs):
 *         """Perform forward transformation (solve system B*x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):             # <<<<<<<<<<<<<<
 *             raise TypeError("Right-hand side must contain 'Real' numbers " +
 *                             "only.")
 */

static PyObject *__pyx_pf_8ecyglpki_7Problem_5ftran_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr *)__pyx_tp_new_8ecyglpki___pyx_scope_struct_5_genexpr(__pyx_ptype_8ecyglpki___pyx_scope_struct_5_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_8ecyglpki_7Problem_5ftran_2generator2, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.ftran.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_8ecyglpki_7Problem_5ftran_2generator2(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr *__pyx_cur_scope = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_rhs)) { __Pyx_RaiseClosureNameError("rhs"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
  if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_rhs == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_rhs; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    #endif
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_value);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_value, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numbers); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Real); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_5 = PyObject_IsInstance(__pyx_cur_scope->__pyx_v_value, __pyx_t_4); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r);
  __pyx_generator->resume_label = -1;
  __Pyx_Generator_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return NULL;
}
static PyObject *__pyx_gb_8ecyglpki_7Problem_5ftran_5generator3(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1030
 *             rhs_pre_x_post[i] = value
 *         glpk.ftran(self._prob, rhs_pre_x_post)
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))             # <<<<<<<<<<<<<<
 * 
 *     def btran(self, tuple rhs):
 */

static PyObject *__pyx_pf_8ecyglpki_7Problem_5ftran_3genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr *)__pyx_tp_new_8ecyglpki___pyx_scope_struct_6_genexpr(__pyx_ptype_8ecyglpki___pyx_scope_struct_6_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_8ecyglpki_7Problem_5ftran_5generator3, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.ftran.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_8ecyglpki_7Problem_5ftran_5generator3(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr *__pyx_cur_scope = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  long __pyx_t_1;
  long __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = (1 + __pyx_cur_scope->__pyx_outer_scope->__pyx_v_m);
  for (__pyx_t_2 = 1; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
    __pyx_cur_scope->__pyx_v_i = __pyx_t_2;
    __pyx_t_3 = PyFloat_FromDouble((__pyx_cur_scope->__pyx_outer_scope->__pyx_v_rhs_pre_x_post[__pyx_cur_scope->__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r);
  __pyx_generator->resume_label = -1;
  __Pyx_Generator_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return NULL;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1016
 *         return glpk.get_col_bind(self._prob, col)
 * 
 *     def ftran(self, tuple rhs):             # <<<<<<<<<<<<<<
 *         """Perform forward transformation (solve system B*x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):
 */

static PyObject *__pyx_pf_8ecyglpki_7Problem_226ftran(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_rhs) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *__pyx_cur_scope;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *(*__pyx_t_11)(PyObject *);
  double __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ftran", 0);
  __pyx_cur_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *)__pyx_tp_new_8ecyglpki___pyx_scope_struct_4_ftran(__pyx_ptype_8ecyglpki___pyx_scope_struct_4_ftran, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_rhs = __pyx_v_rhs;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rhs);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rhs);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1018
 *     def ftran(self, tuple rhs):
 *         """Perform forward transformation (solve system B*x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):             # <<<<<<<<<<<<<<
 *             raise TypeError("Right-hand side must contain 'Real' numbers " +
 *                             "only.")
 */
  __pyx_t_1 = __pyx_pf_8ecyglpki_7Problem_5ftran_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = ((!__pyx_t_3) != 0);
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1019
 *         """Perform forward transformation (solve system B*x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):
 *             raise TypeError("Right-hand side must contain 'Real' numbers " +             # <<<<<<<<<<<<<<
 *                             "only.")
 *         cdef int m = self.get_num_rows()
 */
    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_Right_hand_side_must_contain_Rea, __pyx_kp_s_only); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1019; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1021
 *             raise TypeError("Right-hand side must contain 'Real' numbers " +
 *                             "only.")
 *         cdef int m = self.get_num_rows()             # <<<<<<<<<<<<<<
 *         if len(rhs) is not m:
 *             raise ValueError("The right-hand side vector must have the same " +
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_num_rows); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1021; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_cur_scope->__pyx_v_m = __pyx_t_5;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1022
 *                             "only.")
 *         cdef int m = self.get_num_rows()
 *         if len(rhs) is not m:             # <<<<<<<<<<<<<<
 *             raise ValueError("The right-hand side vector must have the same " +
 *                              "number of components as the basis, " + str(m) +
 */
  __pyx_t_2 = __pyx_cur_scope->__pyx_v_rhs;
  __Pyx_INCREF(__pyx_t_2);
  if (unlikely(__pyx_t_2 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_6 = PyTuple_GET_SIZE(__pyx_t_2); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1022; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((__pyx_t_6 != __pyx_cur_scope->__pyx_v_m) != 0);
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1023
 *         cdef int m = self.get_num_rows()
 *         if len(rhs) is not m:
 *             raise ValueError("The right-hand side vector must have the same " +             # <<<<<<<<<<<<<<
 *                              "number of components as the basis, " + str(m) +
 *                              ".")
 */
    __pyx_t_2 = PyNumber_Add(__pyx_kp_s_The_right_hand_side_vector_must, __pyx_kp_s_number_of_components_as_the_basi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1024
 *         if len(rhs) is not m:
 *             raise ValueError("The right-hand side vector must have the same " +
 *                              "number of components as the basis, " + str(m) +             # <<<<<<<<<<<<<<
 *                              ".")
 *         cdef double* rhs_pre_x_post = <double*>glpk.alloc(1+m, sizeof(double))
 */
    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_m); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_Add(__pyx_t_7, __pyx_kp_s__4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1024; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1023
 *         cdef int m = self.get_num_rows()
 *         if len(rhs) is not m:
 *             raise ValueError("The right-hand side vector must have the same " +             # <<<<<<<<<<<<<<
 *                              "number of components as the basis, " + str(m) +
 *                              ".")
 */
    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1023; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1026
 *                              "number of components as the basis, " + str(m) +
 *                              ".")
 *         cdef double* rhs_pre_x_post = <double*>glpk.alloc(1+m, sizeof(double))             # <<<<<<<<<<<<<<
 *         for i, value in enumerate(rhs, start=1):
 *             rhs_pre_x_post[i] = value
 */
  __pyx_cur_scope->__pyx_v_rhs_pre_x_post = ((double *)glp_alloc((1 + __pyx_cur_scope->__pyx_v_m), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1027
 *                              ".")
 *         cdef double* rhs_pre_x_post = <double*>glpk.alloc(1+m, sizeof(double))
 *         for i, value in enumerate(rhs, start=1):             # <<<<<<<<<<<<<<
 *             rhs_pre_x_post[i] = value
 *         glpk.ftran(self._prob, rhs_pre_x_post)
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rhs);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_rhs);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rhs);
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_7 = __pyx_t_2; __Pyx_INCREF(__pyx_t_7); __pyx_t_6 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (!__pyx_t_8 && PyList_CheckExact(__pyx_t_7)) {
      if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_7)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_2 = PySequence_ITEM(__pyx_t_7, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else if (!__pyx_t_8 && PyTuple_CheckExact(__pyx_t_7)) {
      if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_2 = PySequence_ITEM(__pyx_t_7, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else {
      __pyx_t_2 = __pyx_t_8(__pyx_t_7);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
      PyObject* sequence = __pyx_t_2;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_9 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_9);
      #else
      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      #endif
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_10 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
      index = 0; __pyx_t_1 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_1)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_11 = NULL;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      goto __pyx_L8_unpacking_done;
      __pyx_L7_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_11 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1027; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_L8_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
    __pyx_t_1 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_9);
    __pyx_t_9 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1028
 *         cdef double* rhs_pre_x_post = <double*>glpk.alloc(1+m, sizeof(double))
 *         for i, value in enumerate(rhs, start=1):
 *             rhs_pre_x_post[i] = value             # <<<<<<<<<<<<<<
 *         glpk.ftran(self._prob, rhs_pre_x_post)
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))
 */
    __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1028; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    (__pyx_cur_scope->__pyx_v_rhs_pre_x_post[__pyx_t_13]) = __pyx_t_12;
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1029
 *         for i, value in enumerate(rhs, start=1):
 *             rhs_pre_x_post[i] = value
 *         glpk.ftran(self._prob, rhs_pre_x_post)             # <<<<<<<<<<<<<<
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))
 * 
 */
  glp_ftran(__pyx_v_self->_prob, __pyx_cur_scope->__pyx_v_rhs_pre_x_post);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1030
 *             rhs_pre_x_post[i] = value
 *         glpk.ftran(self._prob, rhs_pre_x_post)
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))             # <<<<<<<<<<<<<<
 * 
 *     def btran(self, tuple rhs):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_7 = __pyx_pf_8ecyglpki_7Problem_5ftran_3genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1016
 *         return glpk.get_col_bind(self._prob, col)
 * 
 *     def ftran(self, tuple rhs):             # <<<<<<<<<<<<<<
 *         """Perform forward transformation (solve system B*x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("ecyglpki.Problem.ftran", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1032
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))
 * 
 *     def btran(self, tuple rhs):             # <<<<<<<<<<<<<<
 *         """Perform backward transformation (solve system B'x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_229btran(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_228btran[] = "Problem.btran(self, tuple rhs)\nPerform backward transformation (solve system B'x = b)";
static PyObject *__pyx_pw_8ecyglpki_7Problem_229btran(PyObject *__pyx_v_self, PyObject *__pyx_v_rhs) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("btran (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rhs), (&PyTuple_Type), 1, "rhs", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_228btran(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_rhs));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}
static PyObject *__pyx_gb_8ecyglpki_7Problem_5btran_2generator4(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1034
 *     def btran(self, tuple rhs):
 *         """Perform backward transformation (solve system B'x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):             # <<<<<<<<<<<<<<
 *             raise TypeError("Right-hand side must contain 'Real' numbers " +
 *                             "only.")
 */

static PyObject *__pyx_pf_8ecyglpki_7Problem_5btran_genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr *)__pyx_tp_new_8ecyglpki___pyx_scope_struct_8_genexpr(__pyx_ptype_8ecyglpki___pyx_scope_struct_8_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_8ecyglpki_7Problem_5btran_2generator4, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.btran.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_8ecyglpki_7Problem_5btran_2generator4(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr *__pyx_cur_scope = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__pyx_cur_scope->__pyx_outer_scope->__pyx_v_rhs)) { __Pyx_RaiseClosureNameError("rhs"); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;} }
  if (unlikely(__pyx_cur_scope->__pyx_outer_scope->__pyx_v_rhs == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_1 = __pyx_cur_scope->__pyx_outer_scope->__pyx_v_rhs; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
  for (;;) {
    if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
    #if CYTHON_COMPILING_IN_CPYTHON
    __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    #else
    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    #endif
    __Pyx_XGOTREF(__pyx_cur_scope->__pyx_v_value);
    __Pyx_XDECREF_SET(__pyx_cur_scope->__pyx_v_value, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_GetModuleGlobalName(__pyx_n_s_numbers); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_Real); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_5 = PyObject_IsInstance(__pyx_cur_scope->__pyx_v_value, __pyx_t_4); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    __Pyx_XGIVEREF(__pyx_t_1);
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_cur_scope->__pyx_t_0 = 0;
    __Pyx_XGOTREF(__pyx_t_1);
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r);
  __pyx_generator->resume_label = -1;
  __Pyx_Generator_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return NULL;
}
static PyObject *__pyx_gb_8ecyglpki_7Problem_5btran_5generator5(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value); /* proto */

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1046
 *             rhs_pre_x_post[i] = value
 *         glpk.btran(self._prob, rhs_pre_x_post)
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))             # <<<<<<<<<<<<<<
 * 
 *     def warm_up(self):
 */

static PyObject *__pyx_pf_8ecyglpki_7Problem_5btran_3genexpr(PyObject *__pyx_self) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr *__pyx_cur_scope;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("genexpr", 0);
  __pyx_cur_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr *)__pyx_tp_new_8ecyglpki___pyx_scope_struct_9_genexpr(__pyx_ptype_8ecyglpki___pyx_scope_struct_9_genexpr, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_outer_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *) __pyx_self;
  __Pyx_INCREF(((PyObject *)__pyx_cur_scope->__pyx_outer_scope));
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_outer_scope);
  {
    __pyx_GeneratorObject *gen = __Pyx_Generator_New((__pyx_generator_body_t) __pyx_gb_8ecyglpki_7Problem_5btran_5generator5, (PyObject *) __pyx_cur_scope); if (unlikely(!gen)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_cur_scope);
    __Pyx_RefNannyFinishContext();
    return (PyObject *) gen;
  }

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.btran.genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_gb_8ecyglpki_7Problem_5btran_5generator5(__pyx_GeneratorObject *__pyx_generator, PyObject *__pyx_sent_value) /* generator body */
{
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr *__pyx_cur_scope = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr *)__pyx_generator->closure);
  PyObject *__pyx_r = NULL;
  long __pyx_t_1;
  long __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("None", 0);
  switch (__pyx_generator->resume_label) {
    case 0: goto __pyx_L3_first_run;
    case 1: goto __pyx_L6_resume_from_yield;
    default: /* CPython raises the right error here */
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __pyx_L3_first_run:;
  if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_1 = (1 + __pyx_cur_scope->__pyx_outer_scope->__pyx_v_m);
  for (__pyx_t_2 = 1; __pyx_t_2 < __pyx_t_1; __pyx_t_2+=1) {
    __pyx_cur_scope->__pyx_v_i = __pyx_t_2;
    __pyx_t_3 = PyFloat_FromDouble((__pyx_cur_scope->__pyx_outer_scope->__pyx_v_rhs_pre_x_post[__pyx_cur_scope->__pyx_v_i])); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    __pyx_cur_scope->__pyx_t_0 = __pyx_t_1;
    __pyx_cur_scope->__pyx_t_1 = __pyx_t_2;
    __Pyx_XGIVEREF(__pyx_r);
    __Pyx_RefNannyFinishContext();
    /* return from generator, yielding value */
    __pyx_generator->resume_label = 1;
    return __pyx_r;
    __pyx_L6_resume_from_yield:;
    __pyx_t_1 = __pyx_cur_scope->__pyx_t_0;
    __pyx_t_2 = __pyx_cur_scope->__pyx_t_1;
    if (unlikely(!__pyx_sent_value)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* function exit code */
  PyErr_SetNone(PyExc_StopIteration);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("genexpr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_r);
  __pyx_generator->resume_label = -1;
  __Pyx_Generator_clear((PyObject*)__pyx_generator);
  __Pyx_RefNannyFinishContext();
  return NULL;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1032
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))
 * 
 *     def btran(self, tuple rhs):             # <<<<<<<<<<<<<<
 *         """Perform backward transformation (solve system B'x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):
 */

static PyObject *__pyx_pf_8ecyglpki_7Problem_228btran(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_rhs) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *__pyx_cur_scope;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_value = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *(*__pyx_t_11)(PyObject *);
  double __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("btran", 0);
  __pyx_cur_scope = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *)__pyx_tp_new_8ecyglpki___pyx_scope_struct_7_btran(__pyx_ptype_8ecyglpki___pyx_scope_struct_7_btran, __pyx_empty_tuple, NULL);
  if (unlikely(!__pyx_cur_scope)) {
    __Pyx_RefNannyFinishContext();
    return NULL;
  }
  __Pyx_GOTREF(__pyx_cur_scope);
  __pyx_cur_scope->__pyx_v_rhs = __pyx_v_rhs;
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rhs);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rhs);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1034
 *     def btran(self, tuple rhs):
 *         """Perform backward transformation (solve system B'x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):             # <<<<<<<<<<<<<<
 *             raise TypeError("Right-hand side must contain 'Real' numbers " +
 *                             "only.")
 */
  __pyx_t_1 = __pyx_pf_8ecyglpki_7Problem_5btran_genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_all, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_4 = ((!__pyx_t_3) != 0);
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1035
 *         """Perform backward transformation (solve system B'x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):
 *             raise TypeError("Right-hand side must contain 'Real' numbers " +             # <<<<<<<<<<<<<<
 *                             "only.")
 *         cdef int m = self.get_num_rows()
 */
    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_Right_hand_side_must_contain_Rea, __pyx_kp_s_only); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1035; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1037
 *             raise TypeError("Right-hand side must contain 'Real' numbers " +
 *                             "only.")
 *         cdef int m = self.get_num_rows()             # <<<<<<<<<<<<<<
 *         if len(rhs) is not m:
 *             raise ValueError("The right-hand side vector must have the same " +
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_num_rows); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1037; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_cur_scope->__pyx_v_m = __pyx_t_5;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1038
 *                             "only.")
 *         cdef int m = self.get_num_rows()
 *         if len(rhs) is not m:             # <<<<<<<<<<<<<<
 *             raise ValueError("The right-hand side vector must have the same " +
 *                              "number of components as the basis, " + str(m) +
 */
  __pyx_t_2 = __pyx_cur_scope->__pyx_v_rhs;
  __Pyx_INCREF(__pyx_t_2);
  if (unlikely(__pyx_t_2 == Py_None)) {
    PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  __pyx_t_6 = PyTuple_GET_SIZE(__pyx_t_2); if (unlikely(__pyx_t_6 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1038; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = ((__pyx_t_6 != __pyx_cur_scope->__pyx_v_m) != 0);
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1039
 *         cdef int m = self.get_num_rows()
 *         if len(rhs) is not m:
 *             raise ValueError("The right-hand side vector must have the same " +             # <<<<<<<<<<<<<<
 *                              "number of components as the basis, " + str(m) +
 *                              ".")
 */
    __pyx_t_2 = PyNumber_Add(__pyx_kp_s_The_right_hand_side_vector_must, __pyx_kp_s_number_of_components_as_the_basi); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1040
 *         if len(rhs) is not m:
 *             raise ValueError("The right-hand side vector must have the same " +
 *                              "number of components as the basis, " + str(m) +             # <<<<<<<<<<<<<<
 *                              ".")
 *         cdef double* rhs_pre_x_post = <double*>glpk.alloc(1+m, sizeof(double))
 */
    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_cur_scope->__pyx_v_m); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __pyx_t_7 = PyNumber_Add(__pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyNumber_Add(__pyx_t_7, __pyx_kp_s__4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1040; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1039
 *         cdef int m = self.get_num_rows()
 *         if len(rhs) is not m:
 *             raise ValueError("The right-hand side vector must have the same " +             # <<<<<<<<<<<<<<
 *                              "number of components as the basis, " + str(m) +
 *                              ".")
 */
    __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1039; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1042
 *                              "number of components as the basis, " + str(m) +
 *                              ".")
 *         cdef double* rhs_pre_x_post = <double*>glpk.alloc(1+m, sizeof(double))             # <<<<<<<<<<<<<<
 *         for i, value in enumerate(rhs, start=1):
 *             rhs_pre_x_post[i] = value
 */
  __pyx_cur_scope->__pyx_v_rhs_pre_x_post = ((double *)glp_alloc((1 + __pyx_cur_scope->__pyx_v_m), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1043
 *                              ".")
 *         cdef double* rhs_pre_x_post = <double*>glpk.alloc(1+m, sizeof(double))
 *         for i, value in enumerate(rhs, start=1):             # <<<<<<<<<<<<<<
 *             rhs_pre_x_post[i] = value
 *         glpk.btran(self._prob, rhs_pre_x_post)
 */
  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_cur_scope->__pyx_v_rhs);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_cur_scope->__pyx_v_rhs);
  __Pyx_GIVEREF(__pyx_cur_scope->__pyx_v_rhs);
  __pyx_t_7 = PyDict_New(); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  if (PyDict_SetItem(__pyx_t_7, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_1, __pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_7 = __pyx_t_2; __Pyx_INCREF(__pyx_t_7); __pyx_t_6 = 0;
    __pyx_t_8 = NULL;
  } else {
    __pyx_t_6 = -1; __pyx_t_7 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (!__pyx_t_8 && PyList_CheckExact(__pyx_t_7)) {
      if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_7)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_7, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_2 = PySequence_ITEM(__pyx_t_7, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else if (!__pyx_t_8 && PyTuple_CheckExact(__pyx_t_7)) {
      if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_7)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_7, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_2 = PySequence_ITEM(__pyx_t_7, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else {
      __pyx_t_2 = __pyx_t_8(__pyx_t_7);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
      PyObject* sequence = __pyx_t_2;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_9 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_9);
      #else
      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      #endif
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_10 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_10);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
      index = 0; __pyx_t_1 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_1)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L7_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_9);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_11 = NULL;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      goto __pyx_L8_unpacking_done;
      __pyx_L7_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
      __pyx_t_11 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1043; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_L8_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
    __pyx_t_1 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_9);
    __pyx_t_9 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1044
 *         cdef double* rhs_pre_x_post = <double*>glpk.alloc(1+m, sizeof(double))
 *         for i, value in enumerate(rhs, start=1):
 *             rhs_pre_x_post[i] = value             # <<<<<<<<<<<<<<
 *         glpk.btran(self._prob, rhs_pre_x_post)
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))
 */
    __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_v_value); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1044; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    (__pyx_cur_scope->__pyx_v_rhs_pre_x_post[__pyx_t_13]) = __pyx_t_12;
  }
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1045
 *         for i, value in enumerate(rhs, start=1):
 *             rhs_pre_x_post[i] = value
 *         glpk.btran(self._prob, rhs_pre_x_post)             # <<<<<<<<<<<<<<
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))
 * 
 */
  glp_btran(__pyx_v_self->_prob, __pyx_cur_scope->__pyx_v_rhs_pre_x_post);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1046
 *             rhs_pre_x_post[i] = value
 *         glpk.btran(self._prob, rhs_pre_x_post)
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))             # <<<<<<<<<<<<<<
 * 
 *     def warm_up(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_7 = __pyx_pf_8ecyglpki_7Problem_5btran_3genexpr(((PyObject*)__pyx_cur_scope)); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1032
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))
 * 
 *     def btran(self, tuple rhs):             # <<<<<<<<<<<<<<
 *         """Perform backward transformation (solve system B'x = b)"""
 *         if not all(isinstance(value, numbers.Real) for value in rhs):
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("ecyglpki.Problem.btran", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_DECREF(((PyObject *)__pyx_cur_scope));
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1048
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))
 * 
 *     def warm_up(self):             # <<<<<<<<<<<<<<
 *         """Warm up LP basis"""
 *         cdef int retcode = glpk.warm_up(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_231warm_up(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_230warm_up[] = "Problem.warm_up(self)\n\342\200\234Warm up\342\200\235 LP basis";
static PyObject *__pyx_pw_8ecyglpki_7Problem_231warm_up(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("warm_up (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_230warm_up(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_230warm_up(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("warm_up", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1050
 *     def warm_up(self):
 *         """Warm up LP basis"""
 *         cdef int retcode = glpk.warm_up(self._prob)             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise smretcode2error[retcode]
 */
  __pyx_v_retcode = glp_warm_up(__pyx_v_self->_prob);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1051
 *         """Warm up LP basis"""
 *         cdef int retcode = glpk.warm_up(self._prob)
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise smretcode2error[retcode]
 * 
 */
  __pyx_t_1 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1052
 *         cdef int retcode = glpk.warm_up(self._prob)
 *         if retcode is not 0:
 *             raise smretcode2error[retcode]             # <<<<<<<<<<<<<<
 * 
 *     def eval_tab_row(self, ind, names_preferred=False):
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_smretcode2error, __pyx_v_retcode, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1052; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1048
 *         return (rhs_pre_x_post[i] for i in range(1, 1+m))
 * 
 *     def warm_up(self):             # <<<<<<<<<<<<<<
 *         """Warm up LP basis"""
 *         cdef int retcode = glpk.warm_up(self._prob)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.warm_up", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1054
 *             raise smretcode2error[retcode]
 * 
 *     def eval_tab_row(self, ind, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Compute row of the simplex tableau"""
 *         ind = self.find_row_or_col_as_needed(ind)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_233eval_tab_row(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_232eval_tab_row[] = "Problem.eval_tab_row(self, ind, names_preferred=False)\nCompute row of the simplex tableau";
static PyObject *__pyx_pw_8ecyglpki_7Problem_233eval_tab_row(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_ind = 0;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("eval_tab_row (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ind,&__pyx_n_s_names_preferred,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ind)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eval_tab_row") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ind = values[0];
    __pyx_v_names_preferred = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("eval_tab_row", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1054; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.eval_tab_row", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_232eval_tab_row(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_ind, __pyx_v_names_preferred);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_232eval_tab_row(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_ind, PyObject *__pyx_v_names_preferred) {
  int __pyx_v_n;
  int *__pyx_v_inds;
  double *__pyx_v_vals;
  int __pyx_v_k;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  long __pyx_t_5;
  long __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  char const *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("eval_tab_row", 0);
  __Pyx_INCREF(__pyx_v_ind);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1056
 *     def eval_tab_row(self, ind, names_preferred=False):
 *         """Compute row of the simplex tableau"""
 *         ind = self.find_row_or_col_as_needed(ind)             # <<<<<<<<<<<<<<
 *         cdef int n = self.get_num_cols()
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_or_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_ind);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ind);
  __Pyx_GIVEREF(__pyx_v_ind);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1056; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_ind, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1057
 *         """Compute row of the simplex tableau"""
 *         ind = self.find_row_or_col_as_needed(ind)
 *         cdef int n = self.get_num_cols()             # <<<<<<<<<<<<<<
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+n, sizeof(double))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_num_cols); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1057; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_n = __pyx_t_4;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1058
 *         ind = self.find_row_or_col_as_needed(ind)
 *         cdef int n = self.get_num_cols()
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef double* vals = <double*>glpk.alloc(1+n, sizeof(double))
 *         cdef int k
 */
  __pyx_v_inds = ((int *)glp_alloc((1 + __pyx_v_n), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1059
 *         cdef int n = self.get_num_cols()
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+n, sizeof(double))             # <<<<<<<<<<<<<<
 *         cdef int k
 *         try:
 */
  __pyx_v_vals = ((double *)glp_alloc((1 + __pyx_v_n), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1061
 *         cdef double* vals = <double*>glpk.alloc(1+n, sizeof(double))
 *         cdef int k
 *         try:             # <<<<<<<<<<<<<<
 *             k = glpk.eval_tab_row(self._prob, ind, inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1062
 *         cdef int k
 *         try:
 *             k = glpk.eval_tab_row(self._prob, ind, inds, vals)             # <<<<<<<<<<<<<<
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 *                         vals[i] for i in range(1, 1+k)}
 */
    __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_ind); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1062; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __pyx_v_k = glp_eval_tab_row(__pyx_v_self->_prob, __pyx_t_4, __pyx_v_inds, __pyx_v_vals);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1063
 *         try:
 *             k = glpk.eval_tab_row(self._prob, ind, inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):             # <<<<<<<<<<<<<<
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 */
    __Pyx_XDECREF(__pyx_r);
    { /* enter inner scope */
      long __pyx_9genexpr15__pyx_v_i;
      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_2);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1064
 *             k = glpk.eval_tab_row(self._prob, ind, inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 *                         vals[i] for i in range(1, 1+k)}             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(inds)
 */
      __pyx_t_5 = (1 + __pyx_v_k);
      for (__pyx_t_6 = 1; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
        __pyx_9genexpr15__pyx_v_i = __pyx_t_6;

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1063
 *         try:
 *             k = glpk.eval_tab_row(self._prob, ind, inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):             # <<<<<<<<<<<<<<
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 */
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_inds[__pyx_9genexpr15__pyx_v_i])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_names_preferred);
        PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_names_preferred);
        __Pyx_GIVEREF(__pyx_v_names_preferred);
        __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1064
 *             k = glpk.eval_tab_row(self._prob, ind, inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 *                         vals[i] for i in range(1, 1+k)}             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(inds)
 */
        __pyx_t_7 = PyFloat_FromDouble((__pyx_v_vals[__pyx_9genexpr15__pyx_v_i])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1064; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        if (unlikely(PyDict_SetItem(__pyx_t_2, (PyObject*)__pyx_t_1, (PyObject*)__pyx_t_7))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1063; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    } /* exit inner scope */
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3_return;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1066
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
  /*finally:*/ {
    /*exception exit:*/{
      __pyx_L4_error:;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __pyx_t_4 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
      {
        glp_free(__pyx_v_inds);

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1067
 *         finally:
 *             glpk.free(inds)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def eval_tab_col(self, ind, names_preferred=False):
 */
        glp_free(__pyx_v_vals);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
      goto __pyx_L1_error;
    }
    __pyx_L3_return: {
      __pyx_t_15 = __pyx_r;
      __pyx_r = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1066
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
      glp_free(__pyx_v_inds);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1067
 *         finally:
 *             glpk.free(inds)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def eval_tab_col(self, ind, names_preferred=False):
 */
      glp_free(__pyx_v_vals);
      __pyx_r = __pyx_t_15;
      __pyx_t_15 = 0;
      goto __pyx_L0;
    }
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1054
 *             raise smretcode2error[retcode]
 * 
 *     def eval_tab_row(self, ind, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Compute row of the simplex tableau"""
 *         ind = self.find_row_or_col_as_needed(ind)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("ecyglpki.Problem.eval_tab_row", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ind);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1069
 *             glpk.free(vals)
 * 
 *     def eval_tab_col(self, ind, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Compute column of the simplex tableau"""
 *         ind = self.find_row_or_col_as_needed(ind)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_235eval_tab_col(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_234eval_tab_col[] = "Problem.eval_tab_col(self, ind, names_preferred=False)\nCompute column of the simplex tableau";
static PyObject *__pyx_pw_8ecyglpki_7Problem_235eval_tab_col(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_ind = 0;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("eval_tab_col (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ind,&__pyx_n_s_names_preferred,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ind)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "eval_tab_col") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ind = values[0];
    __pyx_v_names_preferred = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("eval_tab_col", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1069; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.eval_tab_col", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_234eval_tab_col(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_ind, __pyx_v_names_preferred);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_234eval_tab_col(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_ind, PyObject *__pyx_v_names_preferred) {
  int __pyx_v_m;
  int *__pyx_v_inds;
  double *__pyx_v_vals;
  int __pyx_v_k;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  long __pyx_t_5;
  long __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_t_8;
  char const *__pyx_t_9;
  PyObject *__pyx_t_10 = NULL;
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *__pyx_t_13 = NULL;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("eval_tab_col", 0);
  __Pyx_INCREF(__pyx_v_ind);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1071
 *     def eval_tab_col(self, ind, names_preferred=False):
 *         """Compute column of the simplex tableau"""
 *         ind = self.find_row_or_col_as_needed(ind)             # <<<<<<<<<<<<<<
 *         cdef int m = self.get_num_rows()
 *         cdef int* inds = <int*>glpk.alloc(1+m, sizeof(int))
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_or_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_ind);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ind);
  __Pyx_GIVEREF(__pyx_v_ind);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1071; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_ind, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1072
 *         """Compute column of the simplex tableau"""
 *         ind = self.find_row_or_col_as_needed(ind)
 *         cdef int m = self.get_num_rows()             # <<<<<<<<<<<<<<
 *         cdef int* inds = <int*>glpk.alloc(1+m, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+m, sizeof(double))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_num_rows); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1072; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_m = __pyx_t_4;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1073
 *         ind = self.find_row_or_col_as_needed(ind)
 *         cdef int m = self.get_num_rows()
 *         cdef int* inds = <int*>glpk.alloc(1+m, sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef double* vals = <double*>glpk.alloc(1+m, sizeof(double))
 *         cdef int k
 */
  __pyx_v_inds = ((int *)glp_alloc((1 + __pyx_v_m), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1074
 *         cdef int m = self.get_num_rows()
 *         cdef int* inds = <int*>glpk.alloc(1+m, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+m, sizeof(double))             # <<<<<<<<<<<<<<
 *         cdef int k
 *         try:
 */
  __pyx_v_vals = ((double *)glp_alloc((1 + __pyx_v_m), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1076
 *         cdef double* vals = <double*>glpk.alloc(1+m, sizeof(double))
 *         cdef int k
 *         try:             # <<<<<<<<<<<<<<
 *             k = glpk.eval_tab_col(self._prob, ind, inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1077
 *         cdef int k
 *         try:
 *             k = glpk.eval_tab_col(self._prob, ind, inds, vals)             # <<<<<<<<<<<<<<
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 *                         vals[i] for i in range(1, 1+k)}
 */
    __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_ind); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1077; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __pyx_v_k = glp_eval_tab_col(__pyx_v_self->_prob, __pyx_t_4, __pyx_v_inds, __pyx_v_vals);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1078
 *         try:
 *             k = glpk.eval_tab_col(self._prob, ind, inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):             # <<<<<<<<<<<<<<
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 */
    __Pyx_XDECREF(__pyx_r);
    { /* enter inner scope */
      long __pyx_9genexpr16__pyx_v_i;
      __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_2);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1079
 *             k = glpk.eval_tab_col(self._prob, ind, inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 *                         vals[i] for i in range(1, 1+k)}             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(inds)
 */
      __pyx_t_5 = (1 + __pyx_v_k);
      for (__pyx_t_6 = 1; __pyx_t_6 < __pyx_t_5; __pyx_t_6+=1) {
        __pyx_9genexpr16__pyx_v_i = __pyx_t_6;

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1078
 *         try:
 *             k = glpk.eval_tab_col(self._prob, ind, inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):             # <<<<<<<<<<<<<<
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 */
        __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_1 = __Pyx_PyInt_From_int((__pyx_v_inds[__pyx_9genexpr16__pyx_v_i])); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
        __Pyx_GIVEREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_v_names_preferred);
        PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_names_preferred);
        __Pyx_GIVEREF(__pyx_v_names_preferred);
        __pyx_t_1 = 0;
        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1079
 *             k = glpk.eval_tab_col(self._prob, ind, inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 *                         vals[i] for i in range(1, 1+k)}             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(inds)
 */
        __pyx_t_7 = PyFloat_FromDouble((__pyx_v_vals[__pyx_9genexpr16__pyx_v_i])); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1079; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        if (unlikely(PyDict_SetItem(__pyx_t_2, (PyObject*)__pyx_t_1, (PyObject*)__pyx_t_7))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1078; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      }
    } /* exit inner scope */
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L3_return;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1081
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
  /*finally:*/ {
    /*exception exit:*/{
      __pyx_L4_error:;
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12) < 0)) __Pyx_ErrFetch(&__pyx_t_10, &__pyx_t_11, &__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_10);
      __Pyx_XGOTREF(__pyx_t_11);
      __Pyx_XGOTREF(__pyx_t_12);
      __Pyx_XGOTREF(__pyx_t_13);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __pyx_t_4 = __pyx_lineno; __pyx_t_8 = __pyx_clineno; __pyx_t_9 = __pyx_filename;
      {
        glp_free(__pyx_v_inds);

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1082
 *         finally:
 *             glpk.free(inds)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def transform_row(self, coeffs, names_preferred=False):
 */
        glp_free(__pyx_v_vals);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_13);
        __Pyx_XGIVEREF(__pyx_t_14);
        __Pyx_XGIVEREF(__pyx_t_15);
        __Pyx_ExceptionReset(__pyx_t_13, __pyx_t_14, __pyx_t_15);
      }
      __Pyx_XGIVEREF(__pyx_t_10);
      __Pyx_XGIVEREF(__pyx_t_11);
      __Pyx_XGIVEREF(__pyx_t_12);
      __Pyx_ErrRestore(__pyx_t_10, __pyx_t_11, __pyx_t_12);
      __pyx_t_10 = 0; __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; __pyx_t_14 = 0; __pyx_t_15 = 0;
      __pyx_lineno = __pyx_t_4; __pyx_clineno = __pyx_t_8; __pyx_filename = __pyx_t_9;
      goto __pyx_L1_error;
    }
    __pyx_L3_return: {
      __pyx_t_15 = __pyx_r;
      __pyx_r = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1081
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
      glp_free(__pyx_v_inds);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1082
 *         finally:
 *             glpk.free(inds)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def transform_row(self, coeffs, names_preferred=False):
 */
      glp_free(__pyx_v_vals);
      __pyx_r = __pyx_t_15;
      __pyx_t_15 = 0;
      goto __pyx_L0;
    }
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1069
 *             glpk.free(vals)
 * 
 *     def eval_tab_col(self, ind, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Compute column of the simplex tableau"""
 *         ind = self.find_row_or_col_as_needed(ind)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("ecyglpki.Problem.eval_tab_col", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_ind);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1084
 *             glpk.free(vals)
 * 
 *     def transform_row(self, coeffs, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Transform explicitly specified row"""
 *         _coeffscheck(coeffs)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_237transform_row(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_236transform_row[] = "Problem.transform_row(self, coeffs, names_preferred=False)\nTransform explicitly specified row";
static PyObject *__pyx_pw_8ecyglpki_7Problem_237transform_row(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_coeffs = 0;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("transform_row (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_coeffs,&__pyx_n_s_names_preferred,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_coeffs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "transform_row") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_coeffs = values[0];
    __pyx_v_names_preferred = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("transform_row", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1084; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.transform_row", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_236transform_row(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_coeffs, __pyx_v_names_preferred);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_236transform_row(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_coeffs, PyObject *__pyx_v_names_preferred) {
  int __pyx_v_n;
  int *__pyx_v_inds;
  double *__pyx_v_vals;
  int __pyx_v_k;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *(*__pyx_t_9)(PyObject *);
  Py_ssize_t __pyx_t_10;
  double __pyx_t_11;
  long __pyx_t_12;
  long __pyx_t_13;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("transform_row", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1086
 *     def transform_row(self, coeffs, names_preferred=False):
 *         """Transform explicitly specified row"""
 *         _coeffscheck(coeffs)             # <<<<<<<<<<<<<<
 *         cdef int n = self.get_num_cols()
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 */
  __pyx_t_1 = __pyx_f_8ecyglpki__coeffscheck(__pyx_v_coeffs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1086; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1087
 *         """Transform explicitly specified row"""
 *         _coeffscheck(coeffs)
 *         cdef int n = self.get_num_cols()             # <<<<<<<<<<<<<<
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+n, sizeof(double))
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_num_cols); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1087; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_n = __pyx_t_3;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1088
 *         _coeffscheck(coeffs)
 *         cdef int n = self.get_num_cols()
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef double* vals = <double*>glpk.alloc(1+n, sizeof(double))
 *         cdef int k
 */
  __pyx_v_inds = ((int *)glp_alloc((1 + __pyx_v_n), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1089
 *         cdef int n = self.get_num_cols()
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+n, sizeof(double))             # <<<<<<<<<<<<<<
 *         cdef int k
 *         try:
 */
  __pyx_v_vals = ((double *)glp_alloc((1 + __pyx_v_n), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1091
 *         cdef double* vals = <double*>glpk.alloc(1+n, sizeof(double))
 *         cdef int k
 *         try:             # <<<<<<<<<<<<<<
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 inds[i] = self.find_col_as_needed(item[0])
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1092
 *         cdef int k
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):             # <<<<<<<<<<<<<<
 *                 inds[i] = self.find_col_as_needed(item[0])
 *                 vals[i] = item[1]
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_coeffs, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (!__pyx_t_6 && PyList_CheckExact(__pyx_t_1)) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else if (!__pyx_t_6 && PyTuple_CheckExact(__pyx_t_1)) {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else {
        __pyx_t_4 = __pyx_t_6(__pyx_t_1);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
        PyObject* sequence = __pyx_t_4;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_2 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_2)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_2);
        index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L9_unpacking_done;
        __pyx_L8_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1092; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_L9_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
      __pyx_t_2 = 0;
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1093
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 inds[i] = self.find_col_as_needed(item[0])             # <<<<<<<<<<<<<<
 *                 vals[i] = item[1]
 *             k = glpk.transform_row(self._prob, len(coeffs), inds, vals)
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1093; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      (__pyx_v_inds[__pyx_t_10]) = __pyx_t_3;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1094
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 inds[i] = self.find_col_as_needed(item[0])
 *                 vals[i] = item[1]             # <<<<<<<<<<<<<<
 *             k = glpk.transform_row(self._prob, len(coeffs), inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 */
      __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_item, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1094; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      (__pyx_v_vals[__pyx_t_10]) = __pyx_t_11;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1095
 *                 inds[i] = self.find_col_as_needed(item[0])
 *                 vals[i] = item[1]
 *             k = glpk.transform_row(self._prob, len(coeffs), inds, vals)             # <<<<<<<<<<<<<<
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 *                         vals[i] for i in range(1, 1+k)}
 */
    __pyx_t_5 = PyObject_Length(__pyx_v_coeffs); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1095; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __pyx_v_k = glp_transform_row(__pyx_v_self->_prob, __pyx_t_5, __pyx_v_inds, __pyx_v_vals);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1096
 *                 vals[i] = item[1]
 *             k = glpk.transform_row(self._prob, len(coeffs), inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):             # <<<<<<<<<<<<<<
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 */
    __Pyx_XDECREF(__pyx_r);
    { /* enter inner scope */
      long __pyx_9genexpr17__pyx_v_i;
      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_1);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1097
 *             k = glpk.transform_row(self._prob, len(coeffs), inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 *                         vals[i] for i in range(1, 1+k)}             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(inds)
 */
      __pyx_t_12 = (1 + __pyx_v_k);
      for (__pyx_t_13 = 1; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
        __pyx_9genexpr17__pyx_v_i = __pyx_t_13;

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1096
 *                 vals[i] = item[1]
 *             k = glpk.transform_row(self._prob, len(coeffs), inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):             # <<<<<<<<<<<<<<
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 */
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_v_inds[__pyx_9genexpr17__pyx_v_i])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_v_names_preferred);
        PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_names_preferred);
        __Pyx_GIVEREF(__pyx_v_names_preferred);
        __pyx_t_2 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1097
 *             k = glpk.transform_row(self._prob, len(coeffs), inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 *                         vals[i] for i in range(1, 1+k)}             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(inds)
 */
        __pyx_t_4 = PyFloat_FromDouble((__pyx_v_vals[__pyx_9genexpr17__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1097; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_4);
        if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_t_2, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1096; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
    } /* exit inner scope */
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L3_return;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1099
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
  /*finally:*/ {
    /*exception exit:*/{
      __pyx_L4_error:;
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_20);
      __Pyx_XGOTREF(__pyx_t_21);
      __pyx_t_3 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
      {
        glp_free(__pyx_v_inds);

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1100
 *         finally:
 *             glpk.free(inds)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def transform_col(self, coeffs, names_preferred=False):
 */
        glp_free(__pyx_v_vals);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_XGIVEREF(__pyx_t_20);
        __Pyx_XGIVEREF(__pyx_t_21);
        __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      }
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
      goto __pyx_L1_error;
    }
    __pyx_L3_return: {
      __pyx_t_21 = __pyx_r;
      __pyx_r = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1099
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
      glp_free(__pyx_v_inds);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1100
 *         finally:
 *             glpk.free(inds)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def transform_col(self, coeffs, names_preferred=False):
 */
      glp_free(__pyx_v_vals);
      __pyx_r = __pyx_t_21;
      __pyx_t_21 = 0;
      goto __pyx_L0;
    }
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1084
 *             glpk.free(vals)
 * 
 *     def transform_row(self, coeffs, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Transform explicitly specified row"""
 *         _coeffscheck(coeffs)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("ecyglpki.Problem.transform_row", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1102
 *             glpk.free(vals)
 * 
 *     def transform_col(self, coeffs, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Transform explicitly specified column"""
 *         _coeffscheck(coeffs)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_239transform_col(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_238transform_col[] = "Problem.transform_col(self, coeffs, names_preferred=False)\nTransform explicitly specified column";
static PyObject *__pyx_pw_8ecyglpki_7Problem_239transform_col(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_coeffs = 0;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("transform_col (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_coeffs,&__pyx_n_s_names_preferred,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_coeffs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "transform_col") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_coeffs = values[0];
    __pyx_v_names_preferred = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("transform_col", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1102; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.transform_col", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_238transform_col(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_coeffs, __pyx_v_names_preferred);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_238transform_col(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_coeffs, PyObject *__pyx_v_names_preferred) {
  int __pyx_v_m;
  int *__pyx_v_inds;
  double *__pyx_v_vals;
  int __pyx_v_k;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  Py_ssize_t __pyx_t_5;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *(*__pyx_t_9)(PyObject *);
  Py_ssize_t __pyx_t_10;
  double __pyx_t_11;
  long __pyx_t_12;
  long __pyx_t_13;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("transform_col", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1104
 *     def transform_col(self, coeffs, names_preferred=False):
 *         """Transform explicitly specified column"""
 *         _coeffscheck(coeffs)             # <<<<<<<<<<<<<<
 *         cdef int m = self.get_num_cols()
 *         cdef int* inds = <int*>glpk.alloc(1+m, sizeof(int))
 */
  __pyx_t_1 = __pyx_f_8ecyglpki__coeffscheck(__pyx_v_coeffs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1104; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1105
 *         """Transform explicitly specified column"""
 *         _coeffscheck(coeffs)
 *         cdef int m = self.get_num_cols()             # <<<<<<<<<<<<<<
 *         cdef int* inds = <int*>glpk.alloc(1+m, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+m, sizeof(double))
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_num_cols); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1105; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_m = __pyx_t_3;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1106
 *         _coeffscheck(coeffs)
 *         cdef int m = self.get_num_cols()
 *         cdef int* inds = <int*>glpk.alloc(1+m, sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef double* vals = <double*>glpk.alloc(1+m, sizeof(double))
 *         cdef int k
 */
  __pyx_v_inds = ((int *)glp_alloc((1 + __pyx_v_m), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1107
 *         cdef int m = self.get_num_cols()
 *         cdef int* inds = <int*>glpk.alloc(1+m, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+m, sizeof(double))             # <<<<<<<<<<<<<<
 *         cdef int k
 *         try:
 */
  __pyx_v_vals = ((double *)glp_alloc((1 + __pyx_v_m), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1109
 *         cdef double* vals = <double*>glpk.alloc(1+m, sizeof(double))
 *         cdef int k
 *         try:             # <<<<<<<<<<<<<<
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 inds[i] = self.find_row_as_needed(item[0])
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1110
 *         cdef int k
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):             # <<<<<<<<<<<<<<
 *                 inds[i] = self.find_row_as_needed(item[0])
 *                 vals[i] = item[1]
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_coeffs, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_2, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_5 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_6 = Py_TYPE(__pyx_t_1)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (!__pyx_t_6 && PyList_CheckExact(__pyx_t_1)) {
        if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else if (!__pyx_t_6 && PyTuple_CheckExact(__pyx_t_1)) {
        if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else {
        __pyx_t_4 = __pyx_t_6(__pyx_t_1);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
        PyObject* sequence = __pyx_t_4;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_2 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_2 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_2 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_2 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_2)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_2);
        index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L9_unpacking_done;
        __pyx_L8_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1110; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_L9_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_2);
      __pyx_t_2 = 0;
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1111
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 inds[i] = self.find_row_as_needed(item[0])             # <<<<<<<<<<<<<<
 *                 vals[i] = item[1]
 *             k = glpk.transform_col(self._prob, len(coeffs), inds, vals)
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_2);
      PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7);
      __Pyx_GIVEREF(__pyx_t_7);
      __pyx_t_7 = 0;
      __pyx_t_7 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_2, NULL); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_7); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1111; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      (__pyx_v_inds[__pyx_t_10]) = __pyx_t_3;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1112
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 inds[i] = self.find_row_as_needed(item[0])
 *                 vals[i] = item[1]             # <<<<<<<<<<<<<<
 *             k = glpk.transform_col(self._prob, len(coeffs), inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 */
      __pyx_t_7 = __Pyx_GetItemInt(__pyx_v_item, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_7 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
      __Pyx_GOTREF(__pyx_t_7);
      __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_t_7); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1112; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      (__pyx_v_vals[__pyx_t_10]) = __pyx_t_11;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1113
 *                 inds[i] = self.find_row_as_needed(item[0])
 *                 vals[i] = item[1]
 *             k = glpk.transform_col(self._prob, len(coeffs), inds, vals)             # <<<<<<<<<<<<<<
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 *                         vals[i] for i in range(1, 1+k)}
 */
    __pyx_t_5 = PyObject_Length(__pyx_v_coeffs); if (unlikely(__pyx_t_5 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1113; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __pyx_v_k = glp_transform_col(__pyx_v_self->_prob, __pyx_t_5, __pyx_v_inds, __pyx_v_vals);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1114
 *                 vals[i] = item[1]
 *             k = glpk.transform_col(self._prob, len(coeffs), inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):             # <<<<<<<<<<<<<<
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 */
    __Pyx_XDECREF(__pyx_r);
    { /* enter inner scope */
      long __pyx_9genexpr18__pyx_v_i;
      __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_1);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1115
 *             k = glpk.transform_col(self._prob, len(coeffs), inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 *                         vals[i] for i in range(1, 1+k)}             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(inds)
 */
      __pyx_t_12 = (1 + __pyx_v_k);
      for (__pyx_t_13 = 1; __pyx_t_13 < __pyx_t_12; __pyx_t_13+=1) {
        __pyx_9genexpr18__pyx_v_i = __pyx_t_13;

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1114
 *                 vals[i] = item[1]
 *             k = glpk.transform_col(self._prob, len(coeffs), inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):             # <<<<<<<<<<<<<<
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 */
        __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_2 = __Pyx_PyInt_From_int((__pyx_v_inds[__pyx_9genexpr18__pyx_v_i])); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_4);
        PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_2);
        __Pyx_GIVEREF(__pyx_t_2);
        __Pyx_INCREF(__pyx_v_names_preferred);
        PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_names_preferred);
        __Pyx_GIVEREF(__pyx_v_names_preferred);
        __pyx_t_2 = 0;
        __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_4, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_2);
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1115
 *             k = glpk.transform_col(self._prob, len(coeffs), inds, vals)
 *             return {self.get_row_or_col_name_if(inds[i], names_preferred):
 *                         vals[i] for i in range(1, 1+k)}             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(inds)
 */
        __pyx_t_4 = PyFloat_FromDouble((__pyx_v_vals[__pyx_9genexpr18__pyx_v_i])); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1115; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_4);
        if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_t_2, (PyObject*)__pyx_t_4))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1114; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      }
    } /* exit inner scope */
    __pyx_r = __pyx_t_1;
    __pyx_t_1 = 0;
    goto __pyx_L3_return;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1117
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
  /*finally:*/ {
    /*exception exit:*/{
      __pyx_L4_error:;
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_20);
      __Pyx_XGOTREF(__pyx_t_21);
      __pyx_t_3 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
      {
        glp_free(__pyx_v_inds);

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1118
 *         finally:
 *             glpk.free(inds)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def prim_rtest(self, coeffs, int direction, double eps,
 */
        glp_free(__pyx_v_vals);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_XGIVEREF(__pyx_t_20);
        __Pyx_XGIVEREF(__pyx_t_21);
        __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      }
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
      goto __pyx_L1_error;
    }
    __pyx_L3_return: {
      __pyx_t_21 = __pyx_r;
      __pyx_r = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1117
 *                         vals[i] for i in range(1, 1+k)}
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
      glp_free(__pyx_v_inds);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1118
 *         finally:
 *             glpk.free(inds)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def prim_rtest(self, coeffs, int direction, double eps,
 */
      glp_free(__pyx_v_vals);
      __pyx_r = __pyx_t_21;
      __pyx_t_21 = 0;
      goto __pyx_L0;
    }
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1102
 *             glpk.free(vals)
 * 
 *     def transform_col(self, coeffs, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Transform explicitly specified column"""
 *         _coeffscheck(coeffs)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("ecyglpki.Problem.transform_col", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1120
 *             glpk.free(vals)
 * 
 *     def prim_rtest(self, coeffs, int direction, double eps,             # <<<<<<<<<<<<<<
 *                    names_preferred=False):
 *         """Perform primal ratio test"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_241prim_rtest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_240prim_rtest[] = "Problem.prim_rtest(self, coeffs, int direction, double eps, names_preferred=False)\nPerform primal ratio test";
static PyObject *__pyx_pw_8ecyglpki_7Problem_241prim_rtest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_coeffs = 0;
  int __pyx_v_direction;
  double __pyx_v_eps;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("prim_rtest (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_coeffs,&__pyx_n_s_direction,&__pyx_n_s_eps,&__pyx_n_s_names_preferred,0};
    PyObject* values[4] = {0,0,0,0};

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1121
 * 
 *     def prim_rtest(self, coeffs, int direction, double eps,
 *                    names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Perform primal ratio test"""
 *         _coeffscheck(coeffs)
 */
    values[3] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_coeffs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_direction)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("prim_rtest", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_eps)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("prim_rtest", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "prim_rtest") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_coeffs = values[0];
    __pyx_v_direction = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_eps = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_eps == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_names_preferred = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("prim_rtest", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1120; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.prim_rtest", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_240prim_rtest(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_coeffs, __pyx_v_direction, __pyx_v_eps, __pyx_v_names_preferred);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1120
 *             glpk.free(vals)
 * 
 *     def prim_rtest(self, coeffs, int direction, double eps,             # <<<<<<<<<<<<<<
 *                    names_preferred=False):
 *         """Perform primal ratio test"""
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_240prim_rtest(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_coeffs, int __pyx_v_direction, double __pyx_v_eps, PyObject *__pyx_v_names_preferred) {
  int __pyx_v_m;
  int *__pyx_v_inds;
  double *__pyx_v_vals;
  int __pyx_v_j;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *(*__pyx_t_11)(PyObject *);
  Py_ssize_t __pyx_t_12;
  double __pyx_t_13;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("prim_rtest", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1123
 *                    names_preferred=False):
 *         """Perform primal ratio test"""
 *         _coeffscheck(coeffs)             # <<<<<<<<<<<<<<
 *         if direction not in {-1, +1}:
 *             raise ValueError("'direction' should be +1 or -1, not " +
 */
  __pyx_t_1 = __pyx_f_8ecyglpki__coeffscheck(__pyx_v_coeffs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1123; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1124
 *         """Perform primal ratio test"""
 *         _coeffscheck(coeffs)
 *         if direction not in {-1, +1}:             # <<<<<<<<<<<<<<
 *             raise ValueError("'direction' should be +1 or -1, not " +
 *                              str(direction) + ".")
 */
  switch (__pyx_v_direction) {
    case -1:
    case 1:
    __pyx_t_2 = 0;
    break;
    default:
    __pyx_t_2 = 1;
    break;
  }
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1126
 *         if direction not in {-1, +1}:
 *             raise ValueError("'direction' should be +1 or -1, not " +
 *                              str(direction) + ".")             # <<<<<<<<<<<<<<
 *         cdef int m = self.get_num_rows()
 *         cdef int* inds = <int*>glpk.alloc(1+m, sizeof(int))
 */
    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_direction); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1125
 *         _coeffscheck(coeffs)
 *         if direction not in {-1, +1}:
 *             raise ValueError("'direction' should be +1 or -1, not " +             # <<<<<<<<<<<<<<
 *                              str(direction) + ".")
 *         cdef int m = self.get_num_rows()
 */
    __pyx_t_4 = PyNumber_Add(__pyx_kp_s_direction_should_be_1_or_1_not, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1126
 *         if direction not in {-1, +1}:
 *             raise ValueError("'direction' should be +1 or -1, not " +
 *                              str(direction) + ".")             # <<<<<<<<<<<<<<
 *         cdef int m = self.get_num_rows()
 *         cdef int* inds = <int*>glpk.alloc(1+m, sizeof(int))
 */
    __pyx_t_1 = PyNumber_Add(__pyx_t_4, __pyx_kp_s__4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1126; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1125
 *         _coeffscheck(coeffs)
 *         if direction not in {-1, +1}:
 *             raise ValueError("'direction' should be +1 or -1, not " +             # <<<<<<<<<<<<<<
 *                              str(direction) + ".")
 *         cdef int m = self.get_num_rows()
 */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1127
 *             raise ValueError("'direction' should be +1 or -1, not " +
 *                              str(direction) + ".")
 *         cdef int m = self.get_num_rows()             # <<<<<<<<<<<<<<
 *         cdef int* inds = <int*>glpk.alloc(1+m, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+m, sizeof(double))
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_num_rows); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1127; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_m = __pyx_t_5;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1128
 *                              str(direction) + ".")
 *         cdef int m = self.get_num_rows()
 *         cdef int* inds = <int*>glpk.alloc(1+m, sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef double* vals = <double*>glpk.alloc(1+m, sizeof(double))
 *         cdef int j
 */
  __pyx_v_inds = ((int *)glp_alloc((1 + __pyx_v_m), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1129
 *         cdef int m = self.get_num_rows()
 *         cdef int* inds = <int*>glpk.alloc(1+m, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+m, sizeof(double))             # <<<<<<<<<<<<<<
 *         cdef int j
 *         try:
 */
  __pyx_v_vals = ((double *)glp_alloc((1 + __pyx_v_m), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1131
 *         cdef double* vals = <double*>glpk.alloc(1+m, sizeof(double))
 *         cdef int j
 *         try:             # <<<<<<<<<<<<<<
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 inds[i] = self.find_row_or_col_as_needed(item[0])
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1132
 *         cdef int j
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):             # <<<<<<<<<<<<<<
 *                 inds[i] = self.find_row_or_col_as_needed(item[0])
 *                 vals[i] = item[1]
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_coeffs, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (PyList_CheckExact(__pyx_t_6) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (!__pyx_t_8 && PyList_CheckExact(__pyx_t_1)) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else if (!__pyx_t_8 && PyTuple_CheckExact(__pyx_t_1)) {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else {
        __pyx_t_6 = __pyx_t_8(__pyx_t_1);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
        PyObject* sequence = __pyx_t_6;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_9 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_9);
        #else
        __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_9);
        #endif
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_10 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
        index = 0; __pyx_t_4 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_4)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_4);
        index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_9);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_t_11 = NULL;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_11 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1132; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_L10_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
      __pyx_t_4 = 0;
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1133
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 inds[i] = self.find_row_or_col_as_needed(item[0])             # <<<<<<<<<<<<<<
 *                 vals[i] = item[1]
 *             j = glpk.prim_rtest(self._prob, len(coeffs), inds, vals,
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_or_col_as_needed); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L5_error;};
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1133; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      (__pyx_v_inds[__pyx_t_12]) = __pyx_t_5;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1134
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 inds[i] = self.find_row_or_col_as_needed(item[0])
 *                 vals[i] = item[1]             # <<<<<<<<<<<<<<
 *             j = glpk.prim_rtest(self._prob, len(coeffs), inds, vals,
 *                                 direction, eps)
 */
      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_item, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L5_error;};
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_9); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1134; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      (__pyx_v_vals[__pyx_t_12]) = __pyx_t_13;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1135
 *                 inds[i] = self.find_row_or_col_as_needed(item[0])
 *                 vals[i] = item[1]
 *             j = glpk.prim_rtest(self._prob, len(coeffs), inds, vals,             # <<<<<<<<<<<<<<
 *                                 direction, eps)
 *             return self.get_row_or_col_name_if(inds[j], names_preferred)
 */
    __pyx_t_7 = PyObject_Length(__pyx_v_coeffs); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1135; __pyx_clineno = __LINE__; goto __pyx_L5_error;}

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1136
 *                 vals[i] = item[1]
 *             j = glpk.prim_rtest(self._prob, len(coeffs), inds, vals,
 *                                 direction, eps)             # <<<<<<<<<<<<<<
 *             return self.get_row_or_col_name_if(inds[j], names_preferred)
 *         finally:
 */
    __pyx_v_j = glp_prim_rtest(__pyx_v_self->_prob, __pyx_t_7, __pyx_v_inds, __pyx_v_vals, __pyx_v_direction, __pyx_v_eps);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1137
 *             j = glpk.prim_rtest(self._prob, len(coeffs), inds, vals,
 *                                 direction, eps)
 *             return self.get_row_or_col_name_if(inds[j], names_preferred)             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(inds)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyInt_From_int((__pyx_v_inds[__pyx_v_j])); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_9);
    __Pyx_INCREF(__pyx_v_names_preferred);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_names_preferred);
    __Pyx_GIVEREF(__pyx_v_names_preferred);
    __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1137; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L4_return;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1139
 *             return self.get_row_or_col_name_if(inds[j], names_preferred)
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
  /*finally:*/ {
    /*exception exit:*/{
      __pyx_L5_error:;
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_20);
      __Pyx_XGOTREF(__pyx_t_21);
      __pyx_t_5 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
      {
        glp_free(__pyx_v_inds);

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1140
 *         finally:
 *             glpk.free(inds)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def dual_rtest(self, coeffs, int direction, double eps,
 */
        glp_free(__pyx_v_vals);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_XGIVEREF(__pyx_t_20);
        __Pyx_XGIVEREF(__pyx_t_21);
        __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      }
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
      goto __pyx_L1_error;
    }
    __pyx_L4_return: {
      __pyx_t_21 = __pyx_r;
      __pyx_r = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1139
 *             return self.get_row_or_col_name_if(inds[j], names_preferred)
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
      glp_free(__pyx_v_inds);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1140
 *         finally:
 *             glpk.free(inds)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def dual_rtest(self, coeffs, int direction, double eps,
 */
      glp_free(__pyx_v_vals);
      __pyx_r = __pyx_t_21;
      __pyx_t_21 = 0;
      goto __pyx_L0;
    }
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1120
 *             glpk.free(vals)
 * 
 *     def prim_rtest(self, coeffs, int direction, double eps,             # <<<<<<<<<<<<<<
 *                    names_preferred=False):
 *         """Perform primal ratio test"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("ecyglpki.Problem.prim_rtest", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1142
 *             glpk.free(vals)
 * 
 *     def dual_rtest(self, coeffs, int direction, double eps,             # <<<<<<<<<<<<<<
 *                    names_preferred=False):
 *         """Perform dual ratio test"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_243dual_rtest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_242dual_rtest[] = "Problem.dual_rtest(self, coeffs, int direction, double eps, names_preferred=False)\nPerform dual ratio test";
static PyObject *__pyx_pw_8ecyglpki_7Problem_243dual_rtest(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_coeffs = 0;
  int __pyx_v_direction;
  double __pyx_v_eps;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("dual_rtest (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_coeffs,&__pyx_n_s_direction,&__pyx_n_s_eps,&__pyx_n_s_names_preferred,0};
    PyObject* values[4] = {0,0,0,0};

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1143
 * 
 *     def dual_rtest(self, coeffs, int direction, double eps,
 *                    names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Perform dual ratio test"""
 *         _coeffscheck(coeffs)
 */
    values[3] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_coeffs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_direction)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dual_rtest", 0, 3, 4, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_eps)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("dual_rtest", 0, 3, 4, 2); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[3] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dual_rtest") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_coeffs = values[0];
    __pyx_v_direction = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_direction == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_eps = __pyx_PyFloat_AsDouble(values[2]); if (unlikely((__pyx_v_eps == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_names_preferred = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("dual_rtest", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.dual_rtest", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_242dual_rtest(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_coeffs, __pyx_v_direction, __pyx_v_eps, __pyx_v_names_preferred);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1142
 *             glpk.free(vals)
 * 
 *     def dual_rtest(self, coeffs, int direction, double eps,             # <<<<<<<<<<<<<<
 *                    names_preferred=False):
 *         """Perform dual ratio test"""
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_242dual_rtest(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_coeffs, int __pyx_v_direction, double __pyx_v_eps, PyObject *__pyx_v_names_preferred) {
  int __pyx_v_n;
  int *__pyx_v_inds;
  double *__pyx_v_vals;
  int __pyx_v_j;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  Py_ssize_t __pyx_t_7;
  PyObject *(*__pyx_t_8)(PyObject *);
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *(*__pyx_t_11)(PyObject *);
  Py_ssize_t __pyx_t_12;
  double __pyx_t_13;
  int __pyx_t_14;
  char const *__pyx_t_15;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("dual_rtest", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1145
 *                    names_preferred=False):
 *         """Perform dual ratio test"""
 *         _coeffscheck(coeffs)             # <<<<<<<<<<<<<<
 *         if direction not in {-1, +1}:
 *             raise ValueError("'direction' should be +1 or -1, not " +
 */
  __pyx_t_1 = __pyx_f_8ecyglpki__coeffscheck(__pyx_v_coeffs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1146
 *         """Perform dual ratio test"""
 *         _coeffscheck(coeffs)
 *         if direction not in {-1, +1}:             # <<<<<<<<<<<<<<
 *             raise ValueError("'direction' should be +1 or -1, not " +
 *                              str(direction) + ".")
 */
  switch (__pyx_v_direction) {
    case -1:
    case 1:
    __pyx_t_2 = 0;
    break;
    default:
    __pyx_t_2 = 1;
    break;
  }
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1148
 *         if direction not in {-1, +1}:
 *             raise ValueError("'direction' should be +1 or -1, not " +
 *                              str(direction) + ".")             # <<<<<<<<<<<<<<
 *         cdef int n = self.get_num_cols()
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 */
    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_direction); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)(&PyString_Type))), __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1147
 *         _coeffscheck(coeffs)
 *         if direction not in {-1, +1}:
 *             raise ValueError("'direction' should be +1 or -1, not " +             # <<<<<<<<<<<<<<
 *                              str(direction) + ".")
 *         cdef int n = self.get_num_cols()
 */
    __pyx_t_4 = PyNumber_Add(__pyx_kp_s_direction_should_be_1_or_1_not, __pyx_t_1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1148
 *         if direction not in {-1, +1}:
 *             raise ValueError("'direction' should be +1 or -1, not " +
 *                              str(direction) + ".")             # <<<<<<<<<<<<<<
 *         cdef int n = self.get_num_cols()
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 */
    __pyx_t_1 = PyNumber_Add(__pyx_t_4, __pyx_kp_s__4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1147
 *         _coeffscheck(coeffs)
 *         if direction not in {-1, +1}:
 *             raise ValueError("'direction' should be +1 or -1, not " +             # <<<<<<<<<<<<<<
 *                              str(direction) + ".")
 *         cdef int n = self.get_num_cols()
 */
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1149
 *             raise ValueError("'direction' should be +1 or -1, not " +
 *                              str(direction) + ".")
 *         cdef int n = self.get_num_cols()             # <<<<<<<<<<<<<<
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+n, sizeof(double))
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_num_cols); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1149; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_n = __pyx_t_5;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1150
 *                              str(direction) + ".")
 *         cdef int n = self.get_num_cols()
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef double* vals = <double*>glpk.alloc(1+n, sizeof(double))
 *         cdef int j
 */
  __pyx_v_inds = ((int *)glp_alloc((1 + __pyx_v_n), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1151
 *         cdef int n = self.get_num_cols()
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+n, sizeof(double))             # <<<<<<<<<<<<<<
 *         cdef int j
 *         try:
 */
  __pyx_v_vals = ((double *)glp_alloc((1 + __pyx_v_n), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1153
 *         cdef double* vals = <double*>glpk.alloc(1+n, sizeof(double))
 *         cdef int j
 *         try:             # <<<<<<<<<<<<<<
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 inds[i] = self.find_row_or_col_as_needed(item[0])
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1154
 *         cdef int j
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):             # <<<<<<<<<<<<<<
 *                 inds[i] = self.find_row_or_col_as_needed(item[0])
 *                 vals[i] = item[1]
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_coeffs, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_1);
    if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_4, __pyx_t_1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (PyList_CheckExact(__pyx_t_6) || PyTuple_CheckExact(__pyx_t_6)) {
      __pyx_t_1 = __pyx_t_6; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0;
      __pyx_t_8 = NULL;
    } else {
      __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    for (;;) {
      if (!__pyx_t_8 && PyList_CheckExact(__pyx_t_1)) {
        if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else if (!__pyx_t_8 && PyTuple_CheckExact(__pyx_t_1)) {
        if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else {
        __pyx_t_6 = __pyx_t_8(__pyx_t_1);
        if (unlikely(!__pyx_t_6)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_6);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
        PyObject* sequence = __pyx_t_6;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_9 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_4);
        __Pyx_INCREF(__pyx_t_9);
        #else
        __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_4);
        __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_9);
        #endif
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_10 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
        __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
        index = 0; __pyx_t_4 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_4)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_4);
        index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_9);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_t_11 = NULL;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_11 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1154; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_L10_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_4);
      __pyx_t_4 = 0;
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1155
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 inds[i] = self.find_row_or_col_as_needed(item[0])             # <<<<<<<<<<<<<<
 *                 vals[i] = item[1]
 *             j = glpk.dual_rtest(self._prob, len(coeffs), inds, vals,
 */
      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_or_col_as_needed); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L5_error;};
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_4);
      PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9);
      __Pyx_GIVEREF(__pyx_t_9);
      __pyx_t_9 = 0;
      __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_4, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_9); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1155; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      (__pyx_v_inds[__pyx_t_12]) = __pyx_t_5;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1156
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 inds[i] = self.find_row_or_col_as_needed(item[0])
 *                 vals[i] = item[1]             # <<<<<<<<<<<<<<
 *             j = glpk.dual_rtest(self._prob, len(coeffs), inds, vals,
 *                                 direction, eps)
 */
      __pyx_t_9 = __Pyx_GetItemInt(__pyx_v_item, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_9 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L5_error;};
      __Pyx_GOTREF(__pyx_t_9);
      __pyx_t_13 = __pyx_PyFloat_AsDouble(__pyx_t_9); if (unlikely((__pyx_t_13 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_12 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_12 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1156; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      (__pyx_v_vals[__pyx_t_12]) = __pyx_t_13;
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1157
 *                 inds[i] = self.find_row_or_col_as_needed(item[0])
 *                 vals[i] = item[1]
 *             j = glpk.dual_rtest(self._prob, len(coeffs), inds, vals,             # <<<<<<<<<<<<<<
 *                                 direction, eps)
 *             return self.get_row_or_col_name_if(inds[j], names_preferred)
 */
    __pyx_t_7 = PyObject_Length(__pyx_v_coeffs); if (unlikely(__pyx_t_7 == -1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1157; __pyx_clineno = __LINE__; goto __pyx_L5_error;}

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1158
 *                 vals[i] = item[1]
 *             j = glpk.dual_rtest(self._prob, len(coeffs), inds, vals,
 *                                 direction, eps)             # <<<<<<<<<<<<<<
 *             return self.get_row_or_col_name_if(inds[j], names_preferred)
 *         finally:
 */
    __pyx_v_j = glp_dual_rtest(__pyx_v_self->_prob, __pyx_t_7, __pyx_v_inds, __pyx_v_vals, __pyx_v_direction, __pyx_v_eps);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1159
 *             j = glpk.dual_rtest(self._prob, len(coeffs), inds, vals,
 *                                 direction, eps)
 *             return self.get_row_or_col_name_if(inds[j], names_preferred)             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(inds)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_9 = __Pyx_PyInt_From_int((__pyx_v_inds[__pyx_v_j])); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_9);
    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_9);
    __Pyx_GIVEREF(__pyx_t_9);
    __Pyx_INCREF(__pyx_v_names_preferred);
    PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_names_preferred);
    __Pyx_GIVEREF(__pyx_v_names_preferred);
    __pyx_t_9 = 0;
    __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_4, NULL); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1159; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_9);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_9;
    __pyx_t_9 = 0;
    goto __pyx_L4_return;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1161
 *             return self.get_row_or_col_name_if(inds[j], names_preferred)
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
  /*finally:*/ {
    /*exception exit:*/{
      __pyx_L5_error:;
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_19, &__pyx_t_20, &__pyx_t_21);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18) < 0)) __Pyx_ErrFetch(&__pyx_t_16, &__pyx_t_17, &__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_20);
      __Pyx_XGOTREF(__pyx_t_21);
      __pyx_t_5 = __pyx_lineno; __pyx_t_14 = __pyx_clineno; __pyx_t_15 = __pyx_filename;
      {
        glp_free(__pyx_v_inds);

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1162
 *         finally:
 *             glpk.free(inds)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def analyze_bound(self, ind, names_preferred=False):
 */
        glp_free(__pyx_v_vals);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_XGIVEREF(__pyx_t_20);
        __Pyx_XGIVEREF(__pyx_t_21);
        __Pyx_ExceptionReset(__pyx_t_19, __pyx_t_20, __pyx_t_21);
      }
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_ErrRestore(__pyx_t_16, __pyx_t_17, __pyx_t_18);
      __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0;
      __pyx_lineno = __pyx_t_5; __pyx_clineno = __pyx_t_14; __pyx_filename = __pyx_t_15;
      goto __pyx_L1_error;
    }
    __pyx_L4_return: {
      __pyx_t_21 = __pyx_r;
      __pyx_r = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1161
 *             return self.get_row_or_col_name_if(inds[j], names_preferred)
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
      glp_free(__pyx_v_inds);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1162
 *         finally:
 *             glpk.free(inds)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def analyze_bound(self, ind, names_preferred=False):
 */
      glp_free(__pyx_v_vals);
      __pyx_r = __pyx_t_21;
      __pyx_t_21 = 0;
      goto __pyx_L0;
    }
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1142
 *             glpk.free(vals)
 * 
 *     def dual_rtest(self, coeffs, int direction, double eps,             # <<<<<<<<<<<<<<
 *                    names_preferred=False):
 *         """Perform dual ratio test"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("ecyglpki.Problem.dual_rtest", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1164
 *             glpk.free(vals)
 * 
 *     def analyze_bound(self, ind, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Analyze active bound of non-basic variable"""
 *         ind = self.find_row_or_col_as_needed(ind)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_245analyze_bound(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_244analyze_bound[] = "Problem.analyze_bound(self, ind, names_preferred=False)\nAnalyze active bound of non-basic variable";
static PyObject *__pyx_pw_8ecyglpki_7Problem_245analyze_bound(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_ind = 0;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("analyze_bound (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ind,&__pyx_n_s_names_preferred,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ind)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "analyze_bound") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ind = values[0];
    __pyx_v_names_preferred = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("analyze_bound", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1164; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.analyze_bound", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_244analyze_bound(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_ind, __pyx_v_names_preferred);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_244analyze_bound(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_ind, PyObject *__pyx_v_names_preferred) {
  double __pyx_v_min_bnd;
  int __pyx_v_min_bnd_k;
  double __pyx_v_max_bnd;
  int __pyx_v_max_bnd_k;
  PyObject *__pyx_v_minimal = NULL;
  PyObject *__pyx_v_maximal = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  PyObject *__pyx_t_6 = NULL;
  double __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("analyze_bound", 0);
  __Pyx_INCREF(__pyx_v_ind);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1166
 *     def analyze_bound(self, ind, names_preferred=False):
 *         """Analyze active bound of non-basic variable"""
 *         ind = self.find_row_or_col_as_needed(ind)             # <<<<<<<<<<<<<<
 *         cdef double min_bnd
 *         cdef int min_bnd_k
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_or_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_ind);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ind);
  __Pyx_GIVEREF(__pyx_v_ind);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_ind, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1171
 *         cdef double max_bnd
 *         cdef int max_bnd_k
 *         glpk.analyze_bound(self._prob, ind,             # <<<<<<<<<<<<<<
 *                            &min_bnd, &min_bnd_k, &max_bnd, &max_bnd_k)
 *         if min_bnd > -double_MAX:
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_ind); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1172
 *         cdef int max_bnd_k
 *         glpk.analyze_bound(self._prob, ind,
 *                            &min_bnd, &min_bnd_k, &max_bnd, &max_bnd_k)             # <<<<<<<<<<<<<<
 *         if min_bnd > -double_MAX:
 *             minimal = min_bnd, self.get_row_or_col_name_if(min_bnd_k,
 */
  glp_analyze_bound(__pyx_v_self->_prob, __pyx_t_4, (&__pyx_v_min_bnd), (&__pyx_v_min_bnd_k), (&__pyx_v_max_bnd), (&__pyx_v_max_bnd_k));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1173
 *         glpk.analyze_bound(self._prob, ind,
 *                            &min_bnd, &min_bnd_k, &max_bnd, &max_bnd_k)
 *         if min_bnd > -double_MAX:             # <<<<<<<<<<<<<<
 *             minimal = min_bnd, self.get_row_or_col_name_if(min_bnd_k,
 *                                                            names_preferred)
 */
  __pyx_t_5 = ((__pyx_v_min_bnd > (-__pyx_v_8ecyglpki_double_MAX)) != 0);
  if (__pyx_t_5) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1174
 *                            &min_bnd, &min_bnd_k, &max_bnd, &max_bnd_k)
 *         if min_bnd > -double_MAX:
 *             minimal = min_bnd, self.get_row_or_col_name_if(min_bnd_k,             # <<<<<<<<<<<<<<
 *                                                            names_preferred)
 *         else:
 */
    __pyx_t_3 = PyFloat_FromDouble(__pyx_v_min_bnd); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_min_bnd_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1175
 *         if min_bnd > -double_MAX:
 *             minimal = min_bnd, self.get_row_or_col_name_if(min_bnd_k,
 *                                                            names_preferred)             # <<<<<<<<<<<<<<
 *         else:
 *             minimal = (-float('inf'), None)
 */
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_names_preferred);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_v_names_preferred);
    __Pyx_GIVEREF(__pyx_v_names_preferred);
    __pyx_t_1 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1174
 *                            &min_bnd, &min_bnd_k, &max_bnd, &max_bnd_k)
 *         if min_bnd > -double_MAX:
 *             minimal = min_bnd, self.get_row_or_col_name_if(min_bnd_k,             # <<<<<<<<<<<<<<
 *                                                            names_preferred)
 *         else:
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_3 = 0;
    __pyx_t_1 = 0;
    __pyx_v_minimal = ((PyObject*)__pyx_t_6);
    __pyx_t_6 = 0;
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1177
 *                                                            names_preferred)
 *         else:
 *             minimal = (-float('inf'), None)             # <<<<<<<<<<<<<<
 *         if max_bnd < +double_MAX:
 *             maximal = max_bnd, self.get_row_or_col_name_if(max_bnd_k,
 */
    __pyx_t_7 = __Pyx_PyObject_AsDouble(__pyx_n_s_inf); if (unlikely(__pyx_t_7 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_6 = PyFloat_FromDouble((-__pyx_t_7)); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
    __Pyx_GIVEREF(__pyx_t_6);
    __Pyx_INCREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
    __Pyx_GIVEREF(Py_None);
    __pyx_t_6 = 0;
    __pyx_v_minimal = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L3:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1178
 *         else:
 *             minimal = (-float('inf'), None)
 *         if max_bnd < +double_MAX:             # <<<<<<<<<<<<<<
 *             maximal = max_bnd, self.get_row_or_col_name_if(max_bnd_k,
 *                                                            names_preferred)
 */
  __pyx_t_5 = ((__pyx_v_max_bnd < __pyx_v_8ecyglpki_double_MAX) != 0);
  if (__pyx_t_5) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1179
 *             minimal = (-float('inf'), None)
 *         if max_bnd < +double_MAX:
 *             maximal = max_bnd, self.get_row_or_col_name_if(max_bnd_k,             # <<<<<<<<<<<<<<
 *                                                            names_preferred)
 *         else:
 */
    __pyx_t_1 = PyFloat_FromDouble(__pyx_v_max_bnd); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_6);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_max_bnd_k); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1180
 *         if max_bnd < +double_MAX:
 *             maximal = max_bnd, self.get_row_or_col_name_if(max_bnd_k,
 *                                                            names_preferred)             # <<<<<<<<<<<<<<
 *         else:
 *             maximal = (+float('inf'), None)
 */
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_names_preferred);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_names_preferred);
    __Pyx_GIVEREF(__pyx_v_names_preferred);
    __pyx_t_3 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1179
 *             minimal = (-float('inf'), None)
 *         if max_bnd < +double_MAX:
 *             maximal = max_bnd, self.get_row_or_col_name_if(max_bnd_k,             # <<<<<<<<<<<<<<
 *                                                            names_preferred)
 *         else:
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1179; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_3 = 0;
    __pyx_v_maximal = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L4;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1182
 *                                                            names_preferred)
 *         else:
 *             maximal = (+float('inf'), None)             # <<<<<<<<<<<<<<
 *         return {'minimal': minimal, 'maximal': maximal}
 * 
 */
    __pyx_t_7 = __Pyx_PyObject_AsDouble(__pyx_n_s_inf); if (unlikely(__pyx_t_7 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_2 = PyFloat_FromDouble(__pyx_t_7); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_INCREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_3, 1, Py_None);
    __Pyx_GIVEREF(Py_None);
    __pyx_t_2 = 0;
    __pyx_v_maximal = ((PyObject*)__pyx_t_3);
    __pyx_t_3 = 0;
  }
  __pyx_L4:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1183
 *         else:
 *             maximal = (+float('inf'), None)
 *         return {'minimal': minimal, 'maximal': maximal}             # <<<<<<<<<<<<<<
 * 
 *     def analyze_coef(self, ind, names_preferred=False):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_minimal, __pyx_v_minimal) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_maximal, __pyx_v_maximal) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1164
 *             glpk.free(vals)
 * 
 *     def analyze_bound(self, ind, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Analyze active bound of non-basic variable"""
 *         ind = self.find_row_or_col_as_needed(ind)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_AddTraceback("ecyglpki.Problem.analyze_bound", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_minimal);
  __Pyx_XDECREF(__pyx_v_maximal);
  __Pyx_XDECREF(__pyx_v_ind);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1185
 *         return {'minimal': minimal, 'maximal': maximal}
 * 
 *     def analyze_coef(self, ind, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Analyze objective coefficient at basic variable"""
 *         ind = self.find_row_or_col_as_needed(ind)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_247analyze_coef(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_246analyze_coef[] = "Problem.analyze_coef(self, ind, names_preferred=False)\nAnalyze objective coefficient at basic variable";
static PyObject *__pyx_pw_8ecyglpki_7Problem_247analyze_coef(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_ind = 0;
  PyObject *__pyx_v_names_preferred = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("analyze_coef (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_ind,&__pyx_n_s_names_preferred,0};
    PyObject* values[2] = {0,0};
    values[1] = ((PyObject *)Py_False);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_ind)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_names_preferred);
          if (value) { values[1] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "analyze_coef") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_ind = values[0];
    __pyx_v_names_preferred = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("analyze_coef", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1185; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.analyze_coef", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_246analyze_coef(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_ind, __pyx_v_names_preferred);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_246analyze_coef(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_ind, PyObject *__pyx_v_names_preferred) {
  double __pyx_v_min_coef;
  int __pyx_v_min_coef_k;
  double __pyx_v_val_min_coef;
  double __pyx_v_max_coef;
  int __pyx_v_max_coef_k;
  double __pyx_v_val_max_coef;
  double __pyx_v_minval;
  double __pyx_v_maxval;
  PyObject *__pyx_v_minimal = NULL;
  PyObject *__pyx_v_maximal = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  double __pyx_t_6;
  PyObject *__pyx_t_7 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("analyze_coef", 0);
  __Pyx_INCREF(__pyx_v_ind);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1187
 *     def analyze_coef(self, ind, names_preferred=False):
 *         """Analyze objective coefficient at basic variable"""
 *         ind = self.find_row_or_col_as_needed(ind)             # <<<<<<<<<<<<<<
 *         cdef double min_coef
 *         cdef int min_coef_k
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_row_or_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_ind);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_ind);
  __Pyx_GIVEREF(__pyx_v_ind);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1187; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_ind, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1194
 *         cdef int max_coef_k
 *         cdef double val_max_coef
 *         glpk.analyze_coef(self._prob, ind,             # <<<<<<<<<<<<<<
 *                           &min_coef, &min_coef_k, &val_min_coef,
 *                           &max_coef, &max_coef_k, &val_max_coef)
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_ind); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1196
 *         glpk.analyze_coef(self._prob, ind,
 *                           &min_coef, &min_coef_k, &val_min_coef,
 *                           &max_coef, &max_coef_k, &val_max_coef)             # <<<<<<<<<<<<<<
 *         if val_min_coef <= -double_MAX:
 *             minval = -float('inf')
 */
  glp_analyze_coef(__pyx_v_self->_prob, __pyx_t_4, (&__pyx_v_min_coef), (&__pyx_v_min_coef_k), (&__pyx_v_val_min_coef), (&__pyx_v_max_coef), (&__pyx_v_max_coef_k), (&__pyx_v_val_max_coef));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1197
 *                           &min_coef, &min_coef_k, &val_min_coef,
 *                           &max_coef, &max_coef_k, &val_max_coef)
 *         if val_min_coef <= -double_MAX:             # <<<<<<<<<<<<<<
 *             minval = -float('inf')
 *         elif val_min_coef >= double_MAX:
 */
  __pyx_t_5 = ((__pyx_v_val_min_coef <= (-__pyx_v_8ecyglpki_double_MAX)) != 0);
  if (__pyx_t_5) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1198
 *                           &max_coef, &max_coef_k, &val_max_coef)
 *         if val_min_coef <= -double_MAX:
 *             minval = -float('inf')             # <<<<<<<<<<<<<<
 *         elif val_min_coef >= double_MAX:
 *             minval = +float('inf')
 */
    __pyx_t_6 = __Pyx_PyObject_AsDouble(__pyx_n_s_inf); if (unlikely(__pyx_t_6 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_minval = (-__pyx_t_6);
    goto __pyx_L3;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1199
 *         if val_min_coef <= -double_MAX:
 *             minval = -float('inf')
 *         elif val_min_coef >= double_MAX:             # <<<<<<<<<<<<<<
 *             minval = +float('inf')
 *         if val_max_coef <= -double_MAX:
 */
  __pyx_t_5 = ((__pyx_v_val_min_coef >= __pyx_v_8ecyglpki_double_MAX) != 0);
  if (__pyx_t_5) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1200
 *             minval = -float('inf')
 *         elif val_min_coef >= double_MAX:
 *             minval = +float('inf')             # <<<<<<<<<<<<<<
 *         if val_max_coef <= -double_MAX:
 *             maxval = -float('inf')
 */
    __pyx_t_6 = __Pyx_PyObject_AsDouble(__pyx_n_s_inf); if (unlikely(__pyx_t_6 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_minval = __pyx_t_6;
    goto __pyx_L3;
  }
  __pyx_L3:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1201
 *         elif val_min_coef >= double_MAX:
 *             minval = +float('inf')
 *         if val_max_coef <= -double_MAX:             # <<<<<<<<<<<<<<
 *             maxval = -float('inf')
 *         elif val_max_coef >= double_MAX:
 */
  __pyx_t_5 = ((__pyx_v_val_max_coef <= (-__pyx_v_8ecyglpki_double_MAX)) != 0);
  if (__pyx_t_5) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1202
 *             minval = +float('inf')
 *         if val_max_coef <= -double_MAX:
 *             maxval = -float('inf')             # <<<<<<<<<<<<<<
 *         elif val_max_coef >= double_MAX:
 *             maxval = +float('inf')
 */
    __pyx_t_6 = __Pyx_PyObject_AsDouble(__pyx_n_s_inf); if (unlikely(__pyx_t_6 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_maxval = (-__pyx_t_6);
    goto __pyx_L4;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1203
 *         if val_max_coef <= -double_MAX:
 *             maxval = -float('inf')
 *         elif val_max_coef >= double_MAX:             # <<<<<<<<<<<<<<
 *             maxval = +float('inf')
 *         if min_coef > -double_MAX:
 */
  __pyx_t_5 = ((__pyx_v_val_max_coef >= __pyx_v_8ecyglpki_double_MAX) != 0);
  if (__pyx_t_5) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1204
 *             maxval = -float('inf')
 *         elif val_max_coef >= double_MAX:
 *             maxval = +float('inf')             # <<<<<<<<<<<<<<
 *         if min_coef > -double_MAX:
 *             minimal = (min_coef,
 */
    __pyx_t_6 = __Pyx_PyObject_AsDouble(__pyx_n_s_inf); if (unlikely(__pyx_t_6 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1204; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_v_maxval = __pyx_t_6;
    goto __pyx_L4;
  }
  __pyx_L4:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1205
 *         elif val_max_coef >= double_MAX:
 *             maxval = +float('inf')
 *         if min_coef > -double_MAX:             # <<<<<<<<<<<<<<
 *             minimal = (min_coef,
 *                        self.get_row_or_col_name_if(min_coef_k,
 */
  __pyx_t_5 = ((__pyx_v_min_coef > (-__pyx_v_8ecyglpki_double_MAX)) != 0);
  if (__pyx_t_5) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1206
 *             maxval = +float('inf')
 *         if min_coef > -double_MAX:
 *             minimal = (min_coef,             # <<<<<<<<<<<<<<
 *                        self.get_row_or_col_name_if(min_coef_k,
 *                                                    names_preferred),
 */
    __pyx_t_3 = PyFloat_FromDouble(__pyx_v_min_coef); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1207
 *         if min_coef > -double_MAX:
 *             minimal = (min_coef,
 *                        self.get_row_or_col_name_if(min_coef_k,             # <<<<<<<<<<<<<<
 *                                                    names_preferred),
 *                        minval)
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_min_coef_k); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1208
 *             minimal = (min_coef,
 *                        self.get_row_or_col_name_if(min_coef_k,
 *                                                    names_preferred),             # <<<<<<<<<<<<<<
 *                        minval)
 *         else:
 */
    __pyx_t_7 = PyTuple_New(2); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __Pyx_INCREF(__pyx_v_names_preferred);
    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_v_names_preferred);
    __Pyx_GIVEREF(__pyx_v_names_preferred);
    __pyx_t_1 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1207
 *         if min_coef > -double_MAX:
 *             minimal = (min_coef,
 *                        self.get_row_or_col_name_if(min_coef_k,             # <<<<<<<<<<<<<<
 *                                                    names_preferred),
 *                        minval)
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1209
 *                        self.get_row_or_col_name_if(min_coef_k,
 *                                                    names_preferred),
 *                        minval)             # <<<<<<<<<<<<<<
 *         else:
 *             minimal = -float('inf'), None, minval
 */
    __pyx_t_7 = PyFloat_FromDouble(__pyx_v_minval); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1206
 *             maxval = +float('inf')
 *         if min_coef > -double_MAX:
 *             minimal = (min_coef,             # <<<<<<<<<<<<<<
 *                        self.get_row_or_col_name_if(min_coef_k,
 *                                                    names_preferred),
 */
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_7);
    __pyx_t_3 = 0;
    __pyx_t_1 = 0;
    __pyx_t_7 = 0;
    __pyx_v_minimal = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;
    goto __pyx_L5;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1211
 *                        minval)
 *         else:
 *             minimal = -float('inf'), None, minval             # <<<<<<<<<<<<<<
 *         if max_coef < +double_MAX:
 *             maximal = (max_coef,
 */
    __pyx_t_6 = __Pyx_PyObject_AsDouble(__pyx_n_s_inf); if (unlikely(__pyx_t_6 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_2 = PyFloat_FromDouble((-__pyx_t_6)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_7 = PyFloat_FromDouble(__pyx_v_minval); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_INCREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_1, 1, Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_7);
    __pyx_t_2 = 0;
    __pyx_t_7 = 0;
    __pyx_v_minimal = ((PyObject*)__pyx_t_1);
    __pyx_t_1 = 0;
  }
  __pyx_L5:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1212
 *         else:
 *             minimal = -float('inf'), None, minval
 *         if max_coef < +double_MAX:             # <<<<<<<<<<<<<<
 *             maximal = (max_coef,
 *                        self.get_row_or_col_name_if(max_coef_k,
 */
  __pyx_t_5 = ((__pyx_v_max_coef < __pyx_v_8ecyglpki_double_MAX) != 0);
  if (__pyx_t_5) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1213
 *             minimal = -float('inf'), None, minval
 *         if max_coef < +double_MAX:
 *             maximal = (max_coef,             # <<<<<<<<<<<<<<
 *                        self.get_row_or_col_name_if(max_coef_k,
 *                                                    names_preferred),
 */
    __pyx_t_1 = PyFloat_FromDouble(__pyx_v_max_coef); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1214
 *         if max_coef < +double_MAX:
 *             maximal = (max_coef,
 *                        self.get_row_or_col_name_if(max_coef_k,             # <<<<<<<<<<<<<<
 *                                                    names_preferred),
 *                        maxval)
 */
    __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_get_row_or_col_name_if); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_max_coef_k); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1215
 *             maximal = (max_coef,
 *                        self.get_row_or_col_name_if(max_coef_k,
 *                                                    names_preferred),             # <<<<<<<<<<<<<<
 *                        maxval)
 *         else:
 */
    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __Pyx_INCREF(__pyx_v_names_preferred);
    PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_names_preferred);
    __Pyx_GIVEREF(__pyx_v_names_preferred);
    __pyx_t_2 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1214
 *         if max_coef < +double_MAX:
 *             maximal = (max_coef,
 *                        self.get_row_or_col_name_if(max_coef_k,             # <<<<<<<<<<<<<<
 *                                                    names_preferred),
 *                        maxval)
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1214; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1216
 *                        self.get_row_or_col_name_if(max_coef_k,
 *                                                    names_preferred),
 *                        maxval)             # <<<<<<<<<<<<<<
 *         else:
 *             maximal = +float('inf'), None, maxval
 */
    __pyx_t_3 = PyFloat_FromDouble(__pyx_v_maxval); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1213
 *             minimal = -float('inf'), None, minval
 *         if max_coef < +double_MAX:
 *             maximal = (max_coef,             # <<<<<<<<<<<<<<
 *                        self.get_row_or_col_name_if(max_coef_k,
 *                                                    names_preferred),
 */
    __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_1 = 0;
    __pyx_t_2 = 0;
    __pyx_t_3 = 0;
    __pyx_v_maximal = ((PyObject*)__pyx_t_7);
    __pyx_t_7 = 0;
    goto __pyx_L6;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1218
 *                        maxval)
 *         else:
 *             maximal = +float('inf'), None, maxval             # <<<<<<<<<<<<<<
 *         return {'minimal': minimal, 'maximal': maximal}
 * 
 */
    __pyx_t_6 = __Pyx_PyObject_AsDouble(__pyx_n_s_inf); if (unlikely(__pyx_t_6 == ((double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_7 = PyFloat_FromDouble(__pyx_t_6); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_7);
    __pyx_t_3 = PyFloat_FromDouble(__pyx_v_maxval); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_7);
    __Pyx_GIVEREF(__pyx_t_7);
    __Pyx_INCREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 1, Py_None);
    __Pyx_GIVEREF(Py_None);
    PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_7 = 0;
    __pyx_t_3 = 0;
    __pyx_v_maximal = ((PyObject*)__pyx_t_2);
    __pyx_t_2 = 0;
  }
  __pyx_L6:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1219
 *         else:
 *             maximal = +float('inf'), None, maxval
 *         return {'minimal': minimal, 'maximal': maximal}             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyDict_New(); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_minimal, __pyx_v_minimal) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_maximal, __pyx_v_maximal) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1185
 *         return {'minimal': minimal, 'maximal': maximal}
 * 
 *     def analyze_coef(self, ind, names_preferred=False):             # <<<<<<<<<<<<<<
 *         """Analyze objective coefficient at basic variable"""
 *         ind = self.find_row_or_col_as_needed(ind)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("ecyglpki.Problem.analyze_coef", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_minimal);
  __Pyx_XDECREF(__pyx_v_maximal);
  __Pyx_XDECREF(__pyx_v_ind);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1222
 * 
 *     @classmethod
 *     def read_mps(cls, str format, str fname):             # <<<<<<<<<<<<<<
 *         """Read problem data in MPS format"""
 *         problem = cls()
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_249read_mps(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_248read_mps[] = "Problem.read_mps(type cls, str format, str fname)\nRead problem data in MPS format";
static PyObject *__pyx_pw_8ecyglpki_7Problem_249read_mps(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_format = 0;
  PyObject *__pyx_v_fname = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_mps (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_format,&__pyx_n_s_fname,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_format)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_mps", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_mps") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_format = ((PyObject*)values[0]);
    __pyx_v_fname = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("read_mps", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.read_mps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_format), (&PyString_Type), 1, "format", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_248read_mps(((PyObject*)__pyx_v_cls), __pyx_v_format, __pyx_v_fname);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_248read_mps(PyObject *__pyx_v_cls, PyObject *__pyx_v_format, PyObject *__pyx_v_fname) {
  PyObject *__pyx_v_problem = NULL;
  struct glp_prob *__pyx_v__prob;
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  void *__pyx_t_3;
  int __pyx_t_4;
  char *__pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read_mps", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1224
 *     def read_mps(cls, str format, str fname):
 *         """Read problem data in MPS format"""
 *         problem = cls()             # <<<<<<<<<<<<<<
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_problem = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1226
 *         problem = cls()
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         retcode = glpk.read_mps(_prob, str2mpsfmt[format], NULL,
 *                                 str2chars(fname))
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_prob_ptr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1226; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1225
 *         """Read problem data in MPS format"""
 *         problem = cls()
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     problem._prob_ptr(), NULL)
 *         retcode = glpk.read_mps(_prob, str2mpsfmt[format], NULL,
 */
  __pyx_t_3 = PyCapsule_GetPointer(__pyx_t_2, NULL); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v__prob = ((struct glp_prob *)__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1227
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 *         retcode = glpk.read_mps(_prob, str2mpsfmt[format], NULL,             # <<<<<<<<<<<<<<
 *                                 str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_t_2 = PyObject_GetItem(__pyx_v_8ecyglpki_str2mpsfmt, __pyx_v_format); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1227; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1228
 *                                                     problem._prob_ptr(), NULL)
 *         retcode = glpk.read_mps(_prob, str2mpsfmt[format], NULL,
 *                                 str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading MPS file.")
 */
  __pyx_t_5 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1227
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 *         retcode = glpk.read_mps(_prob, str2mpsfmt[format], NULL,             # <<<<<<<<<<<<<<
 *                                 str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_v_retcode = glp_read_mps(__pyx_v__prob, __pyx_t_4, NULL, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1229
 *         retcode = glpk.read_mps(_prob, str2mpsfmt[format], NULL,
 *                                 str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error reading MPS file.")
 *         return problem
 */
  __pyx_t_6 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_6) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1230
 *                                 str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading MPS file.")             # <<<<<<<<<<<<<<
 *         return problem
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__16, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1231
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading MPS file.")
 *         return problem             # <<<<<<<<<<<<<<
 * 
 *     def write_mps(self, str format, str fname):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_problem);
  __pyx_r = __pyx_v_problem;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1222
 * 
 *     @classmethod
 *     def read_mps(cls, str format, str fname):             # <<<<<<<<<<<<<<
 *         """Read problem data in MPS format"""
 *         problem = cls()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.read_mps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_problem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1233
 *         return problem
 * 
 *     def write_mps(self, str format, str fname):             # <<<<<<<<<<<<<<
 *         """Write problem data in MPS format"""
 *         retcode = glpk.write_mps(self._prob, str2mpsfmt[format], NULL,
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_251write_mps(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_250write_mps[] = "Problem.write_mps(self, str format, str fname)\nWrite problem data in MPS format";
static PyObject *__pyx_pw_8ecyglpki_7Problem_251write_mps(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_format = 0;
  PyObject *__pyx_v_fname = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_mps (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_format,&__pyx_n_s_fname,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_format)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("write_mps", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_mps") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_format = ((PyObject*)values[0]);
    __pyx_v_fname = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("write_mps", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.write_mps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_format), (&PyString_Type), 1, "format", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1233; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_250write_mps(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_format, __pyx_v_fname);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_250write_mps(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_format, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  char *__pyx_t_3;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write_mps", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1235
 *     def write_mps(self, str format, str fname):
 *         """Write problem data in MPS format"""
 *         retcode = glpk.write_mps(self._prob, str2mpsfmt[format], NULL,             # <<<<<<<<<<<<<<
 *                                  str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_str2mpsfmt, __pyx_v_format); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1236
 *         """Write problem data in MPS format"""
 *         retcode = glpk.write_mps(self._prob, str2mpsfmt[format], NULL,
 *                                  str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing MPS file.")
 */
  __pyx_t_3 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1236; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1235
 *     def write_mps(self, str format, str fname):
 *         """Write problem data in MPS format"""
 *         retcode = glpk.write_mps(self._prob, str2mpsfmt[format], NULL,             # <<<<<<<<<<<<<<
 *                                  str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_v_retcode = glp_write_mps(__pyx_v_self->_prob, __pyx_t_2, NULL, __pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1237
 *         retcode = glpk.write_mps(self._prob, str2mpsfmt[format], NULL,
 *                                  str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing MPS file.")
 * 
 */
  __pyx_t_4 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_4) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1238
 *                                  str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing MPS file.")             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__17, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1233
 *         return problem
 * 
 *     def write_mps(self, str format, str fname):             # <<<<<<<<<<<<<<
 *         """Write problem data in MPS format"""
 *         retcode = glpk.write_mps(self._prob, str2mpsfmt[format], NULL,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.write_mps", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1241
 * 
 *     @classmethod
 *     def read_lp(cls, str fname):             # <<<<<<<<<<<<<<
 *         """Read problem data in CPLEX LP format"""
 *         problem = cls()
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_253read_lp(PyObject *__pyx_v_cls, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_252read_lp[] = "Problem.read_lp(type cls, str fname)\nRead problem data in CPLEX LP format";
static PyObject *__pyx_pw_8ecyglpki_7Problem_253read_lp(PyObject *__pyx_v_cls, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_lp (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_252read_lp(((PyObject*)__pyx_v_cls), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_252read_lp(PyObject *__pyx_v_cls, PyObject *__pyx_v_fname) {
  PyObject *__pyx_v_problem = NULL;
  struct glp_prob *__pyx_v__prob;
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  void *__pyx_t_3;
  char *__pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read_lp", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1243
 *     def read_lp(cls, str fname):
 *         """Read problem data in CPLEX LP format"""
 *         problem = cls()             # <<<<<<<<<<<<<<
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1243; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_problem = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1245
 *         problem = cls()
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         retcode = glpk.read_lp(_prob, NULL, str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_prob_ptr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1244
 *         """Read problem data in CPLEX LP format"""
 *         problem = cls()
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     problem._prob_ptr(), NULL)
 *         retcode = glpk.read_lp(_prob, NULL, str2chars(fname))
 */
  __pyx_t_3 = PyCapsule_GetPointer(__pyx_t_2, NULL); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1244; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v__prob = ((struct glp_prob *)__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1246
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 *         retcode = glpk.read_lp(_prob, NULL, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading LP file.")
 */
  __pyx_t_4 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1246; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_read_lp(__pyx_v__prob, NULL, __pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1247
 *                                                     problem._prob_ptr(), NULL)
 *         retcode = glpk.read_lp(_prob, NULL, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error reading LP file.")
 *         return problem
 */
  __pyx_t_5 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_5) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1248
 *         retcode = glpk.read_lp(_prob, NULL, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading LP file.")             # <<<<<<<<<<<<<<
 *         return problem
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1249
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading LP file.")
 *         return problem             # <<<<<<<<<<<<<<
 * 
 *     def write_lp(self, str fname):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_problem);
  __pyx_r = __pyx_v_problem;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1241
 * 
 *     @classmethod
 *     def read_lp(cls, str fname):             # <<<<<<<<<<<<<<
 *         """Read problem data in CPLEX LP format"""
 *         problem = cls()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.read_lp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_problem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1251
 *         return problem
 * 
 *     def write_lp(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write problem data in CPLEX LP format"""
 *         retcode = glpk.write_lp(self._prob, NULL, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_255write_lp(PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_254write_lp[] = "Problem.write_lp(self, str fname)\nWrite problem data in CPLEX LP format";
static PyObject *__pyx_pw_8ecyglpki_7Problem_255write_lp(PyObject *__pyx_v_self, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_lp (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_254write_lp(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_254write_lp(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write_lp", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1253
 *     def write_lp(self, str fname):
 *         """Write problem data in CPLEX LP format"""
 *         retcode = glpk.write_lp(self._prob, NULL, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing LP file.")
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1253; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_write_lp(__pyx_v_self->_prob, NULL, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1254
 *         """Write problem data in CPLEX LP format"""
 *         retcode = glpk.write_lp(self._prob, NULL, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing LP file.")
 * 
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1255
 *         retcode = glpk.write_lp(self._prob, NULL, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing LP file.")             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1251
 *         return problem
 * 
 *     def write_lp(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write problem data in CPLEX LP format"""
 *         retcode = glpk.write_lp(self._prob, NULL, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.write_lp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1258
 * 
 *     @classmethod
 *     def read_prob(cls, str fname):             # <<<<<<<<<<<<<<
 *         """Read problem data in GLPK format"""
 *         problem = cls()
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_257read_prob(PyObject *__pyx_v_cls, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_256read_prob[] = "Problem.read_prob(type cls, str fname)\nRead problem data in GLPK format";
static PyObject *__pyx_pw_8ecyglpki_7Problem_257read_prob(PyObject *__pyx_v_cls, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_prob (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_256read_prob(((PyObject*)__pyx_v_cls), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_256read_prob(PyObject *__pyx_v_cls, PyObject *__pyx_v_fname) {
  PyObject *__pyx_v_problem = NULL;
  struct glp_prob *__pyx_v__prob;
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  void *__pyx_t_3;
  char *__pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read_prob", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1260
 *     def read_prob(cls, str fname):
 *         """Read problem data in GLPK format"""
 *         problem = cls()             # <<<<<<<<<<<<<<
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_problem = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1262
 *         problem = cls()
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         retcode = glpk.read_prob(_prob, 0, str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_prob_ptr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1262; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1261
 *         """Read problem data in GLPK format"""
 *         problem = cls()
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     problem._prob_ptr(), NULL)
 *         retcode = glpk.read_prob(_prob, 0, str2chars(fname))
 */
  __pyx_t_3 = PyCapsule_GetPointer(__pyx_t_2, NULL); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1261; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v__prob = ((struct glp_prob *)__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1263
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 *         retcode = glpk.read_prob(_prob, 0, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading GLPK file.")
 */
  __pyx_t_4 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1263; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_read_prob(__pyx_v__prob, 0, __pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1264
 *                                                     problem._prob_ptr(), NULL)
 *         retcode = glpk.read_prob(_prob, 0, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error reading GLPK file.")
 *         return problem
 */
  __pyx_t_5 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_5) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1265
 *         retcode = glpk.read_prob(_prob, 0, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading GLPK file.")             # <<<<<<<<<<<<<<
 *         return problem
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__20, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1266
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading GLPK file.")
 *         return problem             # <<<<<<<<<<<<<<
 * 
 *     def write_prob(self, str fname):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_problem);
  __pyx_r = __pyx_v_problem;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1258
 * 
 *     @classmethod
 *     def read_prob(cls, str fname):             # <<<<<<<<<<<<<<
 *         """Read problem data in GLPK format"""
 *         problem = cls()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.read_prob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_problem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1268
 *         return problem
 * 
 *     def write_prob(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write problem data in GLPK format"""
 *         retcode = glpk.write_prob(self._prob, 0, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_259write_prob(PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_258write_prob[] = "Problem.write_prob(self, str fname)\nWrite problem data in GLPK format";
static PyObject *__pyx_pw_8ecyglpki_7Problem_259write_prob(PyObject *__pyx_v_self, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_prob (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1268; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_258write_prob(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_258write_prob(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write_prob", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1270
 *     def write_prob(self, str fname):
 *         """Write problem data in GLPK format"""
 *         retcode = glpk.write_prob(self._prob, 0, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing GLPK file.")
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1270; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_write_prob(__pyx_v_self->_prob, 0, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1271
 *         """Write problem data in GLPK format"""
 *         retcode = glpk.write_prob(self._prob, 0, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing GLPK file.")
 * 
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1272
 *         retcode = glpk.write_prob(self._prob, 0, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing GLPK file.")             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__21, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1268
 *         return problem
 * 
 *     def write_prob(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write problem data in GLPK format"""
 *         retcode = glpk.write_prob(self._prob, 0, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.write_prob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1275
 * 
 *     @classmethod
 *     def read_cnfsat(cls, str fname):             # <<<<<<<<<<<<<<
 *         """Read CNF-SAT problem data in DIMACS format"""
 *         problem = cls()
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_261read_cnfsat(PyObject *__pyx_v_cls, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_260read_cnfsat[] = "Problem.read_cnfsat(type cls, str fname)\nRead CNF-SAT problem data in DIMACS format";
static PyObject *__pyx_pw_8ecyglpki_7Problem_261read_cnfsat(PyObject *__pyx_v_cls, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_cnfsat (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_260read_cnfsat(((PyObject*)__pyx_v_cls), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_260read_cnfsat(PyObject *__pyx_v_cls, PyObject *__pyx_v_fname) {
  PyObject *__pyx_v_problem = NULL;
  struct glp_prob *__pyx_v__prob;
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  void *__pyx_t_3;
  char *__pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read_cnfsat", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1277
 *     def read_cnfsat(cls, str fname):
 *         """Read CNF-SAT problem data in DIMACS format"""
 *         problem = cls()             # <<<<<<<<<<<<<<
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_problem = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1279
 *         problem = cls()
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         retcode = glpk.read_cnfsat(_prob, str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_problem, __pyx_n_s_prob_ptr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1278
 *         """Read CNF-SAT problem data in DIMACS format"""
 *         problem = cls()
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     problem._prob_ptr(), NULL)
 *         retcode = glpk.read_cnfsat(_prob, str2chars(fname))
 */
  __pyx_t_3 = PyCapsule_GetPointer(__pyx_t_2, NULL); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1278; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v__prob = ((struct glp_prob *)__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1280
 *         cdef glpk.Prob* _prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 *         retcode = glpk.read_cnfsat(_prob, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading CNF-SAT file.")
 */
  __pyx_t_4 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_4 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1280; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_read_cnfsat(__pyx_v__prob, __pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1281
 *                                                     problem._prob_ptr(), NULL)
 *         retcode = glpk.read_cnfsat(_prob, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error reading CNF-SAT file.")
 *         return problem
 */
  __pyx_t_5 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_5) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1282
 *         retcode = glpk.read_cnfsat(_prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading CNF-SAT file.")             # <<<<<<<<<<<<<<
 *         return problem
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__22, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1283
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading CNF-SAT file.")
 *         return problem             # <<<<<<<<<<<<<<
 * 
 *     def check_cnfsat(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_problem);
  __pyx_r = __pyx_v_problem;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1275
 * 
 *     @classmethod
 *     def read_cnfsat(cls, str fname):             # <<<<<<<<<<<<<<
 *         """Read CNF-SAT problem data in DIMACS format"""
 *         problem = cls()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Problem.read_cnfsat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_problem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1285
 *         return problem
 * 
 *     def check_cnfsat(self):             # <<<<<<<<<<<<<<
 *         """Check for CNF-SAT problem instance"""
 *         return not bool(glpk.check_cnfsat(self._prob))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_263check_cnfsat(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_262check_cnfsat[] = "Problem.check_cnfsat(self)\nCheck for CNF-SAT problem instance";
static PyObject *__pyx_pw_8ecyglpki_7Problem_263check_cnfsat(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("check_cnfsat (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_262check_cnfsat(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_262check_cnfsat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("check_cnfsat", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1287
 *     def check_cnfsat(self):
 *         """Check for CNF-SAT problem instance"""
 *         return not bool(glpk.check_cnfsat(self._prob))             # <<<<<<<<<<<<<<
 * 
 *     def write_cnfsat(self, str fname):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_check_cnfsat(__pyx_v_self->_prob)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_2 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyBool_FromLong((!((!(!__pyx_t_2)) != 0))); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1287; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1285
 *         return problem
 * 
 *     def check_cnfsat(self):             # <<<<<<<<<<<<<<
 *         """Check for CNF-SAT problem instance"""
 *         return not bool(glpk.check_cnfsat(self._prob))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Problem.check_cnfsat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1289
 *         return not bool(glpk.check_cnfsat(self._prob))
 * 
 *     def write_cnfsat(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write CNF-SAT problem data in DIMACS format"""
 *         retcode = glpk.write_cnfsat(self._prob, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_265write_cnfsat(PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_264write_cnfsat[] = "Problem.write_cnfsat(self, str fname)\nWrite CNF-SAT problem data in DIMACS format";
static PyObject *__pyx_pw_8ecyglpki_7Problem_265write_cnfsat(PyObject *__pyx_v_self, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_cnfsat (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1289; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_264write_cnfsat(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_264write_cnfsat(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write_cnfsat", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1291
 *     def write_cnfsat(self, str fname):
 *         """Write CNF-SAT problem data in DIMACS format"""
 *         retcode = glpk.write_cnfsat(self._prob, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing CNF-SAT file.")
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_write_cnfsat(__pyx_v_self->_prob, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1292
 *         """Write CNF-SAT problem data in DIMACS format"""
 *         retcode = glpk.write_cnfsat(self._prob, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing CNF-SAT file.")
 * 
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1293
 *         retcode = glpk.write_cnfsat(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing CNF-SAT file.")             # <<<<<<<<<<<<<<
 * 
 *     def minisat1(self):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__23, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1289
 *         return not bool(glpk.check_cnfsat(self._prob))
 * 
 *     def write_cnfsat(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write CNF-SAT problem data in DIMACS format"""
 *         retcode = glpk.write_cnfsat(self._prob, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.write_cnfsat", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1295
 *             raise RuntimeError("Error writing CNF-SAT file.")
 * 
 *     def minisat1(self):             # <<<<<<<<<<<<<<
 *         """Solve CNF-SAT problem with MiniSat solver"""
 *         cdef int retcode = glpk.minisat1(self._prob)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_267minisat1(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_266minisat1[] = "Problem.minisat1(self)\nSolve CNF-SAT problem with MiniSat solver";
static PyObject *__pyx_pw_8ecyglpki_7Problem_267minisat1(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("minisat1 (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_266minisat1(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_266minisat1(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("minisat1", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1297
 *     def minisat1(self):
 *         """Solve CNF-SAT problem with MiniSat solver"""
 *         cdef int retcode = glpk.minisat1(self._prob)             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]
 */
  __pyx_v_retcode = glp_minisat1(__pyx_v_self->_prob);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1298
 *         """Solve CNF-SAT problem with MiniSat solver"""
 *         cdef int retcode = glpk.minisat1(self._prob)
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise ioretcode2error[retcode]
 *         return self.mip_status()
 */
  __pyx_t_1 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1299
 *         cdef int retcode = glpk.minisat1(self._prob)
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]             # <<<<<<<<<<<<<<
 *         return self.mip_status()
 * 
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_ioretcode2error, __pyx_v_retcode, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1299; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1299; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1300
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]
 *         return self.mip_status()             # <<<<<<<<<<<<<<
 * 
 *     def intfeas1(self, bint use_bound, int obj_bound):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mip_status); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1300; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1295
 *             raise RuntimeError("Error writing CNF-SAT file.")
 * 
 *     def minisat1(self):             # <<<<<<<<<<<<<<
 *         """Solve CNF-SAT problem with MiniSat solver"""
 *         cdef int retcode = glpk.minisat1(self._prob)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.minisat1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1302
 *         return self.mip_status()
 * 
 *     def intfeas1(self, bint use_bound, int obj_bound):             # <<<<<<<<<<<<<<
 *         """Solve integer feasibility problem"""
 *         cdef int retcode = glpk.intfeas1(self._prob, use_bound, obj_bound)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_7Problem_269intfeas1(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_7Problem_268intfeas1[] = "Problem.intfeas1(self, bool use_bound, int obj_bound)\nSolve integer feasibility problem";
static PyObject *__pyx_pw_8ecyglpki_7Problem_269intfeas1(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_use_bound;
  int __pyx_v_obj_bound;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("intfeas1 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_use_bound,&__pyx_n_s_obj_bound,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_use_bound)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_obj_bound)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("intfeas1", 1, 2, 2, 1); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "intfeas1") < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_use_bound = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_use_bound == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_obj_bound = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_obj_bound == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("intfeas1", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1302; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Problem.intfeas1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_7Problem_268intfeas1(((struct __pyx_obj_8ecyglpki_Problem *)__pyx_v_self), __pyx_v_use_bound, __pyx_v_obj_bound);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_7Problem_268intfeas1(struct __pyx_obj_8ecyglpki_Problem *__pyx_v_self, int __pyx_v_use_bound, int __pyx_v_obj_bound) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("intfeas1", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1304
 *     def intfeas1(self, bint use_bound, int obj_bound):
 *         """Solve integer feasibility problem"""
 *         cdef int retcode = glpk.intfeas1(self._prob, use_bound, obj_bound)             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]
 */
  __pyx_v_retcode = glp_intfeas1(__pyx_v_self->_prob, __pyx_v_use_bound, __pyx_v_obj_bound);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1305
 *         """Solve integer feasibility problem"""
 *         cdef int retcode = glpk.intfeas1(self._prob, use_bound, obj_bound)
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise ioretcode2error[retcode]
 *         return self.mip_status()
 */
  __pyx_t_1 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1306
 *         cdef int retcode = glpk.intfeas1(self._prob, use_bound, obj_bound)
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]             # <<<<<<<<<<<<<<
 *         return self.mip_status()
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_ioretcode2error, __pyx_v_retcode, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1307
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]
 *         return self.mip_status()             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_mip_status); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1307; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1302
 *         return self.mip_status()
 * 
 *     def intfeas1(self, bint use_bound, int obj_bound):             # <<<<<<<<<<<<<<
 *         """Solve integer feasibility problem"""
 *         cdef int retcode = glpk.intfeas1(self._prob, use_bound, obj_bound)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Problem.intfeas1", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":68
 *     cdef readonly Problem problem
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         problem = Problem(PyCapsule_New(glpk.ios_get_prob(self._tree),
 *                                         NULL, NULL))
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_4Tree_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_8ecyglpki_4Tree_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  if (unlikely(PyTuple_GET_SIZE(__pyx_args) > 0)) {
    __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); return -1;}
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "__cinit__", 0))) return -1;
  __pyx_r = __pyx_pf_8ecyglpki_4Tree___cinit__(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_4Tree___cinit__(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self) {
  CYTHON_UNUSED struct __pyx_obj_8ecyglpki_Problem *__pyx_v_problem = NULL;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":69
 * 
 *     def __cinit__(self):
 *         problem = Problem(PyCapsule_New(glpk.ios_get_prob(self._tree),             # <<<<<<<<<<<<<<
 *                                         NULL, NULL))
 * 
 */
  __pyx_t_1 = PyCapsule_New(glp_ios_get_prob(__pyx_v_self->_tree), NULL, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Problem)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_problem = ((struct __pyx_obj_8ecyglpki_Problem *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":68
 *     cdef readonly Problem problem
 * 
 *     def __cinit__(self):             # <<<<<<<<<<<<<<
 *         problem = Problem(PyCapsule_New(glpk.ios_get_prob(self._tree),
 *                                         NULL, NULL))
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Tree.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_problem);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":74
 *     ### Translated GLPK functions ###
 * 
 *     def ios_reason(self):             # <<<<<<<<<<<<<<
 *         """Determine reason for calling the callback routine"""
 *         return reascode2str[glpk.ios_reason(self._tree)]
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_3ios_reason(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_2ios_reason[] = "Tree.ios_reason(self)\nDetermine reason for calling the callback routine";
static PyObject *__pyx_pw_8ecyglpki_4Tree_3ios_reason(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_reason (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_2ios_reason(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_2ios_reason(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_reason", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":76
 *     def ios_reason(self):
 *         """Determine reason for calling the callback routine"""
 *         return reascode2str[glpk.ios_reason(self._tree)]             # <<<<<<<<<<<<<<
 * 
 *     def ios_tree_size(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = glp_ios_reason(__pyx_v_self->_tree);
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_reascode2str, __pyx_t_1, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 76; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":74
 *     ### Translated GLPK functions ###
 * 
 *     def ios_reason(self):             # <<<<<<<<<<<<<<
 *         """Determine reason for calling the callback routine"""
 *         return reascode2str[glpk.ios_reason(self._tree)]
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_reason", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":78
 *         return reascode2str[glpk.ios_reason(self._tree)]
 * 
 *     def ios_tree_size(self):             # <<<<<<<<<<<<<<
 *         """Determine size of the branch-and-bound tree"""
 *         cdef int a_cnt
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_5ios_tree_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_4ios_tree_size[] = "Tree.ios_tree_size(self)\nDetermine size of the branch-and-bound tree";
static PyObject *__pyx_pw_8ecyglpki_4Tree_5ios_tree_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_tree_size (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_4ios_tree_size(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_4ios_tree_size(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self) {
  int __pyx_v_a_cnt;
  int __pyx_v_n_cnt;
  int __pyx_v_t_cnt;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_tree_size", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":83
 *         cdef int n_cnt
 *         cdef int t_cnt
 *         glpk.ios_tree_size(self._tree, &a_cnt, &n_cnt, &t_cnt)             # <<<<<<<<<<<<<<
 *         return {'active': a_cnt, 'current': n_cnt, 'total': t_cnt}
 * 
 */
  glp_ios_tree_size(__pyx_v_self->_tree, (&__pyx_v_a_cnt), (&__pyx_v_n_cnt), (&__pyx_v_t_cnt));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":84
 *         cdef int t_cnt
 *         glpk.ios_tree_size(self._tree, &a_cnt, &n_cnt, &t_cnt)
 *         return {'active': a_cnt, 'current': n_cnt, 'total': t_cnt}             # <<<<<<<<<<<<<<
 * 
 *     def ios_curr_node(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_a_cnt); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_active, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_n_cnt); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_current, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_t_cnt); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_total, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 84; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":78
 *         return reascode2str[glpk.ios_reason(self._tree)]
 * 
 *     def ios_tree_size(self):             # <<<<<<<<<<<<<<
 *         """Determine size of the branch-and-bound tree"""
 *         cdef int a_cnt
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_tree_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":86
 *         return {'active': a_cnt, 'current': n_cnt, 'total': t_cnt}
 * 
 *     def ios_curr_node(self):             # <<<<<<<<<<<<<<
 *         """Determine current active subproblem"""
 *         node = glpk.ios_curr_node(self._tree)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_7ios_curr_node(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_6ios_curr_node[] = "Tree.ios_curr_node(self)\nDetermine current active subproblem";
static PyObject *__pyx_pw_8ecyglpki_4Tree_7ios_curr_node(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_curr_node (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_6ios_curr_node(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_6ios_curr_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self) {
  int __pyx_v_node;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_curr_node", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":88
 *     def ios_curr_node(self):
 *         """Determine current active subproblem"""
 *         node = glpk.ios_curr_node(self._tree)             # <<<<<<<<<<<<<<
 *         if node is 0:
 *             raise Exception("There is no current active subproblem.")
 */
  __pyx_v_node = glp_ios_curr_node(__pyx_v_self->_tree);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":89
 *         """Determine current active subproblem"""
 *         node = glpk.ios_curr_node(self._tree)
 *         if node is 0:             # <<<<<<<<<<<<<<
 *             raise Exception("There is no current active subproblem.")
 *         return node
 */
  __pyx_t_1 = ((__pyx_v_node == 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":90
 *         node = glpk.ios_curr_node(self._tree)
 *         if node is 0:
 *             raise Exception("There is no current active subproblem.")             # <<<<<<<<<<<<<<
 *         return node
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_Exception, __pyx_tuple__24, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":91
 *         if node is 0:
 *             raise Exception("There is no current active subproblem.")
 *         return node             # <<<<<<<<<<<<<<
 * 
 *     def ios_next_node(self, int node):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 91; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":86
 *         return {'active': a_cnt, 'current': n_cnt, 'total': t_cnt}
 * 
 *     def ios_curr_node(self):             # <<<<<<<<<<<<<<
 *         """Determine current active subproblem"""
 *         node = glpk.ios_curr_node(self._tree)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_curr_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":93
 *         return node
 * 
 *     def ios_next_node(self, int node):             # <<<<<<<<<<<<<<
 *         """Determine next active subproblem"""
 *         if node is 0:
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_9ios_next_node(PyObject *__pyx_v_self, PyObject *__pyx_arg_node); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_8ios_next_node[] = "Tree.ios_next_node(self, int node)\nDetermine next active subproblem";
static PyObject *__pyx_pw_8ecyglpki_4Tree_9ios_next_node(PyObject *__pyx_v_self, PyObject *__pyx_arg_node) {
  int __pyx_v_node;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_next_node (wrapper)", 0);
  assert(__pyx_arg_node); {
    __pyx_v_node = __Pyx_PyInt_As_int(__pyx_arg_node); if (unlikely((__pyx_v_node == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 93; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Tree.ios_next_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_8ios_next_node(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self), ((int)__pyx_v_node));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_8ios_next_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_next_node", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":95
 *     def ios_next_node(self, int node):
 *         """Determine next active subproblem"""
 *         if node is 0:             # <<<<<<<<<<<<<<
 *             return self.ios_first_node()
 *         else:
 */
  __pyx_t_1 = ((__pyx_v_node == 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":96
 *         """Determine next active subproblem"""
 *         if node is 0:
 *             return self.ios_first_node()             # <<<<<<<<<<<<<<
 *         else:
 *             node = glpk.ios_next_node(self._tree, node)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ios_first_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 96; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":98
 *             return self.ios_first_node()
 *         else:
 *             node = glpk.ios_next_node(self._tree, node)             # <<<<<<<<<<<<<<
 *             if node is 0:
 *                 raise Exception("There is no next active subproblem.")
 */
    __pyx_v_node = glp_ios_next_node(__pyx_v_self->_tree, __pyx_v_node);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":99
 *         else:
 *             node = glpk.ios_next_node(self._tree, node)
 *             if node is 0:             # <<<<<<<<<<<<<<
 *                 raise Exception("There is no next active subproblem.")
 *             return node
 */
    __pyx_t_1 = ((__pyx_v_node == 0) != 0);
    if (__pyx_t_1) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":100
 *             node = glpk.ios_next_node(self._tree, node)
 *             if node is 0:
 *                 raise Exception("There is no next active subproblem.")             # <<<<<<<<<<<<<<
 *             return node
 * 
 */
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_Exception, __pyx_tuple__25, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":101
 *             if node is 0:
 *                 raise Exception("There is no next active subproblem.")
 *             return node             # <<<<<<<<<<<<<<
 * 
 *     def ios_first_node(self):  # variant of ios_next_node
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_node); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 101; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":93
 *         return node
 * 
 *     def ios_next_node(self, int node):             # <<<<<<<<<<<<<<
 *         """Determine next active subproblem"""
 *         if node is 0:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_next_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":103
 *             return node
 * 
 *     def ios_first_node(self):  # variant of ios_next_node             # <<<<<<<<<<<<<<
 *         """Determine first active subproblem"""
 *         node = glpk.ios_next_node(self._tree, 0)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_11ios_first_node(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_10ios_first_node[] = "Tree.ios_first_node(self)\nDetermine first active subproblem";
static PyObject *__pyx_pw_8ecyglpki_4Tree_11ios_first_node(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_first_node (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_10ios_first_node(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_10ios_first_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self) {
  int __pyx_v_node;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_first_node", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":105
 *     def ios_first_node(self):  # variant of ios_next_node
 *         """Determine first active subproblem"""
 *         node = glpk.ios_next_node(self._tree, 0)             # <<<<<<<<<<<<<<
 *         if node is 0:
 *             raise Exception("The search tree is empty.")
 */
  __pyx_v_node = glp_ios_next_node(__pyx_v_self->_tree, 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":106
 *         """Determine first active subproblem"""
 *         node = glpk.ios_next_node(self._tree, 0)
 *         if node is 0:             # <<<<<<<<<<<<<<
 *             raise Exception("The search tree is empty.")
 *         return node
 */
  __pyx_t_1 = ((__pyx_v_node == 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":107
 *         node = glpk.ios_next_node(self._tree, 0)
 *         if node is 0:
 *             raise Exception("The search tree is empty.")             # <<<<<<<<<<<<<<
 *         return node
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_Exception, __pyx_tuple__26, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":108
 *         if node is 0:
 *             raise Exception("The search tree is empty.")
 *         return node             # <<<<<<<<<<<<<<
 * 
 *     def ios_prev_node(self, int node):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":103
 *             return node
 * 
 *     def ios_first_node(self):  # variant of ios_next_node             # <<<<<<<<<<<<<<
 *         """Determine first active subproblem"""
 *         node = glpk.ios_next_node(self._tree, 0)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_first_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":110
 *         return node
 * 
 *     def ios_prev_node(self, int node):             # <<<<<<<<<<<<<<
 *         """Determine previous active subproblem"""
 *         if node is 0:
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_13ios_prev_node(PyObject *__pyx_v_self, PyObject *__pyx_arg_node); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_12ios_prev_node[] = "Tree.ios_prev_node(self, int node)\nDetermine previous active subproblem";
static PyObject *__pyx_pw_8ecyglpki_4Tree_13ios_prev_node(PyObject *__pyx_v_self, PyObject *__pyx_arg_node) {
  int __pyx_v_node;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_prev_node (wrapper)", 0);
  assert(__pyx_arg_node); {
    __pyx_v_node = __Pyx_PyInt_As_int(__pyx_arg_node); if (unlikely((__pyx_v_node == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Tree.ios_prev_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_12ios_prev_node(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self), ((int)__pyx_v_node));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_12ios_prev_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_prev_node", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":112
 *     def ios_prev_node(self, int node):
 *         """Determine previous active subproblem"""
 *         if node is 0:             # <<<<<<<<<<<<<<
 *             return self.ios_last_node()
 *         else:
 */
  __pyx_t_1 = ((__pyx_v_node == 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":113
 *         """Determine previous active subproblem"""
 *         if node is 0:
 *             return self.ios_last_node()             # <<<<<<<<<<<<<<
 *         else:
 *             node = glpk.ios_prev_node(self._tree, node)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_ios_last_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":115
 *             return self.ios_last_node()
 *         else:
 *             node = glpk.ios_prev_node(self._tree, node)             # <<<<<<<<<<<<<<
 *             if node is 0:
 *                 raise Exception("There is no previous active subproblem.")
 */
    __pyx_v_node = glp_ios_prev_node(__pyx_v_self->_tree, __pyx_v_node);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":116
 *         else:
 *             node = glpk.ios_prev_node(self._tree, node)
 *             if node is 0:             # <<<<<<<<<<<<<<
 *                 raise Exception("There is no previous active subproblem.")
 *             return node
 */
    __pyx_t_1 = ((__pyx_v_node == 0) != 0);
    if (__pyx_t_1) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":117
 *             node = glpk.ios_prev_node(self._tree, node)
 *             if node is 0:
 *                 raise Exception("There is no previous active subproblem.")             # <<<<<<<<<<<<<<
 *             return node
 * 
 */
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_Exception, __pyx_tuple__27, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_Raise(__pyx_t_3, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":118
 *             if node is 0:
 *                 raise Exception("There is no previous active subproblem.")
 *             return node             # <<<<<<<<<<<<<<
 * 
 *     def ios_last_node(self):  # variant of ios_prev_node
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_node); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":110
 *         return node
 * 
 *     def ios_prev_node(self, int node):             # <<<<<<<<<<<<<<
 *         """Determine previous active subproblem"""
 *         if node is 0:
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_prev_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":120
 *             return node
 * 
 *     def ios_last_node(self):  # variant of ios_prev_node             # <<<<<<<<<<<<<<
 *         """Determine last active subproblem"""
 *         node = glpk.ios_next_node(self._tree, 0)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_15ios_last_node(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_14ios_last_node[] = "Tree.ios_last_node(self)\nDetermine last active subproblem";
static PyObject *__pyx_pw_8ecyglpki_4Tree_15ios_last_node(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_last_node (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_14ios_last_node(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_14ios_last_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self) {
  int __pyx_v_node;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_last_node", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":122
 *     def ios_last_node(self):  # variant of ios_prev_node
 *         """Determine last active subproblem"""
 *         node = glpk.ios_next_node(self._tree, 0)             # <<<<<<<<<<<<<<
 *         if node is 0:
 *             raise Exception("The search tree is empty.")
 */
  __pyx_v_node = glp_ios_next_node(__pyx_v_self->_tree, 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":123
 *         """Determine last active subproblem"""
 *         node = glpk.ios_next_node(self._tree, 0)
 *         if node is 0:             # <<<<<<<<<<<<<<
 *             raise Exception("The search tree is empty.")
 *         return node
 */
  __pyx_t_1 = ((__pyx_v_node == 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":124
 *         node = glpk.ios_next_node(self._tree, 0)
 *         if node is 0:
 *             raise Exception("The search tree is empty.")             # <<<<<<<<<<<<<<
 *         return node
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_Exception, __pyx_tuple__28, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":125
 *         if node is 0:
 *             raise Exception("The search tree is empty.")
 *         return node             # <<<<<<<<<<<<<<
 * 
 *     def ios_up_node(self, int node):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 125; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":120
 *             return node
 * 
 *     def ios_last_node(self):  # variant of ios_prev_node             # <<<<<<<<<<<<<<
 *         """Determine last active subproblem"""
 *         node = glpk.ios_next_node(self._tree, 0)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_last_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":127
 *         return node
 * 
 *     def ios_up_node(self, int node):             # <<<<<<<<<<<<<<
 *         """Determine parent subproblem"""
 *         node = glpk.ios_up_node(self._tree, node)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_17ios_up_node(PyObject *__pyx_v_self, PyObject *__pyx_arg_node); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_16ios_up_node[] = "Tree.ios_up_node(self, int node)\nDetermine parent subproblem";
static PyObject *__pyx_pw_8ecyglpki_4Tree_17ios_up_node(PyObject *__pyx_v_self, PyObject *__pyx_arg_node) {
  int __pyx_v_node;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_up_node (wrapper)", 0);
  assert(__pyx_arg_node); {
    __pyx_v_node = __Pyx_PyInt_As_int(__pyx_arg_node); if (unlikely((__pyx_v_node == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 127; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Tree.ios_up_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_16ios_up_node(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self), ((int)__pyx_v_node));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_16ios_up_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_up_node", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":129
 *     def ios_up_node(self, int node):
 *         """Determine parent subproblem"""
 *         node = glpk.ios_up_node(self._tree, node)             # <<<<<<<<<<<<<<
 *         if node is 0:
 *             raise Exception("This is the search tree root; it has no parent.")
 */
  __pyx_v_node = glp_ios_up_node(__pyx_v_self->_tree, __pyx_v_node);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":130
 *         """Determine parent subproblem"""
 *         node = glpk.ios_up_node(self._tree, node)
 *         if node is 0:             # <<<<<<<<<<<<<<
 *             raise Exception("This is the search tree root; it has no parent.")
 *         return node
 */
  __pyx_t_1 = ((__pyx_v_node == 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":131
 *         node = glpk.ios_up_node(self._tree, node)
 *         if node is 0:
 *             raise Exception("This is the search tree root; it has no parent.")             # <<<<<<<<<<<<<<
 *         return node
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_Exception, __pyx_tuple__29, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":132
 *         if node is 0:
 *             raise Exception("This is the search tree root; it has no parent.")
 *         return node             # <<<<<<<<<<<<<<
 * 
 *     def ios_node_level(self, int node):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":127
 *         return node
 * 
 *     def ios_up_node(self, int node):             # <<<<<<<<<<<<<<
 *         """Determine parent subproblem"""
 *         node = glpk.ios_up_node(self._tree, node)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_up_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":134
 *         return node
 * 
 *     def ios_node_level(self, int node):             # <<<<<<<<<<<<<<
 *         """Determine subproblem level"""
 *         return glpk.ios_node_level(self._tree, node)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_19ios_node_level(PyObject *__pyx_v_self, PyObject *__pyx_arg_node); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_18ios_node_level[] = "Tree.ios_node_level(self, int node)\nDetermine subproblem level";
static PyObject *__pyx_pw_8ecyglpki_4Tree_19ios_node_level(PyObject *__pyx_v_self, PyObject *__pyx_arg_node) {
  int __pyx_v_node;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_node_level (wrapper)", 0);
  assert(__pyx_arg_node); {
    __pyx_v_node = __Pyx_PyInt_As_int(__pyx_arg_node); if (unlikely((__pyx_v_node == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Tree.ios_node_level", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_18ios_node_level(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self), ((int)__pyx_v_node));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_18ios_node_level(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_node_level", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":136
 *     def ios_node_level(self, int node):
 *         """Determine subproblem level"""
 *         return glpk.ios_node_level(self._tree, node)             # <<<<<<<<<<<<<<
 * 
 *     def ios_node_bound(self, int node):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_ios_node_level(__pyx_v_self->_tree, __pyx_v_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":134
 *         return node
 * 
 *     def ios_node_level(self, int node):             # <<<<<<<<<<<<<<
 *         """Determine subproblem level"""
 *         return glpk.ios_node_level(self._tree, node)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_node_level", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":138
 *         return glpk.ios_node_level(self._tree, node)
 * 
 *     def ios_node_bound(self, int node):             # <<<<<<<<<<<<<<
 *         """Determine subproblem local bound"""
 *         return glpk.ios_node_bound(self._tree, node)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_21ios_node_bound(PyObject *__pyx_v_self, PyObject *__pyx_arg_node); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_20ios_node_bound[] = "Tree.ios_node_bound(self, int node)\nDetermine subproblem local bound";
static PyObject *__pyx_pw_8ecyglpki_4Tree_21ios_node_bound(PyObject *__pyx_v_self, PyObject *__pyx_arg_node) {
  int __pyx_v_node;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_node_bound (wrapper)", 0);
  assert(__pyx_arg_node); {
    __pyx_v_node = __Pyx_PyInt_As_int(__pyx_arg_node); if (unlikely((__pyx_v_node == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 138; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Tree.ios_node_bound", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_20ios_node_bound(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self), ((int)__pyx_v_node));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_20ios_node_bound(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_node_bound", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":140
 *     def ios_node_bound(self, int node):
 *         """Determine subproblem local bound"""
 *         return glpk.ios_node_bound(self._tree, node)             # <<<<<<<<<<<<<<
 * 
 *     def ios_best_node(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(glp_ios_node_bound(__pyx_v_self->_tree, __pyx_v_node)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 140; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":138
 *         return glpk.ios_node_level(self._tree, node)
 * 
 *     def ios_node_bound(self, int node):             # <<<<<<<<<<<<<<
 *         """Determine subproblem local bound"""
 *         return glpk.ios_node_bound(self._tree, node)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_node_bound", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":142
 *         return glpk.ios_node_bound(self._tree, node)
 * 
 *     def ios_best_node(self):             # <<<<<<<<<<<<<<
 *         """Find active subproblem with best local bound"""
 *         node = glpk.ios_best_node(self._tree)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_23ios_best_node(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_22ios_best_node[] = "Tree.ios_best_node(self)\nFind active subproblem with best local bound";
static PyObject *__pyx_pw_8ecyglpki_4Tree_23ios_best_node(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_best_node (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_22ios_best_node(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_22ios_best_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self) {
  int __pyx_v_node;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_best_node", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":144
 *     def ios_best_node(self):
 *         """Find active subproblem with best local bound"""
 *         node = glpk.ios_best_node(self._tree)             # <<<<<<<<<<<<<<
 *         if node is 0:
 *             raise Exception("The search tree is empty.")
 */
  __pyx_v_node = glp_ios_best_node(__pyx_v_self->_tree);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":145
 *         """Find active subproblem with best local bound"""
 *         node = glpk.ios_best_node(self._tree)
 *         if node is 0:             # <<<<<<<<<<<<<<
 *             raise Exception("The search tree is empty.")
 *         return node
 */
  __pyx_t_1 = ((__pyx_v_node == 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":146
 *         node = glpk.ios_best_node(self._tree)
 *         if node is 0:
 *             raise Exception("The search tree is empty.")             # <<<<<<<<<<<<<<
 *         return node
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_Exception, __pyx_tuple__30, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[1]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":147
 *         if node is 0:
 *             raise Exception("The search tree is empty.")
 *         return node             # <<<<<<<<<<<<<<
 * 
 *     def ios_mip_gap(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_node); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 147; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":142
 *         return glpk.ios_node_bound(self._tree, node)
 * 
 *     def ios_best_node(self):             # <<<<<<<<<<<<<<
 *         """Find active subproblem with best local bound"""
 *         node = glpk.ios_best_node(self._tree)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_best_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":149
 *         return node
 * 
 *     def ios_mip_gap(self):             # <<<<<<<<<<<<<<
 *         """Compute relative MIP gap"""
 *         return glpk.ios_mip_gap(self._tree)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_25ios_mip_gap(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_24ios_mip_gap[] = "Tree.ios_mip_gap(self)\nCompute relative MIP gap";
static PyObject *__pyx_pw_8ecyglpki_4Tree_25ios_mip_gap(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_mip_gap (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_24ios_mip_gap(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_24ios_mip_gap(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_mip_gap", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":151
 *     def ios_mip_gap(self):
 *         """Compute relative MIP gap"""
 *         return glpk.ios_mip_gap(self._tree)             # <<<<<<<<<<<<<<
 * 
 *     def ios_node_data(self, int node):  # TODO: use Python object for node data?
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(glp_ios_mip_gap(__pyx_v_self->_tree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":149
 *         return node
 * 
 *     def ios_mip_gap(self):             # <<<<<<<<<<<<<<
 *         """Compute relative MIP gap"""
 *         return glpk.ios_mip_gap(self._tree)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_mip_gap", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":153
 *         return glpk.ios_mip_gap(self._tree)
 * 
 *     def ios_node_data(self, int node):  # TODO: use Python object for node data?             # <<<<<<<<<<<<<<
 *         """Access subproblem application-specific data"""
 *         cdef glpk.CBInfo info = glpk.ios_node_data(self._tree, node)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_27ios_node_data(PyObject *__pyx_v_self, PyObject *__pyx_arg_node); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_26ios_node_data[] = "Tree.ios_node_data(self, int node)\nAccess subproblem application-specific data";
static PyObject *__pyx_pw_8ecyglpki_4Tree_27ios_node_data(PyObject *__pyx_v_self, PyObject *__pyx_arg_node) {
  int __pyx_v_node;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_node_data (wrapper)", 0);
  assert(__pyx_arg_node); {
    __pyx_v_node = __Pyx_PyInt_As_int(__pyx_arg_node); if (unlikely((__pyx_v_node == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Tree.ios_node_data", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_26ios_node_data(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self), ((int)__pyx_v_node));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_26ios_node_data(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node) {
  __pyx_t_4glpk_CBInfo __pyx_v_info;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_node_data", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":155
 *     def ios_node_data(self, int node):  # TODO: use Python object for node data?
 *         """Access subproblem application-specific data"""
 *         cdef glpk.CBInfo info = glpk.ios_node_data(self._tree, node)             # <<<<<<<<<<<<<<
 *         if info is not NULL:
 *             return CallbackInfo(PyCapsule_New(info, NULL, NULL))
 */
  __pyx_v_info = glp_ios_node_data(__pyx_v_self->_tree, __pyx_v_node);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":156
 *         """Access subproblem application-specific data"""
 *         cdef glpk.CBInfo info = glpk.ios_node_data(self._tree, node)
 *         if info is not NULL:             # <<<<<<<<<<<<<<
 *             return CallbackInfo(PyCapsule_New(info, NULL, NULL))
 *         else:
 */
  __pyx_t_1 = ((__pyx_v_info != NULL) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":157
 *         cdef glpk.CBInfo info = glpk.ios_node_data(self._tree, node)
 *         if info is not NULL:
 *             return CallbackInfo(PyCapsule_New(info, NULL, NULL))             # <<<<<<<<<<<<<<
 *         else:
 *             return None
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_2 = PyCapsule_New(__pyx_v_info, NULL, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
    __Pyx_GIVEREF(__pyx_t_2);
    __pyx_t_2 = 0;
    __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_CallbackInfo)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 157; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_r = __pyx_t_2;
    __pyx_t_2 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":159
 *             return CallbackInfo(PyCapsule_New(info, NULL, NULL))
 *         else:
 *             return None             # <<<<<<<<<<<<<<
 * 
 *     def ios_row_attr(self, row):
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(Py_None);
    __pyx_r = Py_None;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":153
 *         return glpk.ios_mip_gap(self._tree)
 * 
 *     def ios_node_data(self, int node):  # TODO: use Python object for node data?             # <<<<<<<<<<<<<<
 *         """Access subproblem application-specific data"""
 *         cdef glpk.CBInfo info = glpk.ios_node_data(self._tree, node)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_node_data", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":161
 *             return None
 * 
 *     def ios_row_attr(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve additional row attributes"""
 *         cdef glpk.Attr* attr
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_29ios_row_attr(PyObject *__pyx_v_self, PyObject *__pyx_v_row); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_28ios_row_attr[] = "Tree.ios_row_attr(self, row)\nRetrieve additional row attributes";
static PyObject *__pyx_pw_8ecyglpki_4Tree_29ios_row_attr(PyObject *__pyx_v_self, PyObject *__pyx_v_row) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_row_attr (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_28ios_row_attr(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self), ((PyObject *)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_28ios_row_attr(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, PyObject *__pyx_v_row) {
  glp_attr *__pyx_v_attr;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_row_attr", 0);
  __Pyx_INCREF(__pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":164
 *         """Retrieve additional row attributes"""
 *         cdef glpk.Attr* attr
 *         row = self.problem.find_row_as_needed(row)             # <<<<<<<<<<<<<<
 *         glpk.ios_row_attr(self._tree, row, attr)
 *         return {'level': attr.level,
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->problem), __pyx_n_s_find_row_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_row);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_row);
  __Pyx_GIVEREF(__pyx_v_row);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_row, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":165
 *         cdef glpk.Attr* attr
 *         row = self.problem.find_row_as_needed(row)
 *         glpk.ios_row_attr(self._tree, row, attr)             # <<<<<<<<<<<<<<
 *         return {'level': attr.level,
 *                 'origin': origin2str[attr.origin],
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_row); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_ios_row_attr(__pyx_v_self->_tree, __pyx_t_4, __pyx_v_attr);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":166
 *         row = self.problem.find_row_as_needed(row)
 *         glpk.ios_row_attr(self._tree, row, attr)
 *         return {'level': attr.level,             # <<<<<<<<<<<<<<
 *                 'origin': origin2str[attr.origin],
 *                 'class': klass2str[attr.klass]}
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_attr->level); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_level, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":167
 *         glpk.ios_row_attr(self._tree, row, attr)
 *         return {'level': attr.level,
 *                 'origin': origin2str[attr.origin],             # <<<<<<<<<<<<<<
 *                 'class': klass2str[attr.klass]}
 * 
 */
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_origin2str, __pyx_v_attr->origin, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_origin, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":168
 *         return {'level': attr.level,
 *                 'origin': origin2str[attr.origin],
 *                 'class': klass2str[attr.klass]}             # <<<<<<<<<<<<<<
 * 
 *     def ios_pool_size(self):
 */
  __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_klass2str, __pyx_v_attr->klass, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_class, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":161
 *             return None
 * 
 *     def ios_row_attr(self, row):             # <<<<<<<<<<<<<<
 *         """Retrieve additional row attributes"""
 *         cdef glpk.Attr* attr
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_row_attr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_row);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":170
 *                 'class': klass2str[attr.klass]}
 * 
 *     def ios_pool_size(self):             # <<<<<<<<<<<<<<
 *         """Determine current size of the cut pool"""
 *         return glpk.ios_pool_size(self._tree)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_31ios_pool_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_30ios_pool_size[] = "Tree.ios_pool_size(self)\nDetermine current size of the cut pool";
static PyObject *__pyx_pw_8ecyglpki_4Tree_31ios_pool_size(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_pool_size (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_30ios_pool_size(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_30ios_pool_size(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_pool_size", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":172
 *     def ios_pool_size(self):
 *         """Determine current size of the cut pool"""
 *         return glpk.ios_pool_size(self._tree)             # <<<<<<<<<<<<<<
 * 
 *     def ios_add_row(self, str name, str rowclass,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_ios_pool_size(__pyx_v_self->_tree)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":170
 *                 'class': klass2str[attr.klass]}
 * 
 *     def ios_pool_size(self):             # <<<<<<<<<<<<<<
 *         """Determine current size of the cut pool"""
 *         return glpk.ios_pool_size(self._tree)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_pool_size", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":174
 *         return glpk.ios_pool_size(self._tree)
 * 
 *     def ios_add_row(self, str name, str rowclass,             # <<<<<<<<<<<<<<
 *                     coeffs, str vartype, double rhs):
 *         """Add row (constraint) to the cut pool"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_33ios_add_row(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_32ios_add_row[] = "Tree.ios_add_row(self, str name, str rowclass, coeffs, str vartype, double rhs)\nAdd row (constraint) to the cut pool";
static PyObject *__pyx_pw_8ecyglpki_4Tree_33ios_add_row(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_name = 0;
  PyObject *__pyx_v_rowclass = 0;
  PyObject *__pyx_v_coeffs = 0;
  PyObject *__pyx_v_vartype = 0;
  double __pyx_v_rhs;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_add_row (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_name_2,&__pyx_n_s_rowclass,&__pyx_n_s_coeffs,&__pyx_n_s_vartype,&__pyx_n_s_rhs,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rowclass)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ios_add_row", 1, 5, 5, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_coeffs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ios_add_row", 1, 5, 5, 2); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vartype)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ios_add_row", 1, 5, 5, 3); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_rhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ios_add_row", 1, 5, 5, 4); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ios_add_row") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_name = ((PyObject*)values[0]);
    __pyx_v_rowclass = ((PyObject*)values[1]);
    __pyx_v_coeffs = values[2];
    __pyx_v_vartype = ((PyObject*)values[3]);
    __pyx_v_rhs = __pyx_PyFloat_AsDouble(values[4]); if (unlikely((__pyx_v_rhs == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ios_add_row", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Tree.ios_add_row", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_rowclass), (&PyString_Type), 1, "rowclass", 1))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 174; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_vartype), (&PyString_Type), 1, "vartype", 1))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_32ios_add_row(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self), __pyx_v_name, __pyx_v_rowclass, __pyx_v_coeffs, __pyx_v_vartype, __pyx_v_rhs);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_32ios_add_row(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, PyObject *__pyx_v_name, PyObject *__pyx_v_rowclass, PyObject *__pyx_v_coeffs, PyObject *__pyx_v_vartype, double __pyx_v_rhs) {
  int __pyx_v_k;
  int *__pyx_v_cols;
  double *__pyx_v_vals;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_item = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  Py_ssize_t __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *(*__pyx_t_5)(PyObject *);
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *(*__pyx_t_8)(PyObject *);
  int __pyx_t_9;
  Py_ssize_t __pyx_t_10;
  double __pyx_t_11;
  char *__pyx_t_12;
  int __pyx_t_13;
  char const *__pyx_t_14;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_add_row", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":177
 *                     coeffs, str vartype, double rhs):
 *         """Add row (constraint) to the cut pool"""
 *         _coeffscheck(coeffs)             # <<<<<<<<<<<<<<
 *         cdef int k = len(coeffs)
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))
 */
  __pyx_t_1 = __pyx_f_8ecyglpki__coeffscheck(__pyx_v_coeffs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":178
 *         """Add row (constraint) to the cut pool"""
 *         _coeffscheck(coeffs)
 *         cdef int k = len(coeffs)             # <<<<<<<<<<<<<<
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 */
  __pyx_t_2 = PyObject_Length(__pyx_v_coeffs); if (unlikely(__pyx_t_2 == -1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_k = __pyx_t_2;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":179
 *         _coeffscheck(coeffs)
 *         cdef int k = len(coeffs)
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))             # <<<<<<<<<<<<<<
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 *         try:
 */
  __pyx_v_cols = ((int *)glp_alloc((1 + __pyx_v_k), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":180
 *         cdef int k = len(coeffs)
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))             # <<<<<<<<<<<<<<
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):
 */
  __pyx_v_vals = ((double *)glp_alloc((1 + __pyx_v_k), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":181
 *         cdef int* cols = <int*>glpk.alloc(1+k, sizeof(int))
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 *         try:             # <<<<<<<<<<<<<<
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 cols[i] = self.problem.find_col_as_needed(item[0])
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":182
 *         cdef double* vals = <double*>glpk.alloc(1+k, sizeof(double))
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):             # <<<<<<<<<<<<<<
 *                 cols[i] = self.problem.find_col_as_needed(item[0])
 *                 vals[i] = item[1]
 */
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_coeffs, __pyx_n_s_items); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_3);
    if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    if (PyList_CheckExact(__pyx_t_4) || PyTuple_CheckExact(__pyx_t_4)) {
      __pyx_t_3 = __pyx_t_4; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __pyx_t_5 = Py_TYPE(__pyx_t_3)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_3)) {
        if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_3)) {
        if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_4); __pyx_t_2++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_4 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else {
        __pyx_t_4 = __pyx_t_5(__pyx_t_3);
        if (unlikely(!__pyx_t_4)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_4);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
        PyObject* sequence = __pyx_t_4;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_1);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_1);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
        __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
        index = 0; __pyx_t_1 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_1)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_1);
        index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L8_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_t_8 = NULL;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        goto __pyx_L9_unpacking_done;
        __pyx_L8_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
        __pyx_t_8 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_L9_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_1);
      __pyx_t_1 = 0;
      __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":183
 *         try:
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 cols[i] = self.problem.find_col_as_needed(item[0])             # <<<<<<<<<<<<<<
 *                 vals[i] = item[1]
 *             return glpk.ios_add_row(self._tree, name2chars(name),
 */
      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->problem), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_item, 0, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_1);
      PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_6);
      __Pyx_GIVEREF(__pyx_t_6);
      __pyx_t_6 = 0;
      __pyx_t_6 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_1, NULL); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_6);
      __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_6); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      (__pyx_v_cols[__pyx_t_10]) = __pyx_t_9;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":184
 *             for i, item in enumerate(coeffs.items(), start=1):
 *                 cols[i] = self.problem.find_col_as_needed(item[0])
 *                 vals[i] = item[1]             # <<<<<<<<<<<<<<
 *             return glpk.ios_add_row(self._tree, name2chars(name),
 *                                     str2klass[rowclass], 0,
 */
      __pyx_t_6 = __Pyx_GetItemInt(__pyx_v_item, 1, long, 1, __Pyx_PyInt_From_long, 0, 0, 1); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
      __Pyx_GOTREF(__pyx_t_6);
      __pyx_t_11 = __pyx_PyFloat_AsDouble(__pyx_t_6); if (unlikely((__pyx_t_11 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
      __pyx_t_10 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_10 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      (__pyx_v_vals[__pyx_t_10]) = __pyx_t_11;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":185
 *                 cols[i] = self.problem.find_col_as_needed(item[0])
 *                 vals[i] = item[1]
 *             return glpk.ios_add_row(self._tree, name2chars(name),             # <<<<<<<<<<<<<<
 *                                     str2klass[rowclass], 0,
 *                                     k, cols, vals, str2vartype[vartype], rhs)
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_12 = __pyx_f_8ecyglpki_name2chars(__pyx_v_name); if (unlikely(__pyx_t_12 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L4_error;}

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":186
 *                 vals[i] = item[1]
 *             return glpk.ios_add_row(self._tree, name2chars(name),
 *                                     str2klass[rowclass], 0,             # <<<<<<<<<<<<<<
 *                                     k, cols, vals, str2vartype[vartype], rhs)
 *         finally:
 */
    __pyx_t_3 = PyObject_GetItem(__pyx_v_8ecyglpki_str2klass, __pyx_v_rowclass); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_9 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_9 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":187
 *             return glpk.ios_add_row(self._tree, name2chars(name),
 *                                     str2klass[rowclass], 0,
 *                                     k, cols, vals, str2vartype[vartype], rhs)             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(cols)
 */
    __pyx_t_3 = PyObject_GetItem(__pyx_v_8ecyglpki_str2vartype, __pyx_v_vartype); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L4_error;};
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_13 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_13 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 187; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":185
 *                 cols[i] = self.problem.find_col_as_needed(item[0])
 *                 vals[i] = item[1]
 *             return glpk.ios_add_row(self._tree, name2chars(name),             # <<<<<<<<<<<<<<
 *                                     str2klass[rowclass], 0,
 *                                     k, cols, vals, str2vartype[vartype], rhs)
 */
    __pyx_t_3 = __Pyx_PyInt_From_int(glp_ios_add_row(__pyx_v_self->_tree, __pyx_t_12, __pyx_t_9, 0, __pyx_v_k, __pyx_v_cols, __pyx_v_vals, __pyx_t_13, __pyx_v_rhs)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_r = __pyx_t_3;
    __pyx_t_3 = 0;
    goto __pyx_L3_return;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":189
 *                                     k, cols, vals, str2vartype[vartype], rhs)
 *         finally:
 *             glpk.free(cols)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
  /*finally:*/ {
    /*exception exit:*/{
      __pyx_L4_error:;
      __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_18, &__pyx_t_19, &__pyx_t_20);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0)) __Pyx_ErrFetch(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_20);
      __pyx_t_13 = __pyx_lineno; __pyx_t_9 = __pyx_clineno; __pyx_t_14 = __pyx_filename;
      {
        glp_free(__pyx_v_cols);

        /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":190
 *         finally:
 *             glpk.free(cols)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def ios_del_row(self, int row):  # row is row in cut pool, not in problem object!
 */
        glp_free(__pyx_v_vals);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_XGIVEREF(__pyx_t_20);
        __Pyx_ExceptionReset(__pyx_t_18, __pyx_t_19, __pyx_t_20);
      }
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_ErrRestore(__pyx_t_15, __pyx_t_16, __pyx_t_17);
      __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0;
      __pyx_lineno = __pyx_t_13; __pyx_clineno = __pyx_t_9; __pyx_filename = __pyx_t_14;
      goto __pyx_L1_error;
    }
    __pyx_L3_return: {
      __pyx_t_20 = __pyx_r;
      __pyx_r = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":189
 *                                     k, cols, vals, str2vartype[vartype], rhs)
 *         finally:
 *             glpk.free(cols)             # <<<<<<<<<<<<<<
 *             glpk.free(vals)
 * 
 */
      glp_free(__pyx_v_cols);

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":190
 *         finally:
 *             glpk.free(cols)
 *             glpk.free(vals)             # <<<<<<<<<<<<<<
 * 
 *     def ios_del_row(self, int row):  # row is row in cut pool, not in problem object!
 */
      glp_free(__pyx_v_vals);
      __pyx_r = __pyx_t_20;
      __pyx_t_20 = 0;
      goto __pyx_L0;
    }
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":174
 *         return glpk.ios_pool_size(self._tree)
 * 
 *     def ios_add_row(self, str name, str rowclass,             # <<<<<<<<<<<<<<
 *                     coeffs, str vartype, double rhs):
 *         """Add row (constraint) to the cut pool"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_add_row", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_item);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":192
 *             glpk.free(vals)
 * 
 *     def ios_del_row(self, int row):  # row is row in cut pool, not in problem object!             # <<<<<<<<<<<<<<
 *         """Remove row (constraint) from the cut pool"""
 *         glpk.ios_del_row(self._tree, row)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_35ios_del_row(PyObject *__pyx_v_self, PyObject *__pyx_arg_row); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_34ios_del_row[] = "Tree.ios_del_row(self, int row)\nRemove row (constraint) from the cut pool";
static PyObject *__pyx_pw_8ecyglpki_4Tree_35ios_del_row(PyObject *__pyx_v_self, PyObject *__pyx_arg_row) {
  int __pyx_v_row;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_del_row (wrapper)", 0);
  assert(__pyx_arg_row); {
    __pyx_v_row = __Pyx_PyInt_As_int(__pyx_arg_row); if (unlikely((__pyx_v_row == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Tree.ios_del_row", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_34ios_del_row(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self), ((int)__pyx_v_row));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_34ios_del_row(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_row) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_del_row", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":194
 *     def ios_del_row(self, int row):  # row is row in cut pool, not in problem object!
 *         """Remove row (constraint) from the cut pool"""
 *         glpk.ios_del_row(self._tree, row)             # <<<<<<<<<<<<<<
 * 
 *     def ios_clear_pool(self):
 */
  glp_ios_del_row(__pyx_v_self->_tree, __pyx_v_row);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":192
 *             glpk.free(vals)
 * 
 *     def ios_del_row(self, int row):  # row is row in cut pool, not in problem object!             # <<<<<<<<<<<<<<
 *         """Remove row (constraint) from the cut pool"""
 *         glpk.ios_del_row(self._tree, row)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":196
 *         glpk.ios_del_row(self._tree, row)
 * 
 *     def ios_clear_pool(self):             # <<<<<<<<<<<<<<
 *         """Remove all rows (constraints) from the cut pool"""
 *         glpk.ios_clear_pool(self._tree)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_37ios_clear_pool(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_36ios_clear_pool[] = "Tree.ios_clear_pool(self)\nRemove all rows (constraints) from the cut pool";
static PyObject *__pyx_pw_8ecyglpki_4Tree_37ios_clear_pool(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_clear_pool (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_36ios_clear_pool(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_36ios_clear_pool(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_clear_pool", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":198
 *     def ios_clear_pool(self):
 *         """Remove all rows (constraints) from the cut pool"""
 *         glpk.ios_clear_pool(self._tree)             # <<<<<<<<<<<<<<
 * 
 *     def ios_can_branch(self, col):
 */
  glp_ios_clear_pool(__pyx_v_self->_tree);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":196
 *         glpk.ios_del_row(self._tree, row)
 * 
 *     def ios_clear_pool(self):             # <<<<<<<<<<<<<<
 *         """Remove all rows (constraints) from the cut pool"""
 *         glpk.ios_clear_pool(self._tree)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":200
 *         glpk.ios_clear_pool(self._tree)
 * 
 *     def ios_can_branch(self, col):             # <<<<<<<<<<<<<<
 *         """Check if can branch upon specified variable"""
 *         col = self.problem.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_39ios_can_branch(PyObject *__pyx_v_self, PyObject *__pyx_v_col); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_38ios_can_branch[] = "Tree.ios_can_branch(self, col)\nCheck if can branch upon specified variable";
static PyObject *__pyx_pw_8ecyglpki_4Tree_39ios_can_branch(PyObject *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_can_branch (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_38ios_can_branch(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self), ((PyObject *)__pyx_v_col));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_38ios_can_branch(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, PyObject *__pyx_v_col) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_can_branch", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":202
 *     def ios_can_branch(self, col):
 *         """Check if can branch upon specified variable"""
 *         col = self.problem.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         return glpk.ios_can_branch(self._tree, col)
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->problem), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 202; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":203
 *         """Check if can branch upon specified variable"""
 *         col = self.problem.find_col_as_needed(col)
 *         return glpk.ios_can_branch(self._tree, col)             # <<<<<<<<<<<<<<
 * 
 *     def ios_branch_upon(self, col, str branchdir):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = __Pyx_PyBool_FromLong(glp_ios_can_branch(__pyx_v_self->_tree, __pyx_t_4)); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_r = __pyx_t_3;
  __pyx_t_3 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":200
 *         glpk.ios_clear_pool(self._tree)
 * 
 *     def ios_can_branch(self, col):             # <<<<<<<<<<<<<<
 *         """Check if can branch upon specified variable"""
 *         col = self.problem.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_can_branch", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":205
 *         return glpk.ios_can_branch(self._tree, col)
 * 
 *     def ios_branch_upon(self, col, str branchdir):             # <<<<<<<<<<<<<<
 *         """Choose variable to branch upon"""
 *         col = self.problem.find_col_as_needed(col)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_41ios_branch_upon(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_40ios_branch_upon[] = "Tree.ios_branch_upon(self, col, str branchdir)\nChoose variable to branch upon";
static PyObject *__pyx_pw_8ecyglpki_4Tree_41ios_branch_upon(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_col = 0;
  PyObject *__pyx_v_branchdir = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_branch_upon (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_col,&__pyx_n_s_branchdir,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_col)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_branchdir)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("ios_branch_upon", 1, 2, 2, 1); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ios_branch_upon") < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_col = values[0];
    __pyx_v_branchdir = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("ios_branch_upon", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[1]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Tree.ios_branch_upon", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_branchdir), (&PyString_Type), 1, "branchdir", 1))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 205; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_40ios_branch_upon(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self), __pyx_v_col, __pyx_v_branchdir);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_40ios_branch_upon(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, PyObject *__pyx_v_col, PyObject *__pyx_v_branchdir) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_branch_upon", 0);
  __Pyx_INCREF(__pyx_v_col);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":207
 *     def ios_branch_upon(self, col, str branchdir):
 *         """Choose variable to branch upon"""
 *         col = self.problem.find_col_as_needed(col)             # <<<<<<<<<<<<<<
 *         glpk.ios_branch_upon(self._tree, col, str2branchdir[branchdir])
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->problem), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_col);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_col);
  __Pyx_GIVEREF(__pyx_v_col);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_col, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":208
 *         """Choose variable to branch upon"""
 *         col = self.problem.find_col_as_needed(col)
 *         glpk.ios_branch_upon(self._tree, col, str2branchdir[branchdir])             # <<<<<<<<<<<<<<
 * 
 *     def ios_select_node(self, int node):
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_col); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_3 = PyObject_GetItem(__pyx_v_8ecyglpki_str2branchdir, __pyx_v_branchdir); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  glp_ios_branch_upon(__pyx_v_self->_tree, __pyx_t_4, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":205
 *         return glpk.ios_can_branch(self._tree, col)
 * 
 *     def ios_branch_upon(self, col, str branchdir):             # <<<<<<<<<<<<<<
 *         """Choose variable to branch upon"""
 *         col = self.problem.find_col_as_needed(col)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_branch_upon", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":210
 *         glpk.ios_branch_upon(self._tree, col, str2branchdir[branchdir])
 * 
 *     def ios_select_node(self, int node):             # <<<<<<<<<<<<<<
 *         """Select subproblem to continue the search"""
 *         glpk.ios_select_node(self._tree, node)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_43ios_select_node(PyObject *__pyx_v_self, PyObject *__pyx_arg_node); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_42ios_select_node[] = "Tree.ios_select_node(self, int node)\nSelect subproblem to continue the search";
static PyObject *__pyx_pw_8ecyglpki_4Tree_43ios_select_node(PyObject *__pyx_v_self, PyObject *__pyx_arg_node) {
  int __pyx_v_node;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_select_node (wrapper)", 0);
  assert(__pyx_arg_node); {
    __pyx_v_node = __Pyx_PyInt_As_int(__pyx_arg_node); if (unlikely((__pyx_v_node == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Tree.ios_select_node", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_42ios_select_node(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self), ((int)__pyx_v_node));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_42ios_select_node(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, int __pyx_v_node) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_select_node", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":212
 *     def ios_select_node(self, int node):
 *         """Select subproblem to continue the search"""
 *         glpk.ios_select_node(self._tree, node)             # <<<<<<<<<<<<<<
 * 
 *     def ios_heur_sol(self, coeffs):
 */
  glp_ios_select_node(__pyx_v_self->_tree, __pyx_v_node);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":210
 *         glpk.ios_branch_upon(self._tree, col, str2branchdir[branchdir])
 * 
 *     def ios_select_node(self, int node):             # <<<<<<<<<<<<<<
 *         """Select subproblem to continue the search"""
 *         glpk.ios_select_node(self._tree, node)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":214
 *         glpk.ios_select_node(self._tree, node)
 * 
 *     def ios_heur_sol(self, coeffs):             # <<<<<<<<<<<<<<
 *         """Provide solution found by heuristic"""
 *         _coeffscheck(coeffs)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_45ios_heur_sol(PyObject *__pyx_v_self, PyObject *__pyx_v_coeffs); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_44ios_heur_sol[] = "Tree.ios_heur_sol(self, coeffs)\nProvide solution found by heuristic";
static PyObject *__pyx_pw_8ecyglpki_4Tree_45ios_heur_sol(PyObject *__pyx_v_self, PyObject *__pyx_v_coeffs) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_heur_sol (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_44ios_heur_sol(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self), ((PyObject *)__pyx_v_coeffs));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_44ios_heur_sol(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self, PyObject *__pyx_v_coeffs) {
  int __pyx_v_n;
  double *__pyx_v_heur_sol;
  long __pyx_v_i;
  PyObject *__pyx_v_col = NULL;
  PyObject *__pyx_v_val = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_t_3;
  long __pyx_t_4;
  long __pyx_t_5;
  Py_ssize_t __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *__pyx_t_10 = NULL;
  PyObject *(*__pyx_t_11)(PyObject *);
  double __pyx_t_12;
  Py_ssize_t __pyx_t_13;
  int __pyx_t_14;
  int __pyx_t_15;
  char const *__pyx_t_16;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  PyObject *__pyx_t_20 = NULL;
  PyObject *__pyx_t_21 = NULL;
  PyObject *__pyx_t_22 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("ios_heur_sol", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":216
 *     def ios_heur_sol(self, coeffs):
 *         """Provide solution found by heuristic"""
 *         _coeffscheck(coeffs)             # <<<<<<<<<<<<<<
 *         cdef int n = self.problem.get_num_cols()
 *         cdef double* heur_sol = <double*>glpk.alloc(1+n, sizeof(double))
 */
  __pyx_t_1 = __pyx_f_8ecyglpki__coeffscheck(__pyx_v_coeffs); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":217
 *         """Provide solution found by heuristic"""
 *         _coeffscheck(coeffs)
 *         cdef int n = self.problem.get_num_cols()             # <<<<<<<<<<<<<<
 *         cdef double* heur_sol = <double*>glpk.alloc(1+n, sizeof(double))
 *         try:
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->problem), __pyx_n_s_get_num_cols); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_t_3 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_n = __pyx_t_3;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":218
 *         _coeffscheck(coeffs)
 *         cdef int n = self.problem.get_num_cols()
 *         cdef double* heur_sol = <double*>glpk.alloc(1+n, sizeof(double))             # <<<<<<<<<<<<<<
 *         try:
 *             for i in range(1, 1+n):
 */
  __pyx_v_heur_sol = ((double *)glp_alloc((1 + __pyx_v_n), (sizeof(double))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":219
 *         cdef int n = self.problem.get_num_cols()
 *         cdef double* heur_sol = <double*>glpk.alloc(1+n, sizeof(double))
 *         try:             # <<<<<<<<<<<<<<
 *             for i in range(1, 1+n):
 *                 heur_sol[i] = 0
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":220
 *         cdef double* heur_sol = <double*>glpk.alloc(1+n, sizeof(double))
 *         try:
 *             for i in range(1, 1+n):             # <<<<<<<<<<<<<<
 *                 heur_sol[i] = 0
 *             for col, val in coeffs:
 */
    __pyx_t_4 = (1 + __pyx_v_n);
    for (__pyx_t_5 = 1; __pyx_t_5 < __pyx_t_4; __pyx_t_5+=1) {
      __pyx_v_i = __pyx_t_5;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":221
 *         try:
 *             for i in range(1, 1+n):
 *                 heur_sol[i] = 0             # <<<<<<<<<<<<<<
 *             for col, val in coeffs:
 *                 heur_sol[self.problem.find_col_as_needed(col)] = val
 */
      (__pyx_v_heur_sol[__pyx_v_i]) = 0.0;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":222
 *             for i in range(1, 1+n):
 *                 heur_sol[i] = 0
 *             for col, val in coeffs:             # <<<<<<<<<<<<<<
 *                 heur_sol[self.problem.find_col_as_needed(col)] = val
 *             if glpk.ios_heur_sol(self._tree, heur_sol) is not 0:
 */
    if (PyList_CheckExact(__pyx_v_coeffs) || PyTuple_CheckExact(__pyx_v_coeffs)) {
      __pyx_t_2 = __pyx_v_coeffs; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
      __pyx_t_7 = NULL;
    } else {
      __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_v_coeffs); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_7 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    for (;;) {
      if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else {
        __pyx_t_1 = __pyx_t_7(__pyx_t_2);
        if (unlikely(!__pyx_t_1)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_1);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_1))) || (PyList_CheckExact(__pyx_t_1))) {
        PyObject* sequence = __pyx_t_1;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_8 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_9 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_8 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_9 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_8);
        __Pyx_INCREF(__pyx_t_9);
        #else
        __pyx_t_8 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_9);
        #endif
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_10);
        __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
        __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
        index = 0; __pyx_t_8 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_8)) goto __pyx_L10_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_8);
        index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L10_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_9);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_t_11 = NULL;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        goto __pyx_L11_unpacking_done;
        __pyx_L10_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
        __pyx_t_11 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 222; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_L11_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_col, __pyx_t_8);
      __pyx_t_8 = 0;
      __Pyx_XDECREF_SET(__pyx_v_val, __pyx_t_9);
      __pyx_t_9 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":223
 *                 heur_sol[i] = 0
 *             for col, val in coeffs:
 *                 heur_sol[self.problem.find_col_as_needed(col)] = val             # <<<<<<<<<<<<<<
 *             if glpk.ios_heur_sol(self._tree, heur_sol) is not 0:
 *                 raise ValueError("Solution rejected.")
 */
      __pyx_t_12 = __pyx_PyFloat_AsDouble(__pyx_v_val); if (unlikely((__pyx_t_12 == (double)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->problem), __pyx_n_s_find_col_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_9 = PyTuple_New(1); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_INCREF(__pyx_v_col);
      PyTuple_SET_ITEM(__pyx_t_9, 0, __pyx_v_col);
      __Pyx_GIVEREF(__pyx_v_col);
      __pyx_t_8 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_9, NULL); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_13 = __Pyx_PyIndex_AsSsize_t(__pyx_t_8); if (unlikely((__pyx_t_13 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 223; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      (__pyx_v_heur_sol[__pyx_t_13]) = __pyx_t_12;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":224
 *             for col, val in coeffs:
 *                 heur_sol[self.problem.find_col_as_needed(col)] = val
 *             if glpk.ios_heur_sol(self._tree, heur_sol) is not 0:             # <<<<<<<<<<<<<<
 *                 raise ValueError("Solution rejected.")
 *         finally:
 */
    __pyx_t_14 = ((glp_ios_heur_sol(__pyx_v_self->_tree, __pyx_v_heur_sol) != 0) != 0);
    if (__pyx_t_14) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":225
 *                 heur_sol[self.problem.find_col_as_needed(col)] = val
 *             if glpk.ios_heur_sol(self._tree, heur_sol) is not 0:
 *                 raise ValueError("Solution rejected.")             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(heur_sol)
 */
      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__31, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __Pyx_Raise(__pyx_t_2, 0, 0, 0);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      {__pyx_filename = __pyx_f[1]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    }
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":227
 *                 raise ValueError("Solution rejected.")
 *         finally:
 *             glpk.free(heur_sol)             # <<<<<<<<<<<<<<
 * 
 *     def ios_terminate(self):
 */
  /*finally:*/ {
    /*normal exit:*/{
      glp_free(__pyx_v_heur_sol);
      goto __pyx_L5;
    }
    /*exception exit:*/{
      __pyx_L4_error:;
      __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
      __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
      __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
      __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_20, &__pyx_t_21, &__pyx_t_22);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19) < 0)) __Pyx_ErrFetch(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __Pyx_XGOTREF(__pyx_t_20);
      __Pyx_XGOTREF(__pyx_t_21);
      __Pyx_XGOTREF(__pyx_t_22);
      __pyx_t_3 = __pyx_lineno; __pyx_t_15 = __pyx_clineno; __pyx_t_16 = __pyx_filename;
      {
        glp_free(__pyx_v_heur_sol);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_20);
        __Pyx_XGIVEREF(__pyx_t_21);
        __Pyx_XGIVEREF(__pyx_t_22);
        __Pyx_ExceptionReset(__pyx_t_20, __pyx_t_21, __pyx_t_22);
      }
      __Pyx_XGIVEREF(__pyx_t_17);
      __Pyx_XGIVEREF(__pyx_t_18);
      __Pyx_XGIVEREF(__pyx_t_19);
      __Pyx_ErrRestore(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0; __pyx_t_20 = 0; __pyx_t_21 = 0; __pyx_t_22 = 0;
      __pyx_lineno = __pyx_t_3; __pyx_clineno = __pyx_t_15; __pyx_filename = __pyx_t_16;
      goto __pyx_L1_error;
    }
    __pyx_L5:;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":214
 *         glpk.ios_select_node(self._tree, node)
 * 
 *     def ios_heur_sol(self, coeffs):             # <<<<<<<<<<<<<<
 *         """Provide solution found by heuristic"""
 *         _coeffscheck(coeffs)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_XDECREF(__pyx_t_10);
  __Pyx_AddTraceback("ecyglpki.Tree.ios_heur_sol", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_col);
  __Pyx_XDECREF(__pyx_v_val);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":229
 *             glpk.free(heur_sol)
 * 
 *     def ios_terminate(self):             # <<<<<<<<<<<<<<
 *         """Terminate the solution process"""
 *         glpk.ios_terminate(self._tree)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_47ios_terminate(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_4Tree_46ios_terminate[] = "Tree.ios_terminate(self)\nTerminate the solution process";
static PyObject *__pyx_pw_8ecyglpki_4Tree_47ios_terminate(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_terminate (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_46ios_terminate(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_46ios_terminate(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("ios_terminate", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":231
 *     def ios_terminate(self):
 *         """Terminate the solution process"""
 *         glpk.ios_terminate(self._tree)             # <<<<<<<<<<<<<<
 */
  glp_ios_terminate(__pyx_v_self->_tree);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":229
 *             glpk.free(heur_sol)
 * 
 *     def ios_terminate(self):             # <<<<<<<<<<<<<<
 *         """Terminate the solution process"""
 *         glpk.ios_terminate(self._tree)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":66
 * 
 *     cdef glpk.Tree* _tree
 *     cdef readonly Problem problem             # <<<<<<<<<<<<<<
 * 
 *     def __cinit__(self):
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_4Tree_7problem_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_4Tree_7problem_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_4Tree_7problem___get__(((struct __pyx_obj_8ecyglpki_Tree *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_4Tree_7problem___get__(struct __pyx_obj_8ecyglpki_Tree *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__", 0);
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_self->problem));
  __pyx_r = ((PyObject *)__pyx_v_self->problem);
  goto __pyx_L0;

  /* function exit code */
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":30
 *     cdef glpk.Vertex* _vertex
 * 
 *     def __cinit__(self, vertex_ptr):             # <<<<<<<<<<<<<<
 *         self._vertex = <glpk.Vertex*>PyCapsule_GetPointer(vertex_ptr(), NULL)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_6Vertex_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_8ecyglpki_6Vertex_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_vertex_ptr = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vertex_ptr,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertex_ptr)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_vertex_ptr = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Vertex.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_6Vertex___cinit__(((struct __pyx_obj_8ecyglpki_Vertex *)__pyx_v_self), __pyx_v_vertex_ptr);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_6Vertex___cinit__(struct __pyx_obj_8ecyglpki_Vertex *__pyx_v_self, PyObject *__pyx_v_vertex_ptr) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  void *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":31
 * 
 *     def __cinit__(self, vertex_ptr):
 *         self._vertex = <glpk.Vertex*>PyCapsule_GetPointer(vertex_ptr(), NULL)             # <<<<<<<<<<<<<<
 * 
 *     def _vertex_ptr(self):
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_vertex_ptr, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyCapsule_GetPointer(__pyx_t_1, NULL); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_vertex = ((struct glp_vertex *)__pyx_t_2);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":30
 *     cdef glpk.Vertex* _vertex
 * 
 *     def __cinit__(self, vertex_ptr):             # <<<<<<<<<<<<<<
 *         self._vertex = <glpk.Vertex*>PyCapsule_GetPointer(vertex_ptr(), NULL)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Vertex.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":33
 *         self._vertex = <glpk.Vertex*>PyCapsule_GetPointer(vertex_ptr(), NULL)
 * 
 *     def _vertex_ptr(self):             # <<<<<<<<<<<<<<
 *         """Encapsulate the pointer to the arc object
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_6Vertex_3_vertex_ptr(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_6Vertex_2_vertex_ptr[] = "Vertex._vertex_ptr(self)\nEncapsulate the pointer to the arc object\n\n        The arc object pointer `self._vertex` cannot be passed as such as\n        an argument to other functions. Therefore we encapsulate it in a\n        capsule that can be passed. It has to be unencapsulated after\n        reception.\n\n        ";
static PyObject *__pyx_pw_8ecyglpki_6Vertex_3_vertex_ptr(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_vertex_ptr (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_6Vertex_2_vertex_ptr(((struct __pyx_obj_8ecyglpki_Vertex *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_6Vertex_2_vertex_ptr(struct __pyx_obj_8ecyglpki_Vertex *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_vertex_ptr", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":42
 * 
 *         """
 *         return PyCapsule_New(self._vertex, NULL, NULL)             # <<<<<<<<<<<<<<
 * 
 *     ### Selected struct elements become properties ###
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyCapsule_New(__pyx_v_self->_vertex, NULL, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":33
 *         self._vertex = <glpk.Vertex*>PyCapsule_GetPointer(vertex_ptr(), NULL)
 * 
 *     def _vertex_ptr(self):             # <<<<<<<<<<<<<<
 *         """Encapsulate the pointer to the arc object
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Vertex._vertex_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":48
 *     property i:
 *         """Vertex ordinal number, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._vertex.i
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_6Vertex_1i_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_6Vertex_1i_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_6Vertex_1i___get__(((struct __pyx_obj_8ecyglpki_Vertex *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_6Vertex_1i___get__(struct __pyx_obj_8ecyglpki_Vertex *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":49
 *         """Vertex ordinal number, an `int`"""
 *         def __get__(self):
 *             return self._vertex.i             # <<<<<<<<<<<<<<
 * 
 *     property name:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_vertex->i); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":48
 *     property i:
 *         """Vertex ordinal number, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._vertex.i
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Vertex.i.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":53
 *     property name:
 *         """Vertex name, a `str`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return chars2name(self._vertex.name)
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_6Vertex_4name_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_6Vertex_4name_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_6Vertex_4name___get__(((struct __pyx_obj_8ecyglpki_Vertex *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_6Vertex_4name___get__(struct __pyx_obj_8ecyglpki_Vertex *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":54
 *         """Vertex name, a `str`"""
 *         def __get__(self):
 *             return chars2name(self._vertex.name)             # <<<<<<<<<<<<<<
 * 
 *     property inc:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __pyx_f_8ecyglpki_chars2name(__pyx_v_self->_vertex->name); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":53
 *     property name:
 *         """Vertex name, a `str`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return chars2name(self._vertex.name)
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Vertex.name.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":58
 *     property inc:
 *         """First incoming arc, an `.Arc`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Arc* _arc = self._vertex.inc
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_6Vertex_3inc_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_6Vertex_3inc_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_6Vertex_3inc___get__(((struct __pyx_obj_8ecyglpki_Vertex *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_6Vertex_3inc___get__(struct __pyx_obj_8ecyglpki_Vertex *__pyx_v_self) {
  struct glp_arc *__pyx_v__arc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  struct glp_arc *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":59
 *         """First incoming arc, an `.Arc`"""
 *         def __get__(self):
 *             cdef glpk.Arc* _arc = self._vertex.inc             # <<<<<<<<<<<<<<
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 * 
 */
  __pyx_t_1 = __pyx_v_self->_vertex->in;
  __pyx_v__arc = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":60
 *         def __get__(self):
 *             cdef glpk.Arc* _arc = self._vertex.inc
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))             # <<<<<<<<<<<<<<
 * 
 *     property out:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyCapsule_New(__pyx_v__arc, NULL, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Arc)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":58
 *     property inc:
 *         """First incoming arc, an `.Arc`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Arc* _arc = self._vertex.inc
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Vertex.inc.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":64
 *     property out:
 *         """First outgoing arc, an `.Arc`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Arc* _arc = self._vertex.out
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_6Vertex_3out_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_6Vertex_3out_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_6Vertex_3out___get__(((struct __pyx_obj_8ecyglpki_Vertex *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_6Vertex_3out___get__(struct __pyx_obj_8ecyglpki_Vertex *__pyx_v_self) {
  struct glp_arc *__pyx_v__arc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  struct glp_arc *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":65
 *         """First outgoing arc, an `.Arc`"""
 *         def __get__(self):
 *             cdef glpk.Arc* _arc = self._vertex.out             # <<<<<<<<<<<<<<
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 * 
 */
  __pyx_t_1 = __pyx_v_self->_vertex->out;
  __pyx_v__arc = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":66
 *         def __get__(self):
 *             cdef glpk.Arc* _arc = self._vertex.out
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyCapsule_New(__pyx_v__arc, NULL, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Arc)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":64
 *     property out:
 *         """First outgoing arc, an `.Arc`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Arc* _arc = self._vertex.out
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Vertex.out.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":74
 *     cdef glpk.Arc* _arc
 * 
 *     def __cinit__(self, arc_ptr):             # <<<<<<<<<<<<<<
 *         self._arc = <glpk.Arc*>PyCapsule_GetPointer(arc_ptr(), NULL)
 * 
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_3Arc_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_8ecyglpki_3Arc_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_arc_ptr = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_arc_ptr,0};
    PyObject* values[1] = {0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_arc_ptr)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
    }
    __pyx_v_arc_ptr = values[0];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 74; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Arc.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_3Arc___cinit__(((struct __pyx_obj_8ecyglpki_Arc *)__pyx_v_self), __pyx_v_arc_ptr);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_3Arc___cinit__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self, PyObject *__pyx_v_arc_ptr) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  void *__pyx_t_2;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":75
 * 
 *     def __cinit__(self, arc_ptr):
 *         self._arc = <glpk.Arc*>PyCapsule_GetPointer(arc_ptr(), NULL)             # <<<<<<<<<<<<<<
 * 
 *     def _arc_ptr(self):
 */
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_arc_ptr, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyCapsule_GetPointer(__pyx_t_1, NULL); if (unlikely(__pyx_t_2 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 75; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __pyx_v_self->_arc = ((struct glp_arc *)__pyx_t_2);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":74
 *     cdef glpk.Arc* _arc
 * 
 *     def __cinit__(self, arc_ptr):             # <<<<<<<<<<<<<<
 *         self._arc = <glpk.Arc*>PyCapsule_GetPointer(arc_ptr(), NULL)
 * 
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Arc.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":77
 *         self._arc = <glpk.Arc*>PyCapsule_GetPointer(arc_ptr(), NULL)
 * 
 *     def _arc_ptr(self):             # <<<<<<<<<<<<<<
 *         """Encapsulate the pointer to the arc object
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_3Arc_3_arc_ptr(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_3Arc_2_arc_ptr[] = "Arc._arc_ptr(self)\nEncapsulate the pointer to the arc object\n\n        The arc object pointer `self._arc` cannot be passed as such as\n        an argument to other functions. Therefore we encapsulate it in a\n        capsule that can be passed. It has to be unencapsulated after\n        reception.\n\n        ";
static PyObject *__pyx_pw_8ecyglpki_3Arc_3_arc_ptr(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_arc_ptr (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_3Arc_2_arc_ptr(((struct __pyx_obj_8ecyglpki_Arc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_3Arc_2_arc_ptr(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_arc_ptr", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":86
 * 
 *         """
 *         return PyCapsule_New(self._arc, NULL, NULL)             # <<<<<<<<<<<<<<
 * 
 *     ### Selected struct elements become properties ###
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyCapsule_New(__pyx_v_self->_arc, NULL, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 86; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":77
 *         self._arc = <glpk.Arc*>PyCapsule_GetPointer(arc_ptr(), NULL)
 * 
 *     def _arc_ptr(self):             # <<<<<<<<<<<<<<
 *         """Encapsulate the pointer to the arc object
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Arc._arc_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":92
 *     property tail:
 *         """Tail vertex, a `.Vertex`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Vertex* _vertex = self._arc.tail
 *             return Vertex(PyCapsule_New(_vertex, NULL, NULL))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_3Arc_4tail_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_3Arc_4tail_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_3Arc_4tail___get__(((struct __pyx_obj_8ecyglpki_Arc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_3Arc_4tail___get__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self) {
  struct glp_vertex *__pyx_v__vertex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  struct glp_vertex *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":93
 *         """Tail vertex, a `.Vertex`"""
 *         def __get__(self):
 *             cdef glpk.Vertex* _vertex = self._arc.tail             # <<<<<<<<<<<<<<
 *             return Vertex(PyCapsule_New(_vertex, NULL, NULL))
 * 
 */
  __pyx_t_1 = __pyx_v_self->_arc->tail;
  __pyx_v__vertex = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":94
 *         def __get__(self):
 *             cdef glpk.Vertex* _vertex = self._arc.tail
 *             return Vertex(PyCapsule_New(_vertex, NULL, NULL))             # <<<<<<<<<<<<<<
 * 
 *     property head:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyCapsule_New(__pyx_v__vertex, NULL, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Vertex)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 94; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":92
 *     property tail:
 *         """Tail vertex, a `.Vertex`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Vertex* _vertex = self._arc.tail
 *             return Vertex(PyCapsule_New(_vertex, NULL, NULL))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Arc.tail.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":98
 *     property head:
 *         """Head vertex, a `.Vertex`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Vertex* _vertex = self._arc.head
 *             return Vertex(PyCapsule_New(_vertex, NULL, NULL))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_3Arc_4head_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_3Arc_4head_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_3Arc_4head___get__(((struct __pyx_obj_8ecyglpki_Arc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_3Arc_4head___get__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self) {
  struct glp_vertex *__pyx_v__vertex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  struct glp_vertex *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":99
 *         """Head vertex, a `.Vertex`"""
 *         def __get__(self):
 *             cdef glpk.Vertex* _vertex = self._arc.head             # <<<<<<<<<<<<<<
 *             return Vertex(PyCapsule_New(_vertex, NULL, NULL))
 * 
 */
  __pyx_t_1 = __pyx_v_self->_arc->head;
  __pyx_v__vertex = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":100
 *         def __get__(self):
 *             cdef glpk.Vertex* _vertex = self._arc.head
 *             return Vertex(PyCapsule_New(_vertex, NULL, NULL))             # <<<<<<<<<<<<<<
 * 
 *     property t_prev:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyCapsule_New(__pyx_v__vertex, NULL, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Vertex)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":98
 *     property head:
 *         """Head vertex, a `.Vertex`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Vertex* _vertex = self._arc.head
 *             return Vertex(PyCapsule_New(_vertex, NULL, NULL))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Arc.head.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":104
 *     property t_prev:
 *         """Previous arc having the same tail endpoint, an `.Arc`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Arc* _arc = self._arc.t_prev
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_3Arc_6t_prev_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_3Arc_6t_prev_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_3Arc_6t_prev___get__(((struct __pyx_obj_8ecyglpki_Arc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_3Arc_6t_prev___get__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self) {
  struct glp_arc *__pyx_v__arc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  struct glp_arc *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":105
 *         """Previous arc having the same tail endpoint, an `.Arc`"""
 *         def __get__(self):
 *             cdef glpk.Arc* _arc = self._arc.t_prev             # <<<<<<<<<<<<<<
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 * 
 */
  __pyx_t_1 = __pyx_v_self->_arc->t_prev;
  __pyx_v__arc = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":106
 *         def __get__(self):
 *             cdef glpk.Arc* _arc = self._arc.t_prev
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))             # <<<<<<<<<<<<<<
 * 
 *     property t_next:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyCapsule_New(__pyx_v__arc, NULL, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Arc)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":104
 *     property t_prev:
 *         """Previous arc having the same tail endpoint, an `.Arc`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Arc* _arc = self._arc.t_prev
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Arc.t_prev.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":110
 *     property t_next:
 *         """Next arc having the same tail endpoint, an `.Arc`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Arc* _arc = self._arc.t_next
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_3Arc_6t_next_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_3Arc_6t_next_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_3Arc_6t_next___get__(((struct __pyx_obj_8ecyglpki_Arc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_3Arc_6t_next___get__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self) {
  struct glp_arc *__pyx_v__arc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  struct glp_arc *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":111
 *         """Next arc having the same tail endpoint, an `.Arc`"""
 *         def __get__(self):
 *             cdef glpk.Arc* _arc = self._arc.t_next             # <<<<<<<<<<<<<<
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 * 
 */
  __pyx_t_1 = __pyx_v_self->_arc->t_next;
  __pyx_v__arc = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":112
 *         def __get__(self):
 *             cdef glpk.Arc* _arc = self._arc.t_next
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))             # <<<<<<<<<<<<<<
 * 
 *     property h_prev:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyCapsule_New(__pyx_v__arc, NULL, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Arc)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 112; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":110
 *     property t_next:
 *         """Next arc having the same tail endpoint, an `.Arc`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Arc* _arc = self._arc.t_next
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Arc.t_next.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":116
 *     property h_prev:
 *         """Previous arc having the same head endpoint, an `.Arc`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Arc* _arc = self._arc.h_prev
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_3Arc_6h_prev_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_3Arc_6h_prev_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_3Arc_6h_prev___get__(((struct __pyx_obj_8ecyglpki_Arc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_3Arc_6h_prev___get__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self) {
  struct glp_arc *__pyx_v__arc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  struct glp_arc *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":117
 *         """Previous arc having the same head endpoint, an `.Arc`"""
 *         def __get__(self):
 *             cdef glpk.Arc* _arc = self._arc.h_prev             # <<<<<<<<<<<<<<
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 * 
 */
  __pyx_t_1 = __pyx_v_self->_arc->h_prev;
  __pyx_v__arc = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":118
 *         def __get__(self):
 *             cdef glpk.Arc* _arc = self._arc.h_prev
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))             # <<<<<<<<<<<<<<
 * 
 *     property h_next:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyCapsule_New(__pyx_v__arc, NULL, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Arc)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":116
 *     property h_prev:
 *         """Previous arc having the same head endpoint, an `.Arc`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Arc* _arc = self._arc.h_prev
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Arc.h_prev.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":122
 *     property h_next:
 *         """Next arc having the same head endpoint, an `.Arc`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Arc* _arc = self._arc.h_next
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_3Arc_6h_next_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_3Arc_6h_next_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_3Arc_6h_next___get__(((struct __pyx_obj_8ecyglpki_Arc *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_3Arc_6h_next___get__(struct __pyx_obj_8ecyglpki_Arc *__pyx_v_self) {
  struct glp_arc *__pyx_v__arc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  struct glp_arc *__pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":123
 *         """Next arc having the same head endpoint, an `.Arc`"""
 *         def __get__(self):
 *             cdef glpk.Arc* _arc = self._arc.h_next             # <<<<<<<<<<<<<<
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 * 
 */
  __pyx_t_1 = __pyx_v_self->_arc->h_next;
  __pyx_v__arc = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":124
 *         def __get__(self):
 *             cdef glpk.Arc* _arc = self._arc.h_next
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyCapsule_New(__pyx_v__arc, NULL, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Arc)), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":122
 *     property h_next:
 *         """Next arc having the same head endpoint, an `.Arc`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             cdef glpk.Arc* _arc = self._arc.h_next
 *             return Arc(PyCapsule_New(_arc, NULL, NULL))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Arc.h_next.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":142
 *     cdef glpk.Graph* _graph
 * 
 *     def __cinit__(self, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                   graph_ptr=None):
 *         if graph_ptr is None:
 */

/* Python wrapper */
static int __pyx_pw_8ecyglpki_5Graph_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static int __pyx_pw_8ecyglpki_5Graph_1__cinit__(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_vertex_data_size;
  int __pyx_v_arc_data_size;
  PyObject *__pyx_v_graph_ptr = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__cinit__ (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vertex_data_size,&__pyx_n_s_arc_data_size,&__pyx_n_s_graph_ptr,0};
    PyObject* values[3] = {0,0,0};

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":143
 * 
 *     def __cinit__(self, int vertex_data_size, int arc_data_size,
 *                   graph_ptr=None):             # <<<<<<<<<<<<<<
 *         if graph_ptr is None:
 *             self._graph = glpk.create_graph(vertex_data_size, arc_data_size)
 */
    values[2] = ((PyObject *)Py_None);
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertex_data_size)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_arc_data_size)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (kw_args > 0) {
          PyObject* value = PyDict_GetItem(__pyx_kwds, __pyx_n_s_graph_ptr);
          if (value) { values[2] = value; kw_args--; }
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else {
      switch (PyTuple_GET_SIZE(__pyx_args)) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        break;
        default: goto __pyx_L5_argtuple_error;
      }
    }
    __pyx_v_vertex_data_size = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_vertex_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_arc_data_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_arc_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_graph_ptr = values[2];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 2, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return -1;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph___cinit__(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_vertex_data_size, __pyx_v_arc_data_size, __pyx_v_graph_ptr);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":142
 *     cdef glpk.Graph* _graph
 * 
 *     def __cinit__(self, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                   graph_ptr=None):
 *         if graph_ptr is None:
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static int __pyx_pf_8ecyglpki_5Graph___cinit__(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, PyObject *__pyx_v_graph_ptr) {
  int __pyx_r;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__cinit__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":144
 *     def __cinit__(self, int vertex_data_size, int arc_data_size,
 *                   graph_ptr=None):
 *         if graph_ptr is None:             # <<<<<<<<<<<<<<
 *             self._graph = glpk.create_graph(vertex_data_size, arc_data_size)
 *             glpk.create_v_index(self._graph)
 */
  __pyx_t_1 = (__pyx_v_graph_ptr == Py_None);
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":145
 *                   graph_ptr=None):
 *         if graph_ptr is None:
 *             self._graph = glpk.create_graph(vertex_data_size, arc_data_size)             # <<<<<<<<<<<<<<
 *             glpk.create_v_index(self._graph)
 *         else:
 */
    __pyx_v_self->_graph = glp_create_graph(__pyx_v_vertex_data_size, __pyx_v_arc_data_size);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":146
 *         if graph_ptr is None:
 *             self._graph = glpk.create_graph(vertex_data_size, arc_data_size)
 *             glpk.create_v_index(self._graph)             # <<<<<<<<<<<<<<
 *         else:
 *             self._graph = <glpk.Graph*>PyCapsule_GetPointer(graph_ptr(), NULL)
 */
    glp_create_v_index(__pyx_v_self->_graph);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":148
 *             glpk.create_v_index(self._graph)
 *         else:
 *             self._graph = <glpk.Graph*>PyCapsule_GetPointer(graph_ptr(), NULL)             # <<<<<<<<<<<<<<
 * 
 *     def _graph_ptr(self):
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_v_graph_ptr, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyCapsule_GetPointer(__pyx_t_3, NULL); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 148; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_v_self->_graph = ((struct glp_graph *)__pyx_t_4);
  }
  __pyx_L3:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":142
 *     cdef glpk.Graph* _graph
 * 
 *     def __cinit__(self, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                   graph_ptr=None):
 *         if graph_ptr is None:
 */

  /* function exit code */
  __pyx_r = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = -1;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":150
 *             self._graph = <glpk.Graph*>PyCapsule_GetPointer(graph_ptr(), NULL)
 * 
 *     def _graph_ptr(self):             # <<<<<<<<<<<<<<
 *         """Encapsulate the pointer to the graph object
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_3_graph_ptr(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_2_graph_ptr[] = "Graph._graph_ptr(self)\nEncapsulate the pointer to the graph object\n\n        The graph object pointer `self._graph` cannot be passed as such as\n        an argument to other functions. Therefore we encapsulate it in a\n        capsule that can be passed. It has to be unencapsulated after\n        reception.\n\n        ";
static PyObject *__pyx_pw_8ecyglpki_5Graph_3_graph_ptr(PyObject *__pyx_v_self, CYTHON_UNUSED PyObject *unused) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("_graph_ptr (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_2_graph_ptr(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_2_graph_ptr(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("_graph_ptr", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":159
 * 
 *         """
 *         return PyCapsule_New(self._graph, NULL, NULL)             # <<<<<<<<<<<<<<
 * 
 *     def __dealloc__(self):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyCapsule_New(__pyx_v_self->_graph, NULL, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 159; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":150
 *             self._graph = <glpk.Graph*>PyCapsule_GetPointer(graph_ptr(), NULL)
 * 
 *     def _graph_ptr(self):             # <<<<<<<<<<<<<<
 *         """Encapsulate the pointer to the graph object
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Graph._graph_ptr", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":161
 *         return PyCapsule_New(self._graph, NULL, NULL)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         glpk.delete_v_index(self._graph)
 *         glpk.delete_graph(self._graph)
 */

/* Python wrapper */
static void __pyx_pw_8ecyglpki_5Graph_5__dealloc__(PyObject *__pyx_v_self); /*proto*/
static void __pyx_pw_8ecyglpki_5Graph_5__dealloc__(PyObject *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__ (wrapper)", 0);
  __pyx_pf_8ecyglpki_5Graph_4__dealloc__(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

static void __pyx_pf_8ecyglpki_5Graph_4__dealloc__(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__dealloc__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":162
 * 
 *     def __dealloc__(self):
 *         glpk.delete_v_index(self._graph)             # <<<<<<<<<<<<<<
 *         glpk.delete_graph(self._graph)
 * 
 */
  glp_delete_v_index(__pyx_v_self->_graph);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":163
 *     def __dealloc__(self):
 *         glpk.delete_v_index(self._graph)
 *         glpk.delete_graph(self._graph)             # <<<<<<<<<<<<<<
 * 
 *     ### Selected struct elements become properties ###
 */
  glp_delete_graph(__pyx_v_self->_graph);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":161
 *         return PyCapsule_New(self._graph, NULL, NULL)
 * 
 *     def __dealloc__(self):             # <<<<<<<<<<<<<<
 *         glpk.delete_v_index(self._graph)
 *         glpk.delete_graph(self._graph)
 */

  /* function exit code */
  __Pyx_RefNannyFinishContext();
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":169
 *     property nv:
 *         """The number of vertices in the graph, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._graph.nv
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_2nv_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_5Graph_2nv_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_2nv___get__(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_2nv___get__(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":170
 *         """The number of vertices in the graph, an `int`"""
 *         def __get__(self):
 *             return self._graph.nv             # <<<<<<<<<<<<<<
 * 
 *     property na:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_graph->nv); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":169
 *     property nv:
 *         """The number of vertices in the graph, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._graph.nv
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Graph.nv.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":174
 *     property na:
 *         """The number of arcs in the graph, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._graph.na
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_2na_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_5Graph_2na_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_2na___get__(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_2na___get__(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":175
 *         """The number of arcs in the graph, an `int`"""
 *         def __get__(self):
 *             return self._graph.na             # <<<<<<<<<<<<<<
 * 
 *     property v_size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_graph->na); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 175; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":174
 *     property na:
 *         """The number of arcs in the graph, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._graph.na
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Graph.na.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":179
 *     property v_size:
 *         """Size of data associated with each vertex, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._graph.v_size
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_6v_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_5Graph_6v_size_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_6v_size___get__(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_6v_size___get__(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":180
 *         """Size of data associated with each vertex, an `int`"""
 *         def __get__(self):
 *             return self._graph.v_size             # <<<<<<<<<<<<<<
 * 
 *     property a_size:
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_graph->v_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 180; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":179
 *     property v_size:
 *         """Size of data associated with each vertex, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._graph.v_size
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Graph.v_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":184
 *     property a_size:
 *         """size of data associated with each arc, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._graph.a_size
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_6a_size_1__get__(PyObject *__pyx_v_self); /*proto*/
static PyObject *__pyx_pw_8ecyglpki_5Graph_6a_size_1__get__(PyObject *__pyx_v_self) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__get__ (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_6a_size___get__(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_6a_size___get__(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("__get__", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":185
 *         """size of data associated with each arc, an `int`"""
 *         def __get__(self):
 *             return self._graph.a_size             # <<<<<<<<<<<<<<
 * 
 *     ### Translated GLPK functions ###
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_self->_graph->a_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":184
 *     property a_size:
 *         """size of data associated with each arc, an `int`"""
 *         def __get__(self):             # <<<<<<<<<<<<<<
 *             return self._graph.a_size
 * 
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Graph.a_size.__get__", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":189
 *     ### Translated GLPK functions ###
 * 
 *     def set_graph_name(self, str name):             # <<<<<<<<<<<<<<
 *         """Assign (change) graph name"""
 *         glpk.set_graph_name(self._graph, name2chars(name))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_7set_graph_name(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_6set_graph_name[] = "Graph.set_graph_name(self, str name)\nAssign (change) graph name";
static PyObject *__pyx_pw_8ecyglpki_5Graph_7set_graph_name(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_graph_name (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 189; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_6set_graph_name(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), ((PyObject*)__pyx_v_name));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_6set_graph_name(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_graph_name", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":191
 *     def set_graph_name(self, str name):
 *         """Assign (change) graph name"""
 *         glpk.set_graph_name(self._graph, name2chars(name))             # <<<<<<<<<<<<<<
 * 
 *     def add_vertices(self, int vertices):
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_name2chars(__pyx_v_name); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_set_graph_name(__pyx_v_self->_graph, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":189
 *     ### Translated GLPK functions ###
 * 
 *     def set_graph_name(self, str name):             # <<<<<<<<<<<<<<
 *         """Assign (change) graph name"""
 *         glpk.set_graph_name(self._graph, name2chars(name))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.set_graph_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":193
 *         glpk.set_graph_name(self._graph, name2chars(name))
 * 
 *     def add_vertices(self, int vertices):             # <<<<<<<<<<<<<<
 *         """Add new vertices to graph"""
 *         return glpk.add_vertices(self._graph, vertices)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_9add_vertices(PyObject *__pyx_v_self, PyObject *__pyx_arg_vertices); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_8add_vertices[] = "Graph.add_vertices(self, int vertices)\nAdd new vertices to graph";
static PyObject *__pyx_pw_8ecyglpki_5Graph_9add_vertices(PyObject *__pyx_v_self, PyObject *__pyx_arg_vertices) {
  int __pyx_v_vertices;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_vertices (wrapper)", 0);
  assert(__pyx_arg_vertices); {
    __pyx_v_vertices = __Pyx_PyInt_As_int(__pyx_arg_vertices); if (unlikely((__pyx_v_vertices == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.add_vertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_8add_vertices(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), ((int)__pyx_v_vertices));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_8add_vertices(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_vertices) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_vertices", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":195
 *     def add_vertices(self, int vertices):
 *         """Add new vertices to graph"""
 *         return glpk.add_vertices(self._graph, vertices)             # <<<<<<<<<<<<<<
 * 
 *     def add_named_vertices(self, *names):  # variant of add_vertices
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_add_vertices(__pyx_v_self->_graph, __pyx_v_vertices)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":193
 *         glpk.set_graph_name(self._graph, name2chars(name))
 * 
 *     def add_vertices(self, int vertices):             # <<<<<<<<<<<<<<
 *         """Add new vertices to graph"""
 *         return glpk.add_vertices(self._graph, vertices)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Graph.add_vertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":197
 *         return glpk.add_vertices(self._graph, vertices)
 * 
 *     def add_named_vertices(self, *names):  # variant of add_vertices             # <<<<<<<<<<<<<<
 *         """Add new vertices to graph
 * 
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_11add_named_vertices(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_10add_named_vertices[] = "Graph.add_named_vertices(self, *names)\nAdd new vertices to graph\n\n        :param names: the names (str strings) of the vertices to add\n\n        ";
static PyObject *__pyx_pw_8ecyglpki_5Graph_11add_named_vertices(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_names = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_named_vertices (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "add_named_vertices", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_names = __pyx_args;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_10add_named_vertices(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_names);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_names);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_10add_named_vertices(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_names) {
  int __pyx_v_number;
  int __pyx_v_first;
  PyObject *__pyx_v_vertex = NULL;
  PyObject *__pyx_v_name = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_t_6;
  PyObject *(*__pyx_t_7)(PyObject *);
  PyObject *__pyx_t_8 = NULL;
  PyObject *__pyx_t_9 = NULL;
  PyObject *(*__pyx_t_10)(PyObject *);
  char *__pyx_t_11;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_named_vertices", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":203
 * 
 *         """
 *         cdef int number = len(names)             # <<<<<<<<<<<<<<
 *         if number is 0:
 *             return
 */
  __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_names); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 203; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_number = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":204
 *         """
 *         cdef int number = len(names)
 *         if number is 0:             # <<<<<<<<<<<<<<
 *             return
 *         cdef int first = self.add_vertices(number)
 */
  __pyx_t_2 = ((__pyx_v_number == 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":205
 *         cdef int number = len(names)
 *         if number is 0:
 *             return             # <<<<<<<<<<<<<<
 *         cdef int first = self.add_vertices(number)
 *         for vertex, name in enumerate(names, start=first):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":206
 *         if number is 0:
 *             return
 *         cdef int first = self.add_vertices(number)             # <<<<<<<<<<<<<<
 *         for vertex, name in enumerate(names, start=first):
 *             glpk.set_vertex_name(self._graph, vertex, name2chars(name))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_add_vertices); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_number); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __pyx_t_5 = PyTuple_New(1); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_4);
  __Pyx_GIVEREF(__pyx_t_4);
  __pyx_t_4 = 0;
  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_t_4); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 206; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __pyx_v_first = __pyx_t_6;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":207
 *             return
 *         cdef int first = self.add_vertices(number)
 *         for vertex, name in enumerate(names, start=first):             # <<<<<<<<<<<<<<
 *             glpk.set_vertex_name(self._graph, vertex, name2chars(name))
 * 
 */
  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_4);
  __Pyx_INCREF(__pyx_v_names);
  PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_names);
  __Pyx_GIVEREF(__pyx_v_names);
  __pyx_t_5 = PyDict_New(); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_5);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_first); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_5, __pyx_n_s_start, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
  if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_5 = __pyx_t_3; __Pyx_INCREF(__pyx_t_5); __pyx_t_1 = 0;
    __pyx_t_7 = NULL;
  } else {
    __pyx_t_1 = -1; __pyx_t_5 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (!__pyx_t_7 && PyList_CheckExact(__pyx_t_5)) {
      if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_5)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else if (!__pyx_t_7 && PyTuple_CheckExact(__pyx_t_5)) {
      if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_5)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_1); __Pyx_INCREF(__pyx_t_3); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_3 = PySequence_ITEM(__pyx_t_5, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else {
      __pyx_t_3 = __pyx_t_7(__pyx_t_5);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
      PyObject* sequence = __pyx_t_3;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_8 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_4 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_8 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_4);
      __Pyx_INCREF(__pyx_t_8);
      #else
      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      #endif
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_9 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_9)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_9);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
      index = 0; __pyx_t_4 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_4)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_4);
      index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_8);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_10 = NULL;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
      __pyx_t_10 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      {__pyx_filename = __pyx_f[7]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_L7_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_vertex, __pyx_t_4);
    __pyx_t_4 = 0;
    __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_8);
    __pyx_t_8 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":208
 *         cdef int first = self.add_vertices(number)
 *         for vertex, name in enumerate(names, start=first):
 *             glpk.set_vertex_name(self._graph, vertex, name2chars(name))             # <<<<<<<<<<<<<<
 * 
 *     def set_vertex_name(self, vertex, str name):
 */
    __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_vertex); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (!(likely(PyString_CheckExact(__pyx_v_name))||((__pyx_v_name) == Py_None)||(PyErr_Format(PyExc_TypeError, "Expected %.16s, got %.200s", "str", Py_TYPE(__pyx_v_name)->tp_name), 0))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __pyx_t_11 = __pyx_f_8ecyglpki_name2chars(((PyObject*)__pyx_v_name)); if (unlikely(__pyx_t_11 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    glp_set_vertex_name(__pyx_v_self->_graph, __pyx_t_6, __pyx_t_11);
  }
  __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":197
 *         return glpk.add_vertices(self._graph, vertices)
 * 
 *     def add_named_vertices(self, *names):  # variant of add_vertices             # <<<<<<<<<<<<<<
 *         """Add new vertices to graph
 * 
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_XDECREF(__pyx_t_9);
  __Pyx_AddTraceback("ecyglpki.Graph.add_named_vertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vertex);
  __Pyx_XDECREF(__pyx_v_name);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":210
 *             glpk.set_vertex_name(self._graph, vertex, name2chars(name))
 * 
 *     def set_vertex_name(self, vertex, str name):             # <<<<<<<<<<<<<<
 *         """Assign (change) vertex name"""
 *         vertex = self.find_vertex_as_needed(vertex)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_13set_vertex_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_12set_vertex_name[] = "Graph.set_vertex_name(self, vertex, str name)\nAssign (change) vertex name";
static PyObject *__pyx_pw_8ecyglpki_5Graph_13set_vertex_name(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_vertex = 0;
  PyObject *__pyx_v_name = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("set_vertex_name (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vertex,&__pyx_n_s_name_2,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertex)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_name_2)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("set_vertex_name", 1, 2, 2, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_vertex_name") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_vertex = values[0];
    __pyx_v_name = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("set_vertex_name", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.set_vertex_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_12set_vertex_name(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_vertex, __pyx_v_name);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_12set_vertex_name(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_vertex, PyObject *__pyx_v_name) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  char *__pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("set_vertex_name", 0);
  __Pyx_INCREF(__pyx_v_vertex);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":212
 *     def set_vertex_name(self, vertex, str name):
 *         """Assign (change) vertex name"""
 *         vertex = self.find_vertex_as_needed(vertex)             # <<<<<<<<<<<<<<
 *         glpk.set_vertex_name(self._graph, vertex, name2chars(name))
 * 
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_vertex_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_vertex);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_vertex);
  __Pyx_GIVEREF(__pyx_v_vertex);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 212; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_vertex, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":213
 *         """Assign (change) vertex name"""
 *         vertex = self.find_vertex_as_needed(vertex)
 *         glpk.set_vertex_name(self._graph, vertex, name2chars(name))             # <<<<<<<<<<<<<<
 * 
 *     def add_arc(self, tail, head):
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_vertex); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __pyx_f_8ecyglpki_name2chars(__pyx_v_name); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 213; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_set_vertex_name(__pyx_v_self->_graph, __pyx_t_4, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":210
 *             glpk.set_vertex_name(self._graph, vertex, name2chars(name))
 * 
 *     def set_vertex_name(self, vertex, str name):             # <<<<<<<<<<<<<<
 *         """Assign (change) vertex name"""
 *         vertex = self.find_vertex_as_needed(vertex)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.set_vertex_name", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_vertex);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":215
 *         glpk.set_vertex_name(self._graph, vertex, name2chars(name))
 * 
 *     def add_arc(self, tail, head):             # <<<<<<<<<<<<<<
 *         """Add new arc to graph"""
 *         tail = self.find_vertex_as_needed(tail)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_15add_arc(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_14add_arc[] = "Graph.add_arc(self, tail, head)\nAdd new arc to graph";
static PyObject *__pyx_pw_8ecyglpki_5Graph_15add_arc(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_tail = 0;
  PyObject *__pyx_v_head = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("add_arc (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_tail,&__pyx_n_s_head,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_tail)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_head)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("add_arc", 1, 2, 2, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "add_arc") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_tail = values[0];
    __pyx_v_head = values[1];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("add_arc", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 215; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.add_arc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_14add_arc(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_tail, __pyx_v_head);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_14add_arc(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_tail, PyObject *__pyx_v_head) {
  struct glp_arc *__pyx_v_arc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("add_arc", 0);
  __Pyx_INCREF(__pyx_v_tail);
  __Pyx_INCREF(__pyx_v_head);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":217
 *     def add_arc(self, tail, head):
 *         """Add new arc to graph"""
 *         tail = self.find_vertex_as_needed(tail)             # <<<<<<<<<<<<<<
 *         head = self.find_vertex_as_needed(head)
 *         cdef glpk.Arc* arc = glpk.add_arc(self._graph, tail, head)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_vertex_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_tail);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_tail);
  __Pyx_GIVEREF(__pyx_v_tail);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_tail, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":218
 *         """Add new arc to graph"""
 *         tail = self.find_vertex_as_needed(tail)
 *         head = self.find_vertex_as_needed(head)             # <<<<<<<<<<<<<<
 *         cdef glpk.Arc* arc = glpk.add_arc(self._graph, tail, head)
 *         return Arc(PyCapsule_New(arc, NULL, NULL))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_vertex_as_needed); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_head);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_head);
  __Pyx_GIVEREF(__pyx_v_head);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_head, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":219
 *         tail = self.find_vertex_as_needed(tail)
 *         head = self.find_vertex_as_needed(head)
 *         cdef glpk.Arc* arc = glpk.add_arc(self._graph, tail, head)             # <<<<<<<<<<<<<<
 *         return Arc(PyCapsule_New(arc, NULL, NULL))
 * 
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_tail); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_head); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 219; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_arc = glp_add_arc(__pyx_v_self->_graph, __pyx_t_4, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":220
 *         head = self.find_vertex_as_needed(head)
 *         cdef glpk.Arc* arc = glpk.add_arc(self._graph, tail, head)
 *         return Arc(PyCapsule_New(arc, NULL, NULL))             # <<<<<<<<<<<<<<
 * 
 *     def del_vertices(self, *vertices):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyCapsule_New(__pyx_v_arc, NULL, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Arc)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 220; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":215
 *         glpk.set_vertex_name(self._graph, vertex, name2chars(name))
 * 
 *     def add_arc(self, tail, head):             # <<<<<<<<<<<<<<
 *         """Add new arc to graph"""
 *         tail = self.find_vertex_as_needed(tail)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.add_arc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_tail);
  __Pyx_XDECREF(__pyx_v_head);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":222
 *         return Arc(PyCapsule_New(arc, NULL, NULL))
 * 
 *     def del_vertices(self, *vertices):             # <<<<<<<<<<<<<<
 *         """Delete vertices from graph"""
 *         cdef int n = len(vertices)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_17del_vertices(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_16del_vertices[] = "Graph.del_vertices(self, *vertices)\nDelete vertices from graph";
static PyObject *__pyx_pw_8ecyglpki_5Graph_17del_vertices(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_vertices = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("del_vertices (wrapper)", 0);
  if (unlikely(__pyx_kwds) && unlikely(PyDict_Size(__pyx_kwds) > 0) && unlikely(!__Pyx_CheckKeywordStrings(__pyx_kwds, "del_vertices", 0))) return NULL;
  __Pyx_INCREF(__pyx_args);
  __pyx_v_vertices = __pyx_args;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_16del_vertices(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_vertices);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_vertices);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_16del_vertices(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_vertices) {
  int __pyx_v_n;
  int *__pyx_v_inds;
  PyObject *__pyx_v_i = NULL;
  PyObject *__pyx_v_vertex = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  Py_ssize_t __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *(*__pyx_t_9)(PyObject *);
  int __pyx_t_10;
  Py_ssize_t __pyx_t_11;
  int __pyx_t_12;
  char const *__pyx_t_13;
  PyObject *__pyx_t_14 = NULL;
  PyObject *__pyx_t_15 = NULL;
  PyObject *__pyx_t_16 = NULL;
  PyObject *__pyx_t_17 = NULL;
  PyObject *__pyx_t_18 = NULL;
  PyObject *__pyx_t_19 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("del_vertices", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":224
 *     def del_vertices(self, *vertices):
 *         """Delete vertices from graph"""
 *         cdef int n = len(vertices)             # <<<<<<<<<<<<<<
 *         if n is 0:
 *             return
 */
  __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_vertices); if (unlikely(__pyx_t_1 == -1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 224; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_n = __pyx_t_1;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":225
 *         """Delete vertices from graph"""
 *         cdef int n = len(vertices)
 *         if n is 0:             # <<<<<<<<<<<<<<
 *             return
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 */
  __pyx_t_2 = ((__pyx_v_n == 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":226
 *         cdef int n = len(vertices)
 *         if n is 0:
 *             return             # <<<<<<<<<<<<<<
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 *         try:
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_r = Py_None; __Pyx_INCREF(Py_None);
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":227
 *         if n is 0:
 *             return
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))             # <<<<<<<<<<<<<<
 *         try:
 *             for i, vertex in enumerate(vertices, start=1):
 */
  __pyx_v_inds = ((int *)glp_alloc((1 + __pyx_v_n), (sizeof(int))));

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":228
 *             return
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 *         try:             # <<<<<<<<<<<<<<
 *             for i, vertex in enumerate(vertices, start=1):
 *                 inds[i] = self.find_vertex_as_needed(vertex)
 */
  /*try:*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":229
 *         cdef int* inds = <int*>glpk.alloc(1+n, sizeof(int))
 *         try:
 *             for i, vertex in enumerate(vertices, start=1):             # <<<<<<<<<<<<<<
 *                 inds[i] = self.find_vertex_as_needed(vertex)
 *             glpk.del_vertices(self._graph, n, inds)
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_INCREF(__pyx_v_vertices);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_vertices);
    __Pyx_GIVEREF(__pyx_v_vertices);
    __pyx_t_4 = PyDict_New(); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_4);
    if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_start, __pyx_int_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_builtin_enumerate, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    if (PyList_CheckExact(__pyx_t_5) || PyTuple_CheckExact(__pyx_t_5)) {
      __pyx_t_4 = __pyx_t_5; __Pyx_INCREF(__pyx_t_4); __pyx_t_1 = 0;
      __pyx_t_6 = NULL;
    } else {
      __pyx_t_1 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_4);
      __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    for (;;) {
      if (!__pyx_t_6 && PyList_CheckExact(__pyx_t_4)) {
        if (__pyx_t_1 >= PyList_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else if (!__pyx_t_6 && PyTuple_CheckExact(__pyx_t_4)) {
        if (__pyx_t_1 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_1); __Pyx_INCREF(__pyx_t_5); __pyx_t_1++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #else
        __pyx_t_5 = PySequence_ITEM(__pyx_t_4, __pyx_t_1); __pyx_t_1++; if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        #endif
      } else {
        __pyx_t_5 = __pyx_t_6(__pyx_t_4);
        if (unlikely(!__pyx_t_5)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_5);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
        PyObject* sequence = __pyx_t_5;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_3 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_3);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_3);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_3 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_3)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_3);
        index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L9_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L10_unpacking_done;
        __pyx_L9_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[7]; __pyx_lineno = 229; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
        __pyx_L10_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
      __pyx_t_3 = 0;
      __Pyx_XDECREF_SET(__pyx_v_vertex, __pyx_t_7);
      __pyx_t_7 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":230
 *         try:
 *             for i, vertex in enumerate(vertices, start=1):
 *                 inds[i] = self.find_vertex_as_needed(vertex)             # <<<<<<<<<<<<<<
 *             glpk.del_vertices(self._graph, n, inds)
 *         finally:
 */
      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_vertex_as_needed); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_5);
      __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_7);
      __Pyx_INCREF(__pyx_v_vertex);
      PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_vertex);
      __Pyx_GIVEREF(__pyx_v_vertex);
      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_GOTREF(__pyx_t_3);
      __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
      __pyx_t_10 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_10 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_11 = __Pyx_PyIndex_AsSsize_t(__pyx_v_i); if (unlikely((__pyx_t_11 == (Py_ssize_t)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 230; __pyx_clineno = __LINE__; goto __pyx_L5_error;}
      (__pyx_v_inds[__pyx_t_11]) = __pyx_t_10;
    }
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":231
 *             for i, vertex in enumerate(vertices, start=1):
 *                 inds[i] = self.find_vertex_as_needed(vertex)
 *             glpk.del_vertices(self._graph, n, inds)             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(inds)
 */
    glp_del_vertices(__pyx_v_self->_graph, __pyx_v_n, __pyx_v_inds);
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":233
 *             glpk.del_vertices(self._graph, n, inds)
 *         finally:
 *             glpk.free(inds)             # <<<<<<<<<<<<<<
 * 
 *     def del_arc(self, Arc arc):
 */
  /*finally:*/ {
    /*normal exit:*/{
      glp_free(__pyx_v_inds);
      goto __pyx_L6;
    }
    /*exception exit:*/{
      __pyx_L5_error:;
      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
      __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
      __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
      __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
      __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
      if (PY_MAJOR_VERSION >= 3) __Pyx_ExceptionSwap(&__pyx_t_17, &__pyx_t_18, &__pyx_t_19);
      if ((PY_MAJOR_VERSION < 3) || unlikely(__Pyx_GetException(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16) < 0)) __Pyx_ErrFetch(&__pyx_t_14, &__pyx_t_15, &__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_14);
      __Pyx_XGOTREF(__pyx_t_15);
      __Pyx_XGOTREF(__pyx_t_16);
      __Pyx_XGOTREF(__pyx_t_17);
      __Pyx_XGOTREF(__pyx_t_18);
      __Pyx_XGOTREF(__pyx_t_19);
      __pyx_t_10 = __pyx_lineno; __pyx_t_12 = __pyx_clineno; __pyx_t_13 = __pyx_filename;
      {
        glp_free(__pyx_v_inds);
      }
      if (PY_MAJOR_VERSION >= 3) {
        __Pyx_XGIVEREF(__pyx_t_17);
        __Pyx_XGIVEREF(__pyx_t_18);
        __Pyx_XGIVEREF(__pyx_t_19);
        __Pyx_ExceptionReset(__pyx_t_17, __pyx_t_18, __pyx_t_19);
      }
      __Pyx_XGIVEREF(__pyx_t_14);
      __Pyx_XGIVEREF(__pyx_t_15);
      __Pyx_XGIVEREF(__pyx_t_16);
      __Pyx_ErrRestore(__pyx_t_14, __pyx_t_15, __pyx_t_16);
      __pyx_t_14 = 0; __pyx_t_15 = 0; __pyx_t_16 = 0; __pyx_t_17 = 0; __pyx_t_18 = 0; __pyx_t_19 = 0;
      __pyx_lineno = __pyx_t_10; __pyx_clineno = __pyx_t_12; __pyx_filename = __pyx_t_13;
      goto __pyx_L1_error;
    }
    __pyx_L6:;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":222
 *         return Arc(PyCapsule_New(arc, NULL, NULL))
 * 
 *     def del_vertices(self, *vertices):             # <<<<<<<<<<<<<<
 *         """Delete vertices from graph"""
 *         cdef int n = len(vertices)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("ecyglpki.Graph.del_vertices", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_i);
  __Pyx_XDECREF(__pyx_v_vertex);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":235
 *             glpk.free(inds)
 * 
 *     def del_arc(self, Arc arc):             # <<<<<<<<<<<<<<
 *         """Delete arc from graph"""
 *         cdef glpk.Arc* _arc = <glpk.Arc*>PyCapsule_GetPointer(arc._arc_ptr(),
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_19del_arc(PyObject *__pyx_v_self, PyObject *__pyx_v_arc); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_18del_arc[] = "Graph.del_arc(self, Arc arc)\nDelete arc from graph";
static PyObject *__pyx_pw_8ecyglpki_5Graph_19del_arc(PyObject *__pyx_v_self, PyObject *__pyx_v_arc) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("del_arc (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_arc), __pyx_ptype_8ecyglpki_Arc, 1, "arc", 0))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 235; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_18del_arc(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), ((struct __pyx_obj_8ecyglpki_Arc *)__pyx_v_arc));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_18del_arc(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, struct __pyx_obj_8ecyglpki_Arc *__pyx_v_arc) {
  struct glp_arc *__pyx_v__arc;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  void *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("del_arc", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":237
 *     def del_arc(self, Arc arc):
 *         """Delete arc from graph"""
 *         cdef glpk.Arc* _arc = <glpk.Arc*>PyCapsule_GetPointer(arc._arc_ptr(),             # <<<<<<<<<<<<<<
 *                                                              NULL)
 *         glpk.del_arc(self._graph, _arc)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_arc), __pyx_n_s_arc_ptr_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":238
 *         """Delete arc from graph"""
 *         cdef glpk.Arc* _arc = <glpk.Arc*>PyCapsule_GetPointer(arc._arc_ptr(),
 *                                                              NULL)             # <<<<<<<<<<<<<<
 *         glpk.del_arc(self._graph, _arc)
 * 
 */
  __pyx_t_3 = PyCapsule_GetPointer(__pyx_t_2, NULL); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 237; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":237
 *     def del_arc(self, Arc arc):
 *         """Delete arc from graph"""
 *         cdef glpk.Arc* _arc = <glpk.Arc*>PyCapsule_GetPointer(arc._arc_ptr(),             # <<<<<<<<<<<<<<
 *                                                              NULL)
 *         glpk.del_arc(self._graph, _arc)
 */
  __pyx_v__arc = ((struct glp_arc *)__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":239
 *         cdef glpk.Arc* _arc = <glpk.Arc*>PyCapsule_GetPointer(arc._arc_ptr(),
 *                                                              NULL)
 *         glpk.del_arc(self._graph, _arc)             # <<<<<<<<<<<<<<
 * 
 *     def erase_graph(self, int vertex_data_size, int arc_data_size):
 */
  glp_del_arc(__pyx_v_self->_graph, __pyx_v__arc);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":235
 *             glpk.free(inds)
 * 
 *     def del_arc(self, Arc arc):             # <<<<<<<<<<<<<<
 *         """Delete arc from graph"""
 *         cdef glpk.Arc* _arc = <glpk.Arc*>PyCapsule_GetPointer(arc._arc_ptr(),
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Graph.del_arc", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":241
 *         glpk.del_arc(self._graph, _arc)
 * 
 *     def erase_graph(self, int vertex_data_size, int arc_data_size):             # <<<<<<<<<<<<<<
 *         """Erase graph content"""
 *         glpk.erase_graph(self._graph, vertex_data_size, arc_data_size)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_21erase_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_20erase_graph[] = "Graph.erase_graph(self, int vertex_data_size, int arc_data_size)\nErase graph content";
static PyObject *__pyx_pw_8ecyglpki_5Graph_21erase_graph(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_vertex_data_size;
  int __pyx_v_arc_data_size;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("erase_graph (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vertex_data_size,&__pyx_n_s_arc_data_size,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertex_data_size)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_arc_data_size)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("erase_graph", 1, 2, 2, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "erase_graph") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_vertex_data_size = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_vertex_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_arc_data_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_arc_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("erase_graph", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 241; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.erase_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_20erase_graph(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_vertex_data_size, __pyx_v_arc_data_size);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_20erase_graph(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("erase_graph", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":243
 *     def erase_graph(self, int vertex_data_size, int arc_data_size):
 *         """Erase graph content"""
 *         glpk.erase_graph(self._graph, vertex_data_size, arc_data_size)             # <<<<<<<<<<<<<<
 * 
 *     def find_vertex(self, str name):
 */
  glp_erase_graph(__pyx_v_self->_graph, __pyx_v_vertex_data_size, __pyx_v_arc_data_size);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":241
 *         glpk.del_arc(self._graph, _arc)
 * 
 *     def erase_graph(self, int vertex_data_size, int arc_data_size):             # <<<<<<<<<<<<<<
 *         """Erase graph content"""
 *         glpk.erase_graph(self._graph, vertex_data_size, arc_data_size)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":245
 *         glpk.erase_graph(self._graph, vertex_data_size, arc_data_size)
 * 
 *     def find_vertex(self, str name):             # <<<<<<<<<<<<<<
 *         """Find vertex by its name"""
 *         cdef int vertex = glpk.find_vertex(self._graph, name2chars(name))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_23find_vertex(PyObject *__pyx_v_self, PyObject *__pyx_v_name); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_22find_vertex[] = "Graph.find_vertex(self, str name)\nFind vertex by its name";
static PyObject *__pyx_pw_8ecyglpki_5Graph_23find_vertex(PyObject *__pyx_v_self, PyObject *__pyx_v_name) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("find_vertex (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_name), (&PyString_Type), 1, "name", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 245; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_22find_vertex(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), ((PyObject*)__pyx_v_name));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_22find_vertex(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_name) {
  int __pyx_v_vertex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("find_vertex", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":247
 *     def find_vertex(self, str name):
 *         """Find vertex by its name"""
 *         cdef int vertex = glpk.find_vertex(self._graph, name2chars(name))             # <<<<<<<<<<<<<<
 *         if vertex is 0:
 *             raise ValueError("'" + name + "' is not a vertex name.")
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_name2chars(__pyx_v_name); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 247; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_vertex = glp_find_vertex(__pyx_v_self->_graph, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":248
 *         """Find vertex by its name"""
 *         cdef int vertex = glpk.find_vertex(self._graph, name2chars(name))
 *         if vertex is 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("'" + name + "' is not a vertex name.")
 *         else:
 */
  __pyx_t_2 = ((__pyx_v_vertex == 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":249
 *         cdef int vertex = glpk.find_vertex(self._graph, name2chars(name))
 *         if vertex is 0:
 *             raise ValueError("'" + name + "' is not a vertex name.")             # <<<<<<<<<<<<<<
 *         else:
 *             return vertex
 */
    __pyx_t_3 = PyNumber_Add(__pyx_kp_s__7, __pyx_v_name); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_kp_s_is_not_a_vertex_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 249; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":251
 *             raise ValueError("'" + name + "' is not a vertex name.")
 *         else:
 *             return vertex             # <<<<<<<<<<<<<<
 * 
 *     def find_vertex_as_needed(self, vertex):
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_vertex); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 251; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_r = __pyx_t_4;
    __pyx_t_4 = 0;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":245
 *         glpk.erase_graph(self._graph, vertex_data_size, arc_data_size)
 * 
 *     def find_vertex(self, str name):             # <<<<<<<<<<<<<<
 *         """Find vertex by its name"""
 *         cdef int vertex = glpk.find_vertex(self._graph, name2chars(name))
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Graph.find_vertex", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":253
 *             return vertex
 * 
 *     def find_vertex_as_needed(self, vertex):             # <<<<<<<<<<<<<<
 *         if isinstance(vertex, int):
 *             return vertex
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_25find_vertex_as_needed(PyObject *__pyx_v_self, PyObject *__pyx_v_vertex); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_24find_vertex_as_needed[] = "Graph.find_vertex_as_needed(self, vertex)";
static PyObject *__pyx_pw_8ecyglpki_5Graph_25find_vertex_as_needed(PyObject *__pyx_v_self, PyObject *__pyx_v_vertex) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("find_vertex_as_needed (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_24find_vertex_as_needed(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), ((PyObject *)__pyx_v_vertex));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_24find_vertex_as_needed(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_vertex) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  PyObject *__pyx_t_5 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("find_vertex_as_needed", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":254
 * 
 *     def find_vertex_as_needed(self, vertex):
 *         if isinstance(vertex, int):             # <<<<<<<<<<<<<<
 *             return vertex
 *         elif isinstance(vertex, str):
 */
  __pyx_t_1 = PyInt_Check(__pyx_v_vertex); 
  __pyx_t_2 = (__pyx_t_1 != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":255
 *     def find_vertex_as_needed(self, vertex):
 *         if isinstance(vertex, int):
 *             return vertex             # <<<<<<<<<<<<<<
 *         elif isinstance(vertex, str):
 *             return self.find_vertex(vertex)
 */
    __Pyx_XDECREF(__pyx_r);
    __Pyx_INCREF(__pyx_v_vertex);
    __pyx_r = __pyx_v_vertex;
    goto __pyx_L0;
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":256
 *         if isinstance(vertex, int):
 *             return vertex
 *         elif isinstance(vertex, str):             # <<<<<<<<<<<<<<
 *             return self.find_vertex(vertex)
 *         else:
 */
  __pyx_t_2 = PyString_Check(__pyx_v_vertex); 
  __pyx_t_1 = (__pyx_t_2 != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":257
 *             return vertex
 *         elif isinstance(vertex, str):
 *             return self.find_vertex(vertex)             # <<<<<<<<<<<<<<
 *         else:
 *             raise TypeError("'vertex' must be a number ('int') or a name " +
 */
    __Pyx_XDECREF(__pyx_r);
    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_vertex); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_INCREF(__pyx_v_vertex);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v_vertex);
    __Pyx_GIVEREF(__pyx_v_vertex);
    __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_r = __pyx_t_5;
    __pyx_t_5 = 0;
    goto __pyx_L0;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":259
 *             return self.find_vertex(vertex)
 *         else:
 *             raise TypeError("'vertex' must be a number ('int') or a name " +             # <<<<<<<<<<<<<<
 *                             "(str 'str'), not '" + type(vertex).__name__ +
 *                             "'.")
 */
    __pyx_t_5 = PyNumber_Add(__pyx_kp_s_vertex_must_be_a_number_int_or, __pyx_kp_s_str_str_not); if (unlikely(!__pyx_t_5)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_5);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":260
 *         else:
 *             raise TypeError("'vertex' must be a number ('int') or a name " +
 *                             "(str 'str'), not '" + type(vertex).__name__ +             # <<<<<<<<<<<<<<
 *                             "'.")
 * 
 */
    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_vertex)), __pyx_n_s_name); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __pyx_t_3 = PyNumber_Add(__pyx_t_5, __pyx_t_4); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __pyx_t_4 = PyNumber_Add(__pyx_t_3, __pyx_kp_s__8); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 260; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":259
 *             return self.find_vertex(vertex)
 *         else:
 *             raise TypeError("'vertex' must be a number ('int') or a name " +             # <<<<<<<<<<<<<<
 *                             "(str 'str'), not '" + type(vertex).__name__ +
 *                             "'.")
 */
    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_t_3, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 259; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":253
 *             return vertex
 * 
 *     def find_vertex_as_needed(self, vertex):             # <<<<<<<<<<<<<<
 *         if isinstance(vertex, int):
 *             return vertex
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_XDECREF(__pyx_t_5);
  __Pyx_AddTraceback("ecyglpki.Graph.find_vertex_as_needed", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":263
 *                             "'.")
 * 
 *     def get_vertex_object(self, vertex):             # <<<<<<<<<<<<<<
 *         """Return Vertex object"""
 *         cdef int ind = self.find_vertex_as_needed(vertex)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_27get_vertex_object(PyObject *__pyx_v_self, PyObject *__pyx_v_vertex); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_26get_vertex_object[] = "Graph.get_vertex_object(self, vertex)\nReturn Vertex object";
static PyObject *__pyx_pw_8ecyglpki_5Graph_27get_vertex_object(PyObject *__pyx_v_self, PyObject *__pyx_v_vertex) {
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("get_vertex_object (wrapper)", 0);
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_26get_vertex_object(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), ((PyObject *)__pyx_v_vertex));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_26get_vertex_object(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_vertex) {
  int __pyx_v_ind;
  struct glp_vertex *__pyx_v__vertex;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("get_vertex_object", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":265
 *     def get_vertex_object(self, vertex):
 *         """Return Vertex object"""
 *         cdef int ind = self.find_vertex_as_needed(vertex)             # <<<<<<<<<<<<<<
 *         if (ind > self.nv) or (ind < 1):
 *             raise ValueError("Incorrect vertex index.")
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_vertex_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_vertex);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_vertex);
  __Pyx_GIVEREF(__pyx_v_vertex);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_ind = __pyx_t_4;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":266
 *         """Return Vertex object"""
 *         cdef int ind = self.find_vertex_as_needed(vertex)
 *         if (ind > self.nv) or (ind < 1):             # <<<<<<<<<<<<<<
 *             raise ValueError("Incorrect vertex index.")
 *         cdef glpk.Vertex* _vertex = self._graph.v[ind]
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_ind); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_nv); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyObject_RichCompare(__pyx_t_3, __pyx_t_2, Py_GT); __Pyx_XGOTREF(__pyx_t_1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_5 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 266; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (!__pyx_t_5) {
    __pyx_t_6 = (__pyx_v_ind < 1);
    __pyx_t_7 = __pyx_t_6;
  } else {
    __pyx_t_7 = __pyx_t_5;
  }
  if (__pyx_t_7) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":267
 *         cdef int ind = self.find_vertex_as_needed(vertex)
 *         if (ind > self.nv) or (ind < 1):
 *             raise ValueError("Incorrect vertex index.")             # <<<<<<<<<<<<<<
 *         cdef glpk.Vertex* _vertex = self._graph.v[ind]
 *         return Vertex(PyCapsule_New(_vertex, NULL, NULL))
 */
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":268
 *         if (ind > self.nv) or (ind < 1):
 *             raise ValueError("Incorrect vertex index.")
 *         cdef glpk.Vertex* _vertex = self._graph.v[ind]             # <<<<<<<<<<<<<<
 *         return Vertex(PyCapsule_New(_vertex, NULL, NULL))
 * 
 */
  __pyx_v__vertex = (__pyx_v_self->_graph->v[__pyx_v_ind]);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":269
 *             raise ValueError("Incorrect vertex index.")
 *         cdef glpk.Vertex* _vertex = self._graph.v[ind]
 *         return Vertex(PyCapsule_New(_vertex, NULL, NULL))             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyCapsule_New(__pyx_v__vertex, NULL, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Vertex)), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 269; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":263
 *                             "'.")
 * 
 *     def get_vertex_object(self, vertex):             # <<<<<<<<<<<<<<
 *         """Return Vertex object"""
 *         cdef int ind = self.find_vertex_as_needed(vertex)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.get_vertex_object", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":272
 * 
 *     @classmethod
 *     def read_graph(cls, int vertex_data_size, int arc_data_size, str fname):             # <<<<<<<<<<<<<<
 *         """Read graph from plain text file"""
 *         graph = cls(vertex_data_size, arc_data_size)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_29read_graph(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_28read_graph[] = "Graph.read_graph(type cls, int vertex_data_size, int arc_data_size, str fname)\nRead graph from plain text file";
static PyObject *__pyx_pw_8ecyglpki_5Graph_29read_graph(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_vertex_data_size;
  int __pyx_v_arc_data_size;
  PyObject *__pyx_v_fname = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_graph (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vertex_data_size,&__pyx_n_s_arc_data_size,&__pyx_n_s_fname,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertex_data_size)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_arc_data_size)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_graph", 1, 3, 3, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_graph", 1, 3, 3, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_graph") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_vertex_data_size = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_vertex_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_arc_data_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_arc_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_fname = ((PyObject*)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("read_graph", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.read_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_28read_graph(((PyObject*)__pyx_v_cls), __pyx_v_vertex_data_size, __pyx_v_arc_data_size, __pyx_v_fname);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_28read_graph(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, PyObject *__pyx_v_fname) {
  PyObject *__pyx_v_graph = NULL;
  struct glp_graph *__pyx_v__graph;
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  char *__pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read_graph", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":274
 *     def read_graph(cls, int vertex_data_size, int arc_data_size, str fname):
 *         """Read graph from plain text file"""
 *         graph = cls(vertex_data_size, arc_data_size)             # <<<<<<<<<<<<<<
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_vertex_data_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_arc_data_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_graph = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":276
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         retcode = glpk.read_graph(_graph, str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph_ptr_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 276; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":275
 *         """Read graph from plain text file"""
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     graph._graph_ptr(), NULL)
 *         retcode = glpk.read_graph(_graph, str2chars(fname))
 */
  __pyx_t_4 = PyCapsule_GetPointer(__pyx_t_3, NULL); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v__graph = ((struct glp_graph *)__pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":277
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)
 *         retcode = glpk.read_graph(_graph, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading graph from plain text file")
 */
  __pyx_t_5 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 277; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_read_graph(__pyx_v__graph, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":278
 *                                                     graph._graph_ptr(), NULL)
 *         retcode = glpk.read_graph(_graph, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error reading graph from plain text file")
 *         return graph
 */
  __pyx_t_6 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_6) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":279
 *         retcode = glpk.read_graph(_graph, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading graph from plain text file")             # <<<<<<<<<<<<<<
 *         return graph
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":280
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading graph from plain text file")
 *         return graph             # <<<<<<<<<<<<<<
 * 
 *     def write_graph(self, str fname):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_graph);
  __pyx_r = __pyx_v_graph;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":272
 * 
 *     @classmethod
 *     def read_graph(cls, int vertex_data_size, int arc_data_size, str fname):             # <<<<<<<<<<<<<<
 *         """Read graph from plain text file"""
 *         graph = cls(vertex_data_size, arc_data_size)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.read_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_graph);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":282
 *         return graph
 * 
 *     def write_graph(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write graph to plain text file"""
 *         retcode = glpk.write_graph(self._graph, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_31write_graph(PyObject *__pyx_v_self, PyObject *__pyx_v_fname); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_30write_graph[] = "Graph.write_graph(self, str fname)\nWrite graph to plain text file";
static PyObject *__pyx_pw_8ecyglpki_5Graph_31write_graph(PyObject *__pyx_v_self, PyObject *__pyx_v_fname) {
  CYTHON_UNUSED int __pyx_lineno = 0;
  CYTHON_UNUSED const char *__pyx_filename = NULL;
  CYTHON_UNUSED int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_graph (wrapper)", 0);
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_30write_graph(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), ((PyObject*)__pyx_v_fname));

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_30write_graph(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write_graph", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":284
 *     def write_graph(self, str fname):
 *         """Write graph to plain text file"""
 *         retcode = glpk.write_graph(self._graph, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing graph plain text file")
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 284; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_write_graph(__pyx_v_self->_graph, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":285
 *         """Write graph to plain text file"""
 *         retcode = glpk.write_graph(self._graph, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing graph plain text file")
 * 
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":286
 *         retcode = glpk.write_graph(self._graph, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing graph plain text file")             # <<<<<<<<<<<<<<
 * 
 *     def mincost_lp(self, bint copy_names,
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":282
 *         return graph
 * 
 *     def write_graph(self, str fname):             # <<<<<<<<<<<<<<
 *         """Write graph to plain text file"""
 *         retcode = glpk.write_graph(self._graph, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.write_graph", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":288
 *             raise RuntimeError("Error writing graph plain text file")
 * 
 *     def mincost_lp(self, bint copy_names,             # <<<<<<<<<<<<<<
 *                    int v_rhs, int a_low, int a_cap, int a_cost):
 *         """Convert minimum cost flow problem to LP"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_33mincost_lp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_32mincost_lp[] = "Graph.mincost_lp(self, bool copy_names, int v_rhs, int a_low, int a_cap, int a_cost)\nConvert minimum cost flow problem to LP";
static PyObject *__pyx_pw_8ecyglpki_5Graph_33mincost_lp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_copy_names;
  int __pyx_v_v_rhs;
  int __pyx_v_a_low;
  int __pyx_v_a_cap;
  int __pyx_v_a_cost;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mincost_lp (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_copy_names,&__pyx_n_s_v_rhs,&__pyx_n_s_a_low,&__pyx_n_s_a_cap,&__pyx_n_s_a_cost,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_copy_names)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_rhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_lp", 1, 5, 5, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_low)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_lp", 1, 5, 5, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_lp", 1, 5, 5, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cost)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_lp", 1, 5, 5, 4); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mincost_lp") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_copy_names = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_copy_names == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_v_rhs = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_v_rhs == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_low = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_a_low == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cap = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_a_cap == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cost = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_a_cost == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 289; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mincost_lp", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.mincost_lp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_32mincost_lp(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_copy_names, __pyx_v_v_rhs, __pyx_v_a_low, __pyx_v_a_cap, __pyx_v_a_cost);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_32mincost_lp(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_copy_names, int __pyx_v_v_rhs, int __pyx_v_a_low, int __pyx_v_a_cap, int __pyx_v_a_cost) {
  struct __pyx_obj_8ecyglpki_Problem *__pyx_v_problem = NULL;
  struct glp_prob *__pyx_v_prob;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  void *__pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mincost_lp", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":291
 *                    int v_rhs, int a_low, int a_cap, int a_cost):
 *         """Convert minimum cost flow problem to LP"""
 *         problem = Problem()             # <<<<<<<<<<<<<<
 *         cdef glpk.Prob* prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Problem)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 291; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_problem = ((struct __pyx_obj_8ecyglpki_Problem *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":293
 *         problem = Problem()
 *         cdef glpk.Prob* prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         glpk.mincost_lp(prob, self._graph, copy_names,
 *                         v_rhs, a_low, a_cap, a_cost)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_problem), __pyx_n_s_prob_ptr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":292
 *         """Convert minimum cost flow problem to LP"""
 *         problem = Problem()
 *         cdef glpk.Prob* prob = <glpk.Prob*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     problem._prob_ptr(), NULL)
 *         glpk.mincost_lp(prob, self._graph, copy_names,
 */
  __pyx_t_3 = PyCapsule_GetPointer(__pyx_t_2, NULL); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 292; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_prob = ((struct glp_prob *)__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":294
 *         cdef glpk.Prob* prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 *         glpk.mincost_lp(prob, self._graph, copy_names,             # <<<<<<<<<<<<<<
 *                         v_rhs, a_low, a_cap, a_cost)
 *         return problem
 */
  glp_mincost_lp(__pyx_v_prob, __pyx_v_self->_graph, __pyx_v_copy_names, __pyx_v_v_rhs, __pyx_v_a_low, __pyx_v_a_cap, __pyx_v_a_cost);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":296
 *         glpk.mincost_lp(prob, self._graph, copy_names,
 *                         v_rhs, a_low, a_cap, a_cost)
 *         return problem             # <<<<<<<<<<<<<<
 * 
 *     def mincost_okalg(self, int v_rhs, int a_low, int a_cap, int a_cost,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_problem));
  __pyx_r = ((PyObject *)__pyx_v_problem);
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":288
 *             raise RuntimeError("Error writing graph plain text file")
 * 
 *     def mincost_lp(self, bint copy_names,             # <<<<<<<<<<<<<<
 *                    int v_rhs, int a_low, int a_cap, int a_cost):
 *         """Convert minimum cost flow problem to LP"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Graph.mincost_lp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_problem);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":298
 *         return problem
 * 
 *     def mincost_okalg(self, int v_rhs, int a_low, int a_cap, int a_cost,             # <<<<<<<<<<<<<<
 *                       int a_x, int v_pi):
 *         """Find minimum-cost flow with out-of-kilter algorithm"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_35mincost_okalg(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_34mincost_okalg[] = "Graph.mincost_okalg(self, int v_rhs, int a_low, int a_cap, int a_cost, int a_x, int v_pi)\nFind minimum-cost flow with out-of-kilter algorithm";
static PyObject *__pyx_pw_8ecyglpki_5Graph_35mincost_okalg(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_v_rhs;
  int __pyx_v_a_low;
  int __pyx_v_a_cap;
  int __pyx_v_a_cost;
  int __pyx_v_a_x;
  int __pyx_v_v_pi;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mincost_okalg (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_v_rhs,&__pyx_n_s_a_low,&__pyx_n_s_a_cap,&__pyx_n_s_a_cost,&__pyx_n_s_a_x,&__pyx_n_s_v_pi,0};
    PyObject* values[6] = {0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_rhs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_low)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_okalg", 1, 6, 6, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_okalg", 1, 6, 6, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cost)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_okalg", 1, 6, 6, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_okalg", 1, 6, 6, 4); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_pi)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_okalg", 1, 6, 6, 5); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mincost_okalg") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
    }
    __pyx_v_v_rhs = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_v_rhs == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_low = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_a_low == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cap = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_a_cap == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cost = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_a_cost == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_x = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_a_x == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_v_pi = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_v_pi == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 299; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mincost_okalg", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 298; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.mincost_okalg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_34mincost_okalg(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_v_rhs, __pyx_v_a_low, __pyx_v_a_cap, __pyx_v_a_cost, __pyx_v_a_x, __pyx_v_v_pi);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_34mincost_okalg(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_rhs, int __pyx_v_a_low, int __pyx_v_a_cap, int __pyx_v_a_cost, int __pyx_v_a_x, int __pyx_v_v_pi) {
  double __pyx_v_sol;
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mincost_okalg", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":302
 *         """Find minimum-cost flow with out-of-kilter algorithm"""
 *         cdef double sol
 *         retcode = glpk.mincost_okalg(self._graph, v_rhs, a_low, a_cap, a_cost,             # <<<<<<<<<<<<<<
 *                                      &sol, a_x, v_pi)
 *         if retcode is not 0:
 */
  __pyx_v_retcode = glp_mincost_okalg(__pyx_v_self->_graph, __pyx_v_v_rhs, __pyx_v_a_low, __pyx_v_a_cap, __pyx_v_a_cost, (&__pyx_v_sol), __pyx_v_a_x, __pyx_v_v_pi);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":304
 *         retcode = glpk.mincost_okalg(self._graph, v_rhs, a_low, a_cap, a_cost,
 *                                      &sol, a_x, v_pi)
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise ioretcode2error[retcode]
 *         return sol
 */
  __pyx_t_1 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":305
 *                                      &sol, a_x, v_pi)
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]             # <<<<<<<<<<<<<<
 *         return sol
 * 
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_ioretcode2error, __pyx_v_retcode, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 305; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":306
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]
 *         return sol             # <<<<<<<<<<<<<<
 * 
 *     def mincost_relax4(self, int v_rhs, int a_low, int a_cap, int a_cost,
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_sol); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 306; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":298
 *         return problem
 * 
 *     def mincost_okalg(self, int v_rhs, int a_low, int a_cap, int a_cost,             # <<<<<<<<<<<<<<
 *                       int a_x, int v_pi):
 *         """Find minimum-cost flow with out-of-kilter algorithm"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Graph.mincost_okalg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":308
 *         return sol
 * 
 *     def mincost_relax4(self, int v_rhs, int a_low, int a_cap, int a_cost,             # <<<<<<<<<<<<<<
 *                        int crash, int a_x, int a_rc):
 *         """Find minimum-cost flow with Bertsekas-Tseng relaxation method"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_37mincost_relax4(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_36mincost_relax4[] = "Graph.mincost_relax4(self, int v_rhs, int a_low, int a_cap, int a_cost, int crash, int a_x, int a_rc)\nFind minimum-cost flow with Bertsekas-Tseng relaxation method";
static PyObject *__pyx_pw_8ecyglpki_5Graph_37mincost_relax4(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_v_rhs;
  int __pyx_v_a_low;
  int __pyx_v_a_cap;
  int __pyx_v_a_cost;
  int __pyx_v_crash;
  int __pyx_v_a_x;
  int __pyx_v_a_rc;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("mincost_relax4 (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_v_rhs,&__pyx_n_s_a_low,&__pyx_n_s_a_cap,&__pyx_n_s_a_cost,&__pyx_n_s_crash,&__pyx_n_s_a_x,&__pyx_n_s_a_rc,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_rhs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_low)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_relax4", 1, 7, 7, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_relax4", 1, 7, 7, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cost)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_relax4", 1, 7, 7, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_crash)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_relax4", 1, 7, 7, 4); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_relax4", 1, 7, 7, 5); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_rc)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("mincost_relax4", 1, 7, 7, 6); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "mincost_relax4") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_v_rhs = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_v_rhs == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_low = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_a_low == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cap = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_a_cap == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cost = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_a_cost == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_crash = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_crash == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_x = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_a_x == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_rc = __Pyx_PyInt_As_int(values[6]); if (unlikely((__pyx_v_a_rc == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 309; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("mincost_relax4", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 308; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.mincost_relax4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_36mincost_relax4(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_v_rhs, __pyx_v_a_low, __pyx_v_a_cap, __pyx_v_a_cost, __pyx_v_crash, __pyx_v_a_x, __pyx_v_a_rc);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_36mincost_relax4(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_rhs, int __pyx_v_a_low, int __pyx_v_a_cap, int __pyx_v_a_cost, int __pyx_v_crash, int __pyx_v_a_x, int __pyx_v_a_rc) {
  double __pyx_v_sol;
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("mincost_relax4", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":312
 *         """Find minimum-cost flow with Bertsekas-Tseng relaxation method"""
 *         cdef double sol
 *         retcode = glpk.mincost_relax4(self._graph, v_rhs, a_low, a_cap, a_cost,             # <<<<<<<<<<<<<<
 *                                       crash, &sol, a_x, a_rc)
 *         if retcode is not 0:
 */
  __pyx_v_retcode = glp_mincost_relax4(__pyx_v_self->_graph, __pyx_v_v_rhs, __pyx_v_a_low, __pyx_v_a_cap, __pyx_v_a_cost, __pyx_v_crash, (&__pyx_v_sol), __pyx_v_a_x, __pyx_v_a_rc);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":314
 *         retcode = glpk.mincost_relax4(self._graph, v_rhs, a_low, a_cap, a_cost,
 *                                       crash, &sol, a_x, a_rc)
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise ioretcode2error[retcode]
 *         return sol
 */
  __pyx_t_1 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":315
 *                                       crash, &sol, a_x, a_rc)
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]             # <<<<<<<<<<<<<<
 *         return sol
 * 
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_ioretcode2error, __pyx_v_retcode, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 315; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":316
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]
 *         return sol             # <<<<<<<<<<<<<<
 * 
 *     def maxflow_lp(self, bint copy_names, source, sink, int a_cap):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_sol); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 316; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":308
 *         return sol
 * 
 *     def mincost_relax4(self, int v_rhs, int a_low, int a_cap, int a_cost,             # <<<<<<<<<<<<<<
 *                        int crash, int a_x, int a_rc):
 *         """Find minimum-cost flow with Bertsekas-Tseng relaxation method"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Graph.mincost_relax4", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":318
 *         return sol
 * 
 *     def maxflow_lp(self, bint copy_names, source, sink, int a_cap):             # <<<<<<<<<<<<<<
 *         """Convert maximum flow problem to LP"""
 *         source = self.find_vertex_as_needed(source)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_39maxflow_lp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_38maxflow_lp[] = "Graph.maxflow_lp(self, bool copy_names, source, sink, int a_cap)\nConvert maximum flow problem to LP";
static PyObject *__pyx_pw_8ecyglpki_5Graph_39maxflow_lp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_copy_names;
  PyObject *__pyx_v_source = 0;
  PyObject *__pyx_v_sink = 0;
  int __pyx_v_a_cap;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maxflow_lp (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_copy_names,&__pyx_n_s_source,&__pyx_n_s_sink,&__pyx_n_s_a_cap,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_copy_names)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_source)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("maxflow_lp", 1, 4, 4, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sink)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("maxflow_lp", 1, 4, 4, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("maxflow_lp", 1, 4, 4, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "maxflow_lp") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_copy_names = __Pyx_PyObject_IsTrue(values[0]); if (unlikely((__pyx_v_copy_names == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_source = values[1];
    __pyx_v_sink = values[2];
    __pyx_v_a_cap = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_a_cap == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maxflow_lp", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 318; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.maxflow_lp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_38maxflow_lp(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_copy_names, __pyx_v_source, __pyx_v_sink, __pyx_v_a_cap);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_38maxflow_lp(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_copy_names, PyObject *__pyx_v_source, PyObject *__pyx_v_sink, int __pyx_v_a_cap) {
  struct __pyx_obj_8ecyglpki_Problem *__pyx_v_problem = NULL;
  struct glp_prob *__pyx_v_prob;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maxflow_lp", 0);
  __Pyx_INCREF(__pyx_v_source);
  __Pyx_INCREF(__pyx_v_sink);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":320
 *     def maxflow_lp(self, bint copy_names, source, sink, int a_cap):
 *         """Convert maximum flow problem to LP"""
 *         source = self.find_vertex_as_needed(source)             # <<<<<<<<<<<<<<
 *         sink = self.find_vertex_as_needed(sink)
 *         problem = Problem()
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_vertex_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_source);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_source);
  __Pyx_GIVEREF(__pyx_v_source);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 320; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":321
 *         """Convert maximum flow problem to LP"""
 *         source = self.find_vertex_as_needed(source)
 *         sink = self.find_vertex_as_needed(sink)             # <<<<<<<<<<<<<<
 *         problem = Problem()
 *         cdef glpk.Prob* prob = <glpk.Prob*>PyCapsule_GetPointer(
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_vertex_as_needed); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_sink);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_sink);
  __Pyx_GIVEREF(__pyx_v_sink);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 321; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_sink, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":322
 *         source = self.find_vertex_as_needed(source)
 *         sink = self.find_vertex_as_needed(sink)
 *         problem = Problem()             # <<<<<<<<<<<<<<
 *         cdef glpk.Prob* prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Problem)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 322; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_problem = ((struct __pyx_obj_8ecyglpki_Problem *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":324
 *         problem = Problem()
 *         cdef glpk.Prob* prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         glpk.maxflow_lp(prob, self._graph, copy_names, source, sink, a_cap)
 *         return problem
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_problem), __pyx_n_s_prob_ptr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 324; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":323
 *         sink = self.find_vertex_as_needed(sink)
 *         problem = Problem()
 *         cdef glpk.Prob* prob = <glpk.Prob*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     problem._prob_ptr(), NULL)
 *         glpk.maxflow_lp(prob, self._graph, copy_names, source, sink, a_cap)
 */
  __pyx_t_4 = PyCapsule_GetPointer(__pyx_t_2, NULL); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 323; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_prob = ((struct glp_prob *)__pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":325
 *         cdef glpk.Prob* prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 *         glpk.maxflow_lp(prob, self._graph, copy_names, source, sink, a_cap)             # <<<<<<<<<<<<<<
 *         return problem
 * 
 */
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_source); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_6 = __Pyx_PyInt_As_int(__pyx_v_sink); if (unlikely((__pyx_t_6 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 325; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  glp_maxflow_lp(__pyx_v_prob, __pyx_v_self->_graph, __pyx_v_copy_names, __pyx_t_5, __pyx_t_6, __pyx_v_a_cap);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":326
 *                                                     problem._prob_ptr(), NULL)
 *         glpk.maxflow_lp(prob, self._graph, copy_names, source, sink, a_cap)
 *         return problem             # <<<<<<<<<<<<<<
 * 
 *     def maxflow_ffalg(self, source, sink, int a_cap, int a_x, int v_cut):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_problem));
  __pyx_r = ((PyObject *)__pyx_v_problem);
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":318
 *         return sol
 * 
 *     def maxflow_lp(self, bint copy_names, source, sink, int a_cap):             # <<<<<<<<<<<<<<
 *         """Convert maximum flow problem to LP"""
 *         source = self.find_vertex_as_needed(source)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.maxflow_lp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_problem);
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XDECREF(__pyx_v_sink);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":328
 *         return problem
 * 
 *     def maxflow_ffalg(self, source, sink, int a_cap, int a_x, int v_cut):             # <<<<<<<<<<<<<<
 *         """Find maximal flow with Ford-Fulkerson algorithm"""
 *         source = self.find_vertex_as_needed(source)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_41maxflow_ffalg(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_40maxflow_ffalg[] = "Graph.maxflow_ffalg(self, source, sink, int a_cap, int a_x, int v_cut)\nFind maximal flow with Ford-Fulkerson algorithm";
static PyObject *__pyx_pw_8ecyglpki_5Graph_41maxflow_ffalg(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_source = 0;
  PyObject *__pyx_v_sink = 0;
  int __pyx_v_a_cap;
  int __pyx_v_a_x;
  int __pyx_v_v_cut;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("maxflow_ffalg (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,&__pyx_n_s_sink,&__pyx_n_s_a_cap,&__pyx_n_s_a_x,&__pyx_n_s_v_cut,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_source)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sink)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("maxflow_ffalg", 1, 5, 5, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("maxflow_ffalg", 1, 5, 5, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("maxflow_ffalg", 1, 5, 5, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_cut)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("maxflow_ffalg", 1, 5, 5, 4); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "maxflow_ffalg") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_source = values[0];
    __pyx_v_sink = values[1];
    __pyx_v_a_cap = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_a_cap == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_x = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_a_x == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_v_cut = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_v_cut == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("maxflow_ffalg", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 328; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.maxflow_ffalg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_40maxflow_ffalg(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_source, __pyx_v_sink, __pyx_v_a_cap, __pyx_v_a_x, __pyx_v_v_cut);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_40maxflow_ffalg(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_source, PyObject *__pyx_v_sink, int __pyx_v_a_cap, int __pyx_v_a_x, int __pyx_v_v_cut) {
  double __pyx_v_sol;
  CYTHON_UNUSED int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("maxflow_ffalg", 0);
  __Pyx_INCREF(__pyx_v_source);
  __Pyx_INCREF(__pyx_v_sink);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":330
 *     def maxflow_ffalg(self, source, sink, int a_cap, int a_x, int v_cut):
 *         """Find maximal flow with Ford-Fulkerson algorithm"""
 *         source = self.find_vertex_as_needed(source)             # <<<<<<<<<<<<<<
 *         sink = self.find_vertex_as_needed(sink)
 *         cdef double sol
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_vertex_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_source);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_source);
  __Pyx_GIVEREF(__pyx_v_source);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 330; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":331
 *         """Find maximal flow with Ford-Fulkerson algorithm"""
 *         source = self.find_vertex_as_needed(source)
 *         sink = self.find_vertex_as_needed(sink)             # <<<<<<<<<<<<<<
 *         cdef double sol
 *         retcode = glpk.maxflow_ffalg(self._graph, source, sink,
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_vertex_as_needed); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_sink);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_sink);
  __Pyx_GIVEREF(__pyx_v_sink);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 331; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_sink, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":333
 *         sink = self.find_vertex_as_needed(sink)
 *         cdef double sol
 *         retcode = glpk.maxflow_ffalg(self._graph, source, sink,             # <<<<<<<<<<<<<<
 *                                      a_cap, &sol, a_x, v_cut)
 *         return sol
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_source); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_sink); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 333; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":334
 *         cdef double sol
 *         retcode = glpk.maxflow_ffalg(self._graph, source, sink,
 *                                      a_cap, &sol, a_x, v_cut)             # <<<<<<<<<<<<<<
 *         return sol
 * 
 */
  __pyx_v_retcode = glp_maxflow_ffalg(__pyx_v_self->_graph, __pyx_t_4, __pyx_t_5, __pyx_v_a_cap, (&__pyx_v_sol), __pyx_v_a_x, __pyx_v_v_cut);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":335
 *         retcode = glpk.maxflow_ffalg(self._graph, source, sink,
 *                                      a_cap, &sol, a_x, v_cut)
 *         return sol             # <<<<<<<<<<<<<<
 * 
 *     def check_asnprob(self, int v_set):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_sol); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 335; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":328
 *         return problem
 * 
 *     def maxflow_ffalg(self, source, sink, int a_cap, int a_x, int v_cut):             # <<<<<<<<<<<<<<
 *         """Find maximal flow with Ford-Fulkerson algorithm"""
 *         source = self.find_vertex_as_needed(source)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.maxflow_ffalg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XDECREF(__pyx_v_sink);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":337
 *         return sol
 * 
 *     def check_asnprob(self, int v_set):             # <<<<<<<<<<<<<<
 *         """Check correctness of assignment problem data"""
 *         retval = glpk.check_asnprob(self._graph, v_set)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_43check_asnprob(PyObject *__pyx_v_self, PyObject *__pyx_arg_v_set); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_42check_asnprob[] = "Graph.check_asnprob(self, int v_set)\nCheck correctness of assignment problem data";
static PyObject *__pyx_pw_8ecyglpki_5Graph_43check_asnprob(PyObject *__pyx_v_self, PyObject *__pyx_arg_v_set) {
  int __pyx_v_v_set;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("check_asnprob (wrapper)", 0);
  assert(__pyx_arg_v_set); {
    __pyx_v_v_set = __Pyx_PyInt_As_int(__pyx_arg_v_set); if (unlikely((__pyx_v_v_set == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 337; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.check_asnprob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_42check_asnprob(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), ((int)__pyx_v_v_set));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_42check_asnprob(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_set) {
  PyObject *__pyx_v_retval = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("check_asnprob", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":339
 *     def check_asnprob(self, int v_set):
 *         """Check correctness of assignment problem data"""
 *         retval = glpk.check_asnprob(self._graph, v_set)             # <<<<<<<<<<<<<<
 *         if retval is not 0:
 *             raise ValueError("Assignment problem data is incorrect, code "
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_check_asnprob(__pyx_v_self->_graph, __pyx_v_v_set)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 339; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_retval = __pyx_t_1;
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":340
 *         """Check correctness of assignment problem data"""
 *         retval = glpk.check_asnprob(self._graph, v_set)
 *         if retval is not 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("Assignment problem data is incorrect, code "
 *                              + retval + '.')
 */
  __pyx_t_2 = (__pyx_v_retval != __pyx_int_0);
  __pyx_t_3 = (__pyx_t_2 != 0);
  if (__pyx_t_3) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":342
 *         if retval is not 0:
 *             raise ValueError("Assignment problem data is incorrect, code "
 *                              + retval + '.')             # <<<<<<<<<<<<<<
 * 
 *     def asnprob_lp(self, str asnform, bint copy_names, int v_set, int a_cost):
 */
    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_Assignment_problem_data_is_incor, __pyx_v_retval); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_4 = PyNumber_Add(__pyx_t_1, __pyx_kp_s__4); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 342; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":341
 *         retval = glpk.check_asnprob(self._graph, v_set)
 *         if retval is not 0:
 *             raise ValueError("Assignment problem data is incorrect, code "             # <<<<<<<<<<<<<<
 *                              + retval + '.')
 * 
 */
    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_4);
    __Pyx_GIVEREF(__pyx_t_4);
    __pyx_t_4 = 0;
    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_1, NULL); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_Raise(__pyx_t_4, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 341; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":337
 *         return sol
 * 
 *     def check_asnprob(self, int v_set):             # <<<<<<<<<<<<<<
 *         """Check correctness of assignment problem data"""
 *         retval = glpk.check_asnprob(self._graph, v_set)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Graph.check_asnprob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_retval);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":344
 *                              + retval + '.')
 * 
 *     def asnprob_lp(self, str asnform, bint copy_names, int v_set, int a_cost):             # <<<<<<<<<<<<<<
 *         """Convert assignment problem to LP"""
 *         problem = Problem()
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_45asnprob_lp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_44asnprob_lp[] = "Graph.asnprob_lp(self, str asnform, bool copy_names, int v_set, int a_cost)\nConvert assignment problem to LP";
static PyObject *__pyx_pw_8ecyglpki_5Graph_45asnprob_lp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_asnform = 0;
  int __pyx_v_copy_names;
  int __pyx_v_v_set;
  int __pyx_v_a_cost;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("asnprob_lp (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asnform,&__pyx_n_s_copy_names,&__pyx_n_s_v_set,&__pyx_n_s_a_cost,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_asnform)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_copy_names)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("asnprob_lp", 1, 4, 4, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_set)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("asnprob_lp", 1, 4, 4, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cost)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("asnprob_lp", 1, 4, 4, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "asnprob_lp") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_asnform = ((PyObject*)values[0]);
    __pyx_v_copy_names = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_copy_names == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_v_set = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_v_set == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cost = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_a_cost == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("asnprob_lp", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.asnprob_lp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_asnform), (&PyString_Type), 1, "asnform", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 344; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_44asnprob_lp(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_asnform, __pyx_v_copy_names, __pyx_v_v_set, __pyx_v_a_cost);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_44asnprob_lp(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_asnform, int __pyx_v_copy_names, int __pyx_v_v_set, int __pyx_v_a_cost) {
  struct __pyx_obj_8ecyglpki_Problem *__pyx_v_problem = NULL;
  struct glp_prob *__pyx_v_prob;
  PyObject *__pyx_v_retval = NULL;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  void *__pyx_t_3;
  int __pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asnprob_lp", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":346
 *     def asnprob_lp(self, str asnform, bint copy_names, int v_set, int a_cost):
 *         """Convert assignment problem to LP"""
 *         problem = Problem()             # <<<<<<<<<<<<<<
 *         cdef glpk.Prob* prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)((PyObject*)__pyx_ptype_8ecyglpki_Problem)), __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 346; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_v_problem = ((struct __pyx_obj_8ecyglpki_Problem *)__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":348
 *         problem = Problem()
 *         cdef glpk.Prob* prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         retval = glpk.asnprob_lp(prob, str2asnform[asnform], self._graph,
 *                                  copy_names, v_set, a_cost)
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_problem), __pyx_n_s_prob_ptr); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 348; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":347
 *         """Convert assignment problem to LP"""
 *         problem = Problem()
 *         cdef glpk.Prob* prob = <glpk.Prob*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     problem._prob_ptr(), NULL)
 *         retval = glpk.asnprob_lp(prob, str2asnform[asnform], self._graph,
 */
  __pyx_t_3 = PyCapsule_GetPointer(__pyx_t_2, NULL); if (unlikely(__pyx_t_3 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 347; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __pyx_v_prob = ((struct glp_prob *)__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":349
 *         cdef glpk.Prob* prob = <glpk.Prob*>PyCapsule_GetPointer(
 *                                                     problem._prob_ptr(), NULL)
 *         retval = glpk.asnprob_lp(prob, str2asnform[asnform], self._graph,             # <<<<<<<<<<<<<<
 *                                  copy_names, v_set, a_cost)
 *         if retval is not 0:
 */
  __pyx_t_2 = PyObject_GetItem(__pyx_v_8ecyglpki_str2asnform, __pyx_v_asnform); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_t_2); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":350
 *                                                     problem._prob_ptr(), NULL)
 *         retval = glpk.asnprob_lp(prob, str2asnform[asnform], self._graph,
 *                                  copy_names, v_set, a_cost)             # <<<<<<<<<<<<<<
 *         if retval is not 0:
 *             raise ValueError("Assignment problem data is incorrect, code "
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(glp_asnprob_lp(__pyx_v_prob, __pyx_t_4, __pyx_v_self->_graph, __pyx_v_copy_names, __pyx_v_v_set, __pyx_v_a_cost)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 349; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_v_retval = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":351
 *         retval = glpk.asnprob_lp(prob, str2asnform[asnform], self._graph,
 *                                  copy_names, v_set, a_cost)
 *         if retval is not 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("Assignment problem data is incorrect, code "
 *                              + retval + '.')
 */
  __pyx_t_5 = (__pyx_v_retval != __pyx_int_0);
  __pyx_t_6 = (__pyx_t_5 != 0);
  if (__pyx_t_6) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":353
 *         if retval is not 0:
 *             raise ValueError("Assignment problem data is incorrect, code "
 *                              + retval + '.')             # <<<<<<<<<<<<<<
 *         return problem
 * 
 */
    __pyx_t_2 = PyNumber_Add(__pyx_kp_s_Assignment_problem_data_is_incor, __pyx_v_retval); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_1 = PyNumber_Add(__pyx_t_2, __pyx_kp_s__4); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 353; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":352
 *                                  copy_names, v_set, a_cost)
 *         if retval is not 0:
 *             raise ValueError("Assignment problem data is incorrect, code "             # <<<<<<<<<<<<<<
 *                              + retval + '.')
 *         return problem
 */
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 352; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":354
 *             raise ValueError("Assignment problem data is incorrect, code "
 *                              + retval + '.')
 *         return problem             # <<<<<<<<<<<<<<
 * 
 *     def asnprob_okalg(self, str asnform, int v_set, int a_cost, int a_x):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(((PyObject *)__pyx_v_problem));
  __pyx_r = ((PyObject *)__pyx_v_problem);
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":344
 *                              + retval + '.')
 * 
 *     def asnprob_lp(self, str asnform, bint copy_names, int v_set, int a_cost):             # <<<<<<<<<<<<<<
 *         """Convert assignment problem to LP"""
 *         problem = Problem()
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Graph.asnprob_lp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF((PyObject *)__pyx_v_problem);
  __Pyx_XDECREF(__pyx_v_retval);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":356
 *         return problem
 * 
 *     def asnprob_okalg(self, str asnform, int v_set, int a_cost, int a_x):             # <<<<<<<<<<<<<<
 *         """Solve assignment problem with out-of-kilter algorithm"""
 *         cdef double sol
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_47asnprob_okalg(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_46asnprob_okalg[] = "Graph.asnprob_okalg(self, str asnform, int v_set, int a_cost, int a_x)\nSolve assignment problem with out-of-kilter algorithm";
static PyObject *__pyx_pw_8ecyglpki_5Graph_47asnprob_okalg(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_asnform = 0;
  int __pyx_v_v_set;
  int __pyx_v_a_cost;
  int __pyx_v_a_x;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("asnprob_okalg (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_asnform,&__pyx_n_s_v_set,&__pyx_n_s_a_cost,&__pyx_n_s_a_x,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_asnform)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_set)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("asnprob_okalg", 1, 4, 4, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cost)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("asnprob_okalg", 1, 4, 4, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("asnprob_okalg", 1, 4, 4, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "asnprob_okalg") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_asnform = ((PyObject*)values[0]);
    __pyx_v_v_set = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_v_set == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cost = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_a_cost == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_x = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_a_x == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("asnprob_okalg", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.asnprob_okalg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_asnform), (&PyString_Type), 1, "asnform", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 356; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_46asnprob_okalg(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_asnform, __pyx_v_v_set, __pyx_v_a_cost, __pyx_v_a_x);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_46asnprob_okalg(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_asnform, int __pyx_v_v_set, int __pyx_v_a_cost, int __pyx_v_a_x) {
  double __pyx_v_sol;
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_t_2;
  int __pyx_t_3;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asnprob_okalg", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":359
 *         """Solve assignment problem with out-of-kilter algorithm"""
 *         cdef double sol
 *         retcode = glpk.asnprob_okalg(str2asnform[asnform], self._graph,             # <<<<<<<<<<<<<<
 *                                      v_set, a_cost, &sol, a_x)
 *         if retcode is not 0:
 */
  __pyx_t_1 = PyObject_GetItem(__pyx_v_8ecyglpki_str2asnform, __pyx_v_asnform); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_As_int(__pyx_t_1); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 359; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":360
 *         cdef double sol
 *         retcode = glpk.asnprob_okalg(str2asnform[asnform], self._graph,
 *                                      v_set, a_cost, &sol, a_x)             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]
 */
  __pyx_v_retcode = glp_asnprob_okalg(__pyx_t_2, __pyx_v_self->_graph, __pyx_v_v_set, __pyx_v_a_cost, (&__pyx_v_sol), __pyx_v_a_x);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":361
 *         retcode = glpk.asnprob_okalg(str2asnform[asnform], self._graph,
 *                                      v_set, a_cost, &sol, a_x)
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise ioretcode2error[retcode]
 *         return sol
 */
  __pyx_t_3 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_3) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":362
 *                                      v_set, a_cost, &sol, a_x)
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]             # <<<<<<<<<<<<<<
 *         return sol
 * 
 */
    __pyx_t_1 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_ioretcode2error, __pyx_v_retcode, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 362; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":363
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]
 *         return sol             # <<<<<<<<<<<<<<
 * 
 *     def asnprob_hall(self, int v_set, int a_x):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(__pyx_v_sol); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 363; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":356
 *         return problem
 * 
 *     def asnprob_okalg(self, str asnform, int v_set, int a_cost, int a_x):             # <<<<<<<<<<<<<<
 *         """Solve assignment problem with out-of-kilter algorithm"""
 *         cdef double sol
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Graph.asnprob_okalg", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":365
 *         return sol
 * 
 *     def asnprob_hall(self, int v_set, int a_x):             # <<<<<<<<<<<<<<
 *         """Find bipartite matching of maximum cardinality"""
 *         cardinality = glpk.asnprob_hall(self._graph, v_set, a_x)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_49asnprob_hall(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_48asnprob_hall[] = "Graph.asnprob_hall(self, int v_set, int a_x)\nFind bipartite matching of maximum cardinality";
static PyObject *__pyx_pw_8ecyglpki_5Graph_49asnprob_hall(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_v_set;
  int __pyx_v_a_x;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("asnprob_hall (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_v_set,&__pyx_n_s_a_x,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_set)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_x)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("asnprob_hall", 1, 2, 2, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "asnprob_hall") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_v_set = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_v_set == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_x = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_a_x == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("asnprob_hall", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 365; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.asnprob_hall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_48asnprob_hall(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_v_set, __pyx_v_a_x);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_48asnprob_hall(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_set, int __pyx_v_a_x) {
  int __pyx_v_cardinality;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("asnprob_hall", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":367
 *     def asnprob_hall(self, int v_set, int a_x):
 *         """Find bipartite matching of maximum cardinality"""
 *         cardinality = glpk.asnprob_hall(self._graph, v_set, a_x)             # <<<<<<<<<<<<<<
 *         if cardinality < 0:
 *             raise ValueError("The specified graph is incorrect")
 */
  __pyx_v_cardinality = glp_asnprob_hall(__pyx_v_self->_graph, __pyx_v_v_set, __pyx_v_a_x);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":368
 *         """Find bipartite matching of maximum cardinality"""
 *         cardinality = glpk.asnprob_hall(self._graph, v_set, a_x)
 *         if cardinality < 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("The specified graph is incorrect")
 *         return cardinality
 */
  __pyx_t_1 = ((__pyx_v_cardinality < 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":369
 *         cardinality = glpk.asnprob_hall(self._graph, v_set, a_x)
 *         if cardinality < 0:
 *             raise ValueError("The specified graph is incorrect")             # <<<<<<<<<<<<<<
 *         return cardinality
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":370
 *         if cardinality < 0:
 *             raise ValueError("The specified graph is incorrect")
 *         return cardinality             # <<<<<<<<<<<<<<
 * 
 *     def cpp(self, int v_t, int v_es, int v_ls):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_cardinality); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 370; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":365
 *         return sol
 * 
 *     def asnprob_hall(self, int v_set, int a_x):             # <<<<<<<<<<<<<<
 *         """Find bipartite matching of maximum cardinality"""
 *         cardinality = glpk.asnprob_hall(self._graph, v_set, a_x)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Graph.asnprob_hall", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":372
 *         return cardinality
 * 
 *     def cpp(self, int v_t, int v_es, int v_ls):             # <<<<<<<<<<<<<<
 *         """Solve critical path problem"""
 *         return glpk.cpp(self._graph, v_t, v_es, v_ls)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_51cpp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_50cpp[] = "Graph.cpp(self, int v_t, int v_es, int v_ls)\nSolve critical path problem";
static PyObject *__pyx_pw_8ecyglpki_5Graph_51cpp(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_v_t;
  int __pyx_v_v_es;
  int __pyx_v_v_ls;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("cpp (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_v_t,&__pyx_n_s_v_es,&__pyx_n_s_v_ls,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_t)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_es)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpp", 1, 3, 3, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_ls)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("cpp", 1, 3, 3, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cpp") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_v_t = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_v_t == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_v_es = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_v_es == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_v_ls = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_v_ls == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("cpp", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 372; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.cpp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_50cpp(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_v_t, __pyx_v_v_es, __pyx_v_v_ls);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_50cpp(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_t, int __pyx_v_v_es, int __pyx_v_v_ls) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("cpp", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":374
 *     def cpp(self, int v_t, int v_es, int v_ls):
 *         """Solve critical path problem"""
 *         return glpk.cpp(self._graph, v_t, v_es, v_ls)             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = PyFloat_FromDouble(glp_cpp(__pyx_v_self->_graph, __pyx_v_v_t, __pyx_v_v_es, __pyx_v_v_ls)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 374; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":372
 *         return cardinality
 * 
 *     def cpp(self, int v_t, int v_es, int v_ls):             # <<<<<<<<<<<<<<
 *         """Solve critical path problem"""
 *         return glpk.cpp(self._graph, v_t, v_es, v_ls)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Graph.cpp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":377
 * 
 *     @classmethod
 *     def read_mincost(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                      int v_rhs, int a_low, int a_cap, int a_cost, str fname):
 *         """Read min-cost flow problem data in DIMACS format"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_53read_mincost(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_52read_mincost[] = "Graph.read_mincost(type cls, int vertex_data_size, int arc_data_size, int v_rhs, int a_low, int a_cap, int a_cost, str fname)\nRead min-cost flow problem data in DIMACS format";
static PyObject *__pyx_pw_8ecyglpki_5Graph_53read_mincost(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_vertex_data_size;
  int __pyx_v_arc_data_size;
  int __pyx_v_v_rhs;
  int __pyx_v_a_low;
  int __pyx_v_a_cap;
  int __pyx_v_a_cost;
  PyObject *__pyx_v_fname = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_mincost (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vertex_data_size,&__pyx_n_s_arc_data_size,&__pyx_n_s_v_rhs,&__pyx_n_s_a_low,&__pyx_n_s_a_cap,&__pyx_n_s_a_cost,&__pyx_n_s_fname,0};
    PyObject* values[7] = {0,0,0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  7: values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
        case  6: values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertex_data_size)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_arc_data_size)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_mincost", 1, 7, 7, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_rhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_mincost", 1, 7, 7, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_low)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_mincost", 1, 7, 7, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_mincost", 1, 7, 7, 4); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  5:
        if (likely((values[5] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cost)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_mincost", 1, 7, 7, 5); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  6:
        if (likely((values[6] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_mincost", 1, 7, 7, 6); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_mincost") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 7) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
      values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
      values[6] = PyTuple_GET_ITEM(__pyx_args, 6);
    }
    __pyx_v_vertex_data_size = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_vertex_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_arc_data_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_arc_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_v_rhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_v_rhs == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_low = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_a_low == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cap = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_a_cap == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cost = __Pyx_PyInt_As_int(values[5]); if (unlikely((__pyx_v_a_cost == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_fname = ((PyObject*)values[6]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("read_mincost", 1, 7, 7, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.read_mincost", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 378; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_52read_mincost(((PyObject*)__pyx_v_cls), __pyx_v_vertex_data_size, __pyx_v_arc_data_size, __pyx_v_v_rhs, __pyx_v_a_low, __pyx_v_a_cap, __pyx_v_a_cost, __pyx_v_fname);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_52read_mincost(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_v_rhs, int __pyx_v_a_low, int __pyx_v_a_cap, int __pyx_v_a_cost, PyObject *__pyx_v_fname) {
  PyObject *__pyx_v_graph = NULL;
  struct glp_graph *__pyx_v__graph;
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  char *__pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read_mincost", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":380
 *                      int v_rhs, int a_low, int a_cap, int a_cost, str fname):
 *         """Read min-cost flow problem data in DIMACS format"""
 *         graph = cls(vertex_data_size, arc_data_size)             # <<<<<<<<<<<<<<
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_vertex_data_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_arc_data_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 380; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_graph = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":382
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         retcode = glpk.read_mincost(_graph, v_rhs, a_low, a_cap, a_cost,
 *                                     str2chars(fname))
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph_ptr_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 382; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":381
 *         """Read min-cost flow problem data in DIMACS format"""
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     graph._graph_ptr(), NULL)
 *         retcode = glpk.read_mincost(_graph, v_rhs, a_low, a_cap, a_cost,
 */
  __pyx_t_4 = PyCapsule_GetPointer(__pyx_t_3, NULL); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 381; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v__graph = ((struct glp_graph *)__pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":384
 *                                                     graph._graph_ptr(), NULL)
 *         retcode = glpk.read_mincost(_graph, v_rhs, a_low, a_cap, a_cost,
 *                                     str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading min-cost flow problem DIMACS " +
 */
  __pyx_t_5 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 384; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":383
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)
 *         retcode = glpk.read_mincost(_graph, v_rhs, a_low, a_cap, a_cost,             # <<<<<<<<<<<<<<
 *                                     str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_v_retcode = glp_read_mincost(__pyx_v__graph, __pyx_v_v_rhs, __pyx_v_a_low, __pyx_v_a_cap, __pyx_v_a_cost, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":385
 *         retcode = glpk.read_mincost(_graph, v_rhs, a_low, a_cap, a_cost,
 *                                     str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error reading min-cost flow problem DIMACS " +
 *                                "file")
 */
  __pyx_t_6 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_6) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":386
 *                                     str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading min-cost flow problem DIMACS " +             # <<<<<<<<<<<<<<
 *                                "file")
 *         return graph
 */
    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Error_reading_min_cost_flow_prob, __pyx_n_s_file); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 386; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":388
 *             raise RuntimeError("Error reading min-cost flow problem DIMACS " +
 *                                "file")
 *         return graph             # <<<<<<<<<<<<<<
 * 
 *     def write_mincost(self, int v_rhs, int a_low, int a_cap, int a_cost,
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_graph);
  __pyx_r = __pyx_v_graph;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":377
 * 
 *     @classmethod
 *     def read_mincost(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                      int v_rhs, int a_low, int a_cap, int a_cost, str fname):
 *         """Read min-cost flow problem data in DIMACS format"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.read_mincost", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_graph);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":390
 *         return graph
 * 
 *     def write_mincost(self, int v_rhs, int a_low, int a_cap, int a_cost,             # <<<<<<<<<<<<<<
 *                       str fname):
 *         """Write min-cost flow problem data in DIMACS format"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_55write_mincost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_54write_mincost[] = "Graph.write_mincost(self, int v_rhs, int a_low, int a_cap, int a_cost, str fname)\nWrite min-cost flow problem data in DIMACS format";
static PyObject *__pyx_pw_8ecyglpki_5Graph_55write_mincost(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_v_rhs;
  int __pyx_v_a_low;
  int __pyx_v_a_cap;
  int __pyx_v_a_cost;
  PyObject *__pyx_v_fname = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_mincost (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_v_rhs,&__pyx_n_s_a_low,&__pyx_n_s_a_cap,&__pyx_n_s_a_cost,&__pyx_n_s_fname,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_rhs)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_low)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("write_mincost", 1, 5, 5, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("write_mincost", 1, 5, 5, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cost)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("write_mincost", 1, 5, 5, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("write_mincost", 1, 5, 5, 4); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_mincost") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_v_rhs = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_v_rhs == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_low = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_a_low == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cap = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_a_cap == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cost = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_a_cost == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_fname = ((PyObject*)values[4]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("write_mincost", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 390; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.write_mincost", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 391; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_54write_mincost(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_v_rhs, __pyx_v_a_low, __pyx_v_a_cap, __pyx_v_a_cost, __pyx_v_fname);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_54write_mincost(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_rhs, int __pyx_v_a_low, int __pyx_v_a_cap, int __pyx_v_a_cost, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write_mincost", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":394
 *         """Write min-cost flow problem data in DIMACS format"""
 *         retcode = glpk.write_mincost(self._graph, v_rhs, a_low, a_cap, a_cost,
 *                                      str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing min-cost flow problem DIMACS " +
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 394; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":393
 *                       str fname):
 *         """Write min-cost flow problem data in DIMACS format"""
 *         retcode = glpk.write_mincost(self._graph, v_rhs, a_low, a_cap, a_cost,             # <<<<<<<<<<<<<<
 *                                      str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_v_retcode = glp_write_mincost(__pyx_v_self->_graph, __pyx_v_v_rhs, __pyx_v_a_low, __pyx_v_a_cap, __pyx_v_a_cost, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":395
 *         retcode = glpk.write_mincost(self._graph, v_rhs, a_low, a_cap, a_cost,
 *                                      str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing min-cost flow problem DIMACS " +
 *                                "file")
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":396
 *                                      str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing min-cost flow problem DIMACS " +             # <<<<<<<<<<<<<<
 *                                "file")
 * 
 */
    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Error_writing_min_cost_flow_prob, __pyx_n_s_file); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 396; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":390
 *         return graph
 * 
 *     def write_mincost(self, int v_rhs, int a_low, int a_cap, int a_cost,             # <<<<<<<<<<<<<<
 *                       str fname):
 *         """Write min-cost flow problem data in DIMACS format"""
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Graph.write_mincost", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":400
 * 
 *     @classmethod
 *     def read_maxflow(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                      int a_cap, str fname):
 *         """Read maximum flow problem data in DIMACS format"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_57read_maxflow(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_56read_maxflow[] = "Graph.read_maxflow(type cls, int vertex_data_size, int arc_data_size, int a_cap, str fname)\nRead maximum flow problem data in DIMACS format";
static PyObject *__pyx_pw_8ecyglpki_5Graph_57read_maxflow(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_vertex_data_size;
  int __pyx_v_arc_data_size;
  int __pyx_v_a_cap;
  PyObject *__pyx_v_fname = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_maxflow (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vertex_data_size,&__pyx_n_s_arc_data_size,&__pyx_n_s_a_cap,&__pyx_n_s_fname,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertex_data_size)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_arc_data_size)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_maxflow", 1, 4, 4, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_maxflow", 1, 4, 4, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_maxflow", 1, 4, 4, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_maxflow") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_vertex_data_size = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_vertex_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_arc_data_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_arc_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cap = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_a_cap == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_fname = ((PyObject*)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("read_maxflow", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.read_maxflow", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 401; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_56read_maxflow(((PyObject*)__pyx_v_cls), __pyx_v_vertex_data_size, __pyx_v_arc_data_size, __pyx_v_a_cap, __pyx_v_fname);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_56read_maxflow(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_a_cap, PyObject *__pyx_v_fname) {
  PyObject *__pyx_v_graph = NULL;
  struct glp_graph *__pyx_v__graph;
  int __pyx_v_source;
  int __pyx_v_sink;
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  char *__pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read_maxflow", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":403
 *                      int a_cap, str fname):
 *         """Read maximum flow problem data in DIMACS format"""
 *         graph = cls(vertex_data_size, arc_data_size)             # <<<<<<<<<<<<<<
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_vertex_data_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_arc_data_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 403; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_graph = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":405
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         cdef int source
 *         cdef int sink
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph_ptr_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":404
 *         """Read maximum flow problem data in DIMACS format"""
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     graph._graph_ptr(), NULL)
 *         cdef int source
 */
  __pyx_t_4 = PyCapsule_GetPointer(__pyx_t_3, NULL); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 404; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v__graph = ((struct glp_graph *)__pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":409
 *         cdef int sink
 *         retcode = glpk.read_maxflow(_graph, &source, &sink, a_cap,
 *                                     str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading maximum flow problem DIMACS " +
 */
  __pyx_t_5 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 409; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":408
 *         cdef int source
 *         cdef int sink
 *         retcode = glpk.read_maxflow(_graph, &source, &sink, a_cap,             # <<<<<<<<<<<<<<
 *                                     str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_v_retcode = glp_read_maxflow(__pyx_v__graph, (&__pyx_v_source), (&__pyx_v_sink), __pyx_v_a_cap, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":410
 *         retcode = glpk.read_maxflow(_graph, &source, &sink, a_cap,
 *                                     str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error reading maximum flow problem DIMACS " +
 *                                "file")
 */
  __pyx_t_6 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_6) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":411
 *                                     str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading maximum flow problem DIMACS " +             # <<<<<<<<<<<<<<
 *                                "file")
 *         return (graph, source, sink)
 */
    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Error_reading_maximum_flow_probl, __pyx_n_s_file); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 411; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":413
 *             raise RuntimeError("Error reading maximum flow problem DIMACS " +
 *                                "file")
 *         return (graph, source, sink)             # <<<<<<<<<<<<<<
 * 
 *     def write_maxflow(self, source, sink, int a_cap, str fname):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_source); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_sink); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 413; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_INCREF(__pyx_v_graph);
  PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_graph);
  __Pyx_GIVEREF(__pyx_v_graph);
  PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":400
 * 
 *     @classmethod
 *     def read_maxflow(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                      int a_cap, str fname):
 *         """Read maximum flow problem data in DIMACS format"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.read_maxflow", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_graph);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":415
 *         return (graph, source, sink)
 * 
 *     def write_maxflow(self, source, sink, int a_cap, str fname):             # <<<<<<<<<<<<<<
 *         """Write maximum flow problem data in DIMACS format"""
 *         source = self.find_vertex_as_needed(source)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_59write_maxflow(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_58write_maxflow[] = "Graph.write_maxflow(self, source, sink, int a_cap, str fname)\nWrite maximum flow problem data in DIMACS format";
static PyObject *__pyx_pw_8ecyglpki_5Graph_59write_maxflow(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  PyObject *__pyx_v_source = 0;
  PyObject *__pyx_v_sink = 0;
  int __pyx_v_a_cap;
  PyObject *__pyx_v_fname = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_maxflow (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_source,&__pyx_n_s_sink,&__pyx_n_s_a_cap,&__pyx_n_s_fname,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_source)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_sink)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("write_maxflow", 1, 4, 4, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("write_maxflow", 1, 4, 4, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("write_maxflow", 1, 4, 4, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_maxflow") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_source = values[0];
    __pyx_v_sink = values[1];
    __pyx_v_a_cap = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_a_cap == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_fname = ((PyObject*)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("write_maxflow", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.write_maxflow", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 415; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_58write_maxflow(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_source, __pyx_v_sink, __pyx_v_a_cap, __pyx_v_fname);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_58write_maxflow(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, PyObject *__pyx_v_source, PyObject *__pyx_v_sink, int __pyx_v_a_cap, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_t_4;
  int __pyx_t_5;
  char *__pyx_t_6;
  int __pyx_t_7;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write_maxflow", 0);
  __Pyx_INCREF(__pyx_v_source);
  __Pyx_INCREF(__pyx_v_sink);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":417
 *     def write_maxflow(self, source, sink, int a_cap, str fname):
 *         """Write maximum flow problem data in DIMACS format"""
 *         source = self.find_vertex_as_needed(source)             # <<<<<<<<<<<<<<
 *         sink = self.find_vertex_as_needed(sink)
 *         retcode = glpk.write_maxflow(self._graph, source, sink, a_cap,
 */
  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_vertex_as_needed); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_source);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_source);
  __Pyx_GIVEREF(__pyx_v_source);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 417; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_source, __pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":418
 *         """Write maximum flow problem data in DIMACS format"""
 *         source = self.find_vertex_as_needed(source)
 *         sink = self.find_vertex_as_needed(sink)             # <<<<<<<<<<<<<<
 *         retcode = glpk.write_maxflow(self._graph, source, sink, a_cap,
 *                                      str2chars(fname))
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_find_vertex_as_needed); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_INCREF(__pyx_v_sink);
  PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_sink);
  __Pyx_GIVEREF(__pyx_v_sink);
  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 418; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF_SET(__pyx_v_sink, __pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":419
 *         source = self.find_vertex_as_needed(source)
 *         sink = self.find_vertex_as_needed(sink)
 *         retcode = glpk.write_maxflow(self._graph, source, sink, a_cap,             # <<<<<<<<<<<<<<
 *                                      str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_source); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_sink); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 419; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":420
 *         sink = self.find_vertex_as_needed(sink)
 *         retcode = glpk.write_maxflow(self._graph, source, sink, a_cap,
 *                                      str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing maximum flow problem DIMACS " +
 */
  __pyx_t_6 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_6 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 420; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":419
 *         source = self.find_vertex_as_needed(source)
 *         sink = self.find_vertex_as_needed(sink)
 *         retcode = glpk.write_maxflow(self._graph, source, sink, a_cap,             # <<<<<<<<<<<<<<
 *                                      str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_v_retcode = glp_write_maxflow(__pyx_v_self->_graph, __pyx_t_4, __pyx_t_5, __pyx_v_a_cap, __pyx_t_6);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":421
 *         retcode = glpk.write_maxflow(self._graph, source, sink, a_cap,
 *                                      str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing maximum flow problem DIMACS " +
 *                                "file")
 */
  __pyx_t_7 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_7) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":422
 *                                      str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing maximum flow problem DIMACS " +             # <<<<<<<<<<<<<<
 *                                "file")
 * 
 */
    __pyx_t_1 = PyNumber_Add(__pyx_kp_s_Error_writing_maximum_flow_probl, __pyx_n_s_file); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
    __Pyx_GIVEREF(__pyx_t_1);
    __pyx_t_1 = 0;
    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_1, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 422; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":415
 *         return (graph, source, sink)
 * 
 *     def write_maxflow(self, source, sink, int a_cap, str fname):             # <<<<<<<<<<<<<<
 *         """Write maximum flow problem data in DIMACS format"""
 *         source = self.find_vertex_as_needed(source)
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.write_maxflow", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_source);
  __Pyx_XDECREF(__pyx_v_sink);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":426
 * 
 *     @classmethod
 *     def read_asnprob(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                      int v_set, int a_cost, str fname):
 *         """Read assignment problem data in DIMACS format"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_61read_asnprob(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_60read_asnprob[] = "Graph.read_asnprob(type cls, int vertex_data_size, int arc_data_size, int v_set, int a_cost, str fname)\nRead assignment problem data in DIMACS format";
static PyObject *__pyx_pw_8ecyglpki_5Graph_61read_asnprob(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_vertex_data_size;
  int __pyx_v_arc_data_size;
  int __pyx_v_v_set;
  int __pyx_v_a_cost;
  PyObject *__pyx_v_fname = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_asnprob (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vertex_data_size,&__pyx_n_s_arc_data_size,&__pyx_n_s_v_set,&__pyx_n_s_a_cost,&__pyx_n_s_fname,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertex_data_size)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_arc_data_size)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_asnprob", 1, 5, 5, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_set)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_asnprob", 1, 5, 5, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cost)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_asnprob", 1, 5, 5, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_asnprob", 1, 5, 5, 4); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_asnprob") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_vertex_data_size = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_vertex_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_arc_data_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_arc_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_v_set = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_v_set == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cost = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_a_cost == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_fname = ((PyObject*)values[4]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("read_asnprob", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.read_asnprob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 427; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_60read_asnprob(((PyObject*)__pyx_v_cls), __pyx_v_vertex_data_size, __pyx_v_arc_data_size, __pyx_v_v_set, __pyx_v_a_cost, __pyx_v_fname);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_60read_asnprob(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_v_set, int __pyx_v_a_cost, PyObject *__pyx_v_fname) {
  PyObject *__pyx_v_graph = NULL;
  struct glp_graph *__pyx_v__graph;
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  char *__pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read_asnprob", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":429
 *                      int v_set, int a_cost, str fname):
 *         """Read assignment problem data in DIMACS format"""
 *         graph = cls(vertex_data_size, arc_data_size)             # <<<<<<<<<<<<<<
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_vertex_data_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_arc_data_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 429; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_graph = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":431
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         retcode = glpk.read_asnprob(_graph, v_set, a_cost, str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph_ptr_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 431; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":430
 *         """Read assignment problem data in DIMACS format"""
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     graph._graph_ptr(), NULL)
 *         retcode = glpk.read_asnprob(_graph, v_set, a_cost, str2chars(fname))
 */
  __pyx_t_4 = PyCapsule_GetPointer(__pyx_t_3, NULL); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 430; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v__graph = ((struct glp_graph *)__pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":432
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)
 *         retcode = glpk.read_asnprob(_graph, v_set, a_cost, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error assignment problem DIMACS file")
 */
  __pyx_t_5 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 432; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_read_asnprob(__pyx_v__graph, __pyx_v_v_set, __pyx_v_a_cost, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":433
 *                                                     graph._graph_ptr(), NULL)
 *         retcode = glpk.read_asnprob(_graph, v_set, a_cost, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error assignment problem DIMACS file")
 *         return graph
 */
  __pyx_t_6 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_6) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":434
 *         retcode = glpk.read_asnprob(_graph, v_set, a_cost, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error assignment problem DIMACS file")             # <<<<<<<<<<<<<<
 *         return graph
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__36, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":435
 *         if retcode is not 0:
 *             raise RuntimeError("Error assignment problem DIMACS file")
 *         return graph             # <<<<<<<<<<<<<<
 * 
 *     def write_asnprob(self, int v_set, int a_cost, str fname):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_graph);
  __pyx_r = __pyx_v_graph;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":426
 * 
 *     @classmethod
 *     def read_asnprob(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                      int v_set, int a_cost, str fname):
 *         """Read assignment problem data in DIMACS format"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.read_asnprob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_graph);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":437
 *         return graph
 * 
 *     def write_asnprob(self, int v_set, int a_cost, str fname):             # <<<<<<<<<<<<<<
 *         """Write assignment problem data in DIMACS format"""
 *         retcode = glpk.write_asnprob(self._graph, v_set, a_cost,
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_63write_asnprob(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_62write_asnprob[] = "Graph.write_asnprob(self, int v_set, int a_cost, str fname)\nWrite assignment problem data in DIMACS format";
static PyObject *__pyx_pw_8ecyglpki_5Graph_63write_asnprob(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_v_set;
  int __pyx_v_a_cost;
  PyObject *__pyx_v_fname = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_asnprob (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_v_set,&__pyx_n_s_a_cost,&__pyx_n_s_fname,0};
    PyObject* values[3] = {0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_set)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cost)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("write_asnprob", 1, 3, 3, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("write_asnprob", 1, 3, 3, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_asnprob") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
    }
    __pyx_v_v_set = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_v_set == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cost = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_a_cost == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_fname = ((PyObject*)values[2]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("write_asnprob", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.write_asnprob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 437; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_62write_asnprob(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_v_set, __pyx_v_a_cost, __pyx_v_fname);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_62write_asnprob(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_set, int __pyx_v_a_cost, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write_asnprob", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":440
 *         """Write assignment problem data in DIMACS format"""
 *         retcode = glpk.write_asnprob(self._graph, v_set, a_cost,
 *                                      str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing assignment problem DIMACS file")
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 440; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":439
 *     def write_asnprob(self, int v_set, int a_cost, str fname):
 *         """Write assignment problem data in DIMACS format"""
 *         retcode = glpk.write_asnprob(self._graph, v_set, a_cost,             # <<<<<<<<<<<<<<
 *                                      str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_v_retcode = glp_write_asnprob(__pyx_v_self->_graph, __pyx_v_v_set, __pyx_v_a_cost, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":441
 *         retcode = glpk.write_asnprob(self._graph, v_set, a_cost,
 *                                      str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing assignment problem DIMACS file")
 * 
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":442
 *                                      str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing assignment problem DIMACS file")             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__37, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":437
 *         return graph
 * 
 *     def write_asnprob(self, int v_set, int a_cost, str fname):             # <<<<<<<<<<<<<<
 *         """Write assignment problem data in DIMACS format"""
 *         retcode = glpk.write_asnprob(self._graph, v_set, a_cost,
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.write_asnprob", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":445
 * 
 *     @classmethod
 *     def read_ccdata(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                     int v_wgt, str fname):
 *         """Read graph in DIMACS clique/coloring format"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_65read_ccdata(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_64read_ccdata[] = "Graph.read_ccdata(type cls, int vertex_data_size, int arc_data_size, int v_wgt, str fname)\nRead graph in DIMACS clique/coloring format";
static PyObject *__pyx_pw_8ecyglpki_5Graph_65read_ccdata(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_vertex_data_size;
  int __pyx_v_arc_data_size;
  int __pyx_v_v_wgt;
  PyObject *__pyx_v_fname = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("read_ccdata (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vertex_data_size,&__pyx_n_s_arc_data_size,&__pyx_n_s_v_wgt,&__pyx_n_s_fname,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertex_data_size)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_arc_data_size)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_ccdata", 1, 4, 4, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_wgt)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_ccdata", 1, 4, 4, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("read_ccdata", 1, 4, 4, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "read_ccdata") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_vertex_data_size = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_vertex_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_arc_data_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_arc_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_v_wgt = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_v_wgt == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_fname = ((PyObject*)values[3]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("read_ccdata", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.read_ccdata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 446; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_64read_ccdata(((PyObject*)__pyx_v_cls), __pyx_v_vertex_data_size, __pyx_v_arc_data_size, __pyx_v_v_wgt, __pyx_v_fname);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_64read_ccdata(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_v_wgt, PyObject *__pyx_v_fname) {
  PyObject *__pyx_v_graph = NULL;
  struct glp_graph *__pyx_v__graph;
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  char *__pyx_t_5;
  int __pyx_t_6;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("read_ccdata", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":448
 *                     int v_wgt, str fname):
 *         """Read graph in DIMACS clique/coloring format"""
 *         graph = cls(vertex_data_size, arc_data_size)             # <<<<<<<<<<<<<<
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_vertex_data_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_arc_data_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 448; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_graph = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":450
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         retcode = glpk.read_ccdata(_graph, v_wgt, str2chars(fname))
 *         if retcode is not 0:
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph_ptr_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 450; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":449
 *         """Read graph in DIMACS clique/coloring format"""
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     graph._graph_ptr(), NULL)
 *         retcode = glpk.read_ccdata(_graph, v_wgt, str2chars(fname))
 */
  __pyx_t_4 = PyCapsule_GetPointer(__pyx_t_3, NULL); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 449; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v__graph = ((struct glp_graph *)__pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":451
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)
 *         retcode = glpk.read_ccdata(_graph, v_wgt, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading graph DIMACS clique/coloring " +
 */
  __pyx_t_5 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_5 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 451; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_read_ccdata(__pyx_v__graph, __pyx_v_v_wgt, __pyx_t_5);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":452
 *                                                     graph._graph_ptr(), NULL)
 *         retcode = glpk.read_ccdata(_graph, v_wgt, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error reading graph DIMACS clique/coloring " +
 *                                "file")
 */
  __pyx_t_6 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_6) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":453
 *         retcode = glpk.read_ccdata(_graph, v_wgt, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading graph DIMACS clique/coloring " +             # <<<<<<<<<<<<<<
 *                                "file")
 *         return graph
 */
    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Error_reading_graph_DIMACS_cliqu, __pyx_n_s_file); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 453; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":455
 *             raise RuntimeError("Error reading graph DIMACS clique/coloring " +
 *                                "file")
 *         return graph             # <<<<<<<<<<<<<<
 * 
 *     def write_ccdata(self, int v_wgt, str fname):
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_graph);
  __pyx_r = __pyx_v_graph;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":445
 * 
 *     @classmethod
 *     def read_ccdata(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                     int v_wgt, str fname):
 *         """Read graph in DIMACS clique/coloring format"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_AddTraceback("ecyglpki.Graph.read_ccdata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_graph);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":457
 *         return graph
 * 
 *     def write_ccdata(self, int v_wgt, str fname):             # <<<<<<<<<<<<<<
 *         """Write graph in DIMACS clique/coloring format"""
 *         retcode = glpk.write_ccdata(self._graph, v_wgt, str2chars(fname))
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_67write_ccdata(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_66write_ccdata[] = "Graph.write_ccdata(self, int v_wgt, str fname)\nWrite graph in DIMACS clique/coloring format";
static PyObject *__pyx_pw_8ecyglpki_5Graph_67write_ccdata(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_v_wgt;
  PyObject *__pyx_v_fname = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("write_ccdata (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_v_wgt,&__pyx_n_s_fname,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_wgt)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_fname)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("write_ccdata", 1, 2, 2, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_ccdata") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_v_wgt = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_v_wgt == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_fname = ((PyObject*)values[1]);
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("write_ccdata", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.write_ccdata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_fname), (&PyString_Type), 1, "fname", 1))) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 457; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_66write_ccdata(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_v_wgt, __pyx_v_fname);

  /* function exit code */
  goto __pyx_L0;
  __pyx_L1_error:;
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_66write_ccdata(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_wgt, PyObject *__pyx_v_fname) {
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  char *__pyx_t_1;
  int __pyx_t_2;
  PyObject *__pyx_t_3 = NULL;
  PyObject *__pyx_t_4 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("write_ccdata", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":459
 *     def write_ccdata(self, int v_wgt, str fname):
 *         """Write graph in DIMACS clique/coloring format"""
 *         retcode = glpk.write_ccdata(self._graph, v_wgt, str2chars(fname))             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing graph DIMACS clique/coloring " +
 */
  __pyx_t_1 = __pyx_f_8ecyglpki_str2chars(__pyx_v_fname); if (unlikely(__pyx_t_1 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 459; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_v_retcode = glp_write_ccdata(__pyx_v_self->_graph, __pyx_v_v_wgt, __pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":460
 *         """Write graph in DIMACS clique/coloring format"""
 *         retcode = glpk.write_ccdata(self._graph, v_wgt, str2chars(fname))
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise RuntimeError("Error writing graph DIMACS clique/coloring " +
 *                                "file")
 */
  __pyx_t_2 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_2) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":461
 *         retcode = glpk.write_ccdata(self._graph, v_wgt, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing graph DIMACS clique/coloring " +             # <<<<<<<<<<<<<<
 *                                "file")
 * 
 */
    __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Error_writing_graph_DIMACS_cliqu, __pyx_n_s_file); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_4);
    PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
    __Pyx_GIVEREF(__pyx_t_3);
    __pyx_t_3 = 0;
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 461; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":457
 *         return graph
 * 
 *     def write_ccdata(self, int v_wgt, str fname):             # <<<<<<<<<<<<<<
 *         """Write graph in DIMACS clique/coloring format"""
 *         retcode = glpk.write_ccdata(self._graph, v_wgt, str2chars(fname))
 */

  /* function exit code */
  __pyx_r = Py_None; __Pyx_INCREF(Py_None);
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_4);
  __Pyx_AddTraceback("ecyglpki.Graph.write_ccdata", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":465
 * 
 *     @classmethod
 *     def netgen(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                int v_rhs, int a_cap, int a_cost, **parameters):
 *         """Klingman's network problem generator"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_69netgen(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_68netgen[] = "Graph.netgen(type cls, int vertex_data_size, int arc_data_size, int v_rhs, int a_cap, int a_cost, **parameters)\nKlingman's network problem generator";
static PyObject *__pyx_pw_8ecyglpki_5Graph_69netgen(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_vertex_data_size;
  int __pyx_v_arc_data_size;
  int __pyx_v_v_rhs;
  int __pyx_v_a_cap;
  int __pyx_v_a_cost;
  PyObject *__pyx_v_parameters = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("netgen (wrapper)", 0);
  __pyx_v_parameters = PyDict_New(); if (unlikely(!__pyx_v_parameters)) return NULL;
  __Pyx_GOTREF(__pyx_v_parameters);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vertex_data_size,&__pyx_n_s_arc_data_size,&__pyx_n_s_v_rhs,&__pyx_n_s_a_cap,&__pyx_n_s_a_cost,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertex_data_size)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_arc_data_size)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("netgen", 1, 5, 5, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_rhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("netgen", 1, 5, 5, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("netgen", 1, 5, 5, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cost)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("netgen", 1, 5, 5, 4); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_parameters, values, pos_args, "netgen") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_vertex_data_size = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_vertex_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_arc_data_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_arc_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_v_rhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_v_rhs == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cap = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_a_cap == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cost = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_a_cost == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("netgen", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_parameters); __pyx_v_parameters = 0;
  __Pyx_AddTraceback("ecyglpki.Graph.netgen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_68netgen(((PyObject*)__pyx_v_cls), __pyx_v_vertex_data_size, __pyx_v_arc_data_size, __pyx_v_v_rhs, __pyx_v_a_cap, __pyx_v_a_cost, __pyx_v_parameters);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_parameters);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_68netgen(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_v_rhs, int __pyx_v_a_cap, int __pyx_v_a_cost, PyObject *__pyx_v_parameters) {
  PyObject *__pyx_v_graph = NULL;
  struct glp_graph *__pyx_v__graph;
  int __pyx_v_params[(1 + 15)];
  int __pyx_v_nprob;
  PyObject *__pyx_v_parameter = NULL;
  PyObject *__pyx_v_value = NULL;
  int __pyx_v_retval;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  int __pyx_t_5;
  int __pyx_t_6;
  int __pyx_t_7;
  int __pyx_t_8;
  Py_ssize_t __pyx_t_9;
  PyObject *(*__pyx_t_10)(PyObject *);
  PyObject *__pyx_t_11 = NULL;
  PyObject *__pyx_t_12 = NULL;
  PyObject *(*__pyx_t_13)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("netgen", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":468
 *                int v_rhs, int a_cap, int a_cost, **parameters):
 *         """Klingman's network problem generator"""
 *         graph = cls(vertex_data_size, arc_data_size)             # <<<<<<<<<<<<<<
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_vertex_data_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_arc_data_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 468; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_graph = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":470
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         cdef int params[1+15]
 *         cdef int nprob = parameters['nprob']  # 8-digit problem id number
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph_ptr_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 470; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":469
 *         """Klingman's network problem generator"""
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     graph._graph_ptr(), NULL)
 *         cdef int params[1+15]
 */
  __pyx_t_4 = PyCapsule_GetPointer(__pyx_t_3, NULL); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 469; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v__graph = ((struct glp_graph *)__pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":472
 *                                                     graph._graph_ptr(), NULL)
 *         cdef int params[1+15]
 *         cdef int nprob = parameters['nprob']  # 8-digit problem id number             # <<<<<<<<<<<<<<
 *         if (nprob > 100) and (nprob <= 150):
 *             glpk.netgen_prob(nprob, params)
 */
  __pyx_t_3 = __Pyx_PyDict_GetItem(__pyx_v_parameters, __pyx_n_s_nprob); if (unlikely(__pyx_t_3 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_t_3); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 472; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_nprob = __pyx_t_5;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":473
 *         cdef int params[1+15]
 *         cdef int nprob = parameters['nprob']  # 8-digit problem id number
 *         if (nprob > 100) and (nprob <= 150):             # <<<<<<<<<<<<<<
 *             glpk.netgen_prob(nprob, params)
 *         else:
 */
  __pyx_t_6 = ((__pyx_v_nprob > 100) != 0);
  if (__pyx_t_6) {
    __pyx_t_7 = ((__pyx_v_nprob <= 150) != 0);
    __pyx_t_8 = __pyx_t_7;
  } else {
    __pyx_t_8 = __pyx_t_6;
  }
  if (__pyx_t_8) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":474
 *         cdef int nprob = parameters['nprob']  # 8-digit problem id number
 *         if (nprob > 100) and (nprob <= 150):
 *             glpk.netgen_prob(nprob, params)             # <<<<<<<<<<<<<<
 *         else:
 *             params[2] = nprob
 */
    glp_netgen_prob(__pyx_v_nprob, __pyx_v_params);
    goto __pyx_L3;
  }
  /*else*/ {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":476
 *             glpk.netgen_prob(nprob, params)
 *         else:
 *             params[2] = nprob             # <<<<<<<<<<<<<<
 *         for parameter, value in parameters.items():
 *             if parameter is 'iseed':
 */
    (__pyx_v_params[2]) = __pyx_v_nprob;
  }
  __pyx_L3:;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":477
 *         else:
 *             params[2] = nprob
 *         for parameter, value in parameters.items():             # <<<<<<<<<<<<<<
 *             if parameter is 'iseed':
 *                 params[1] = value  # 8-digit positive random number seed
 */
  __pyx_t_3 = __Pyx_PyDict_Items(__pyx_v_parameters); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_9 = 0;
    __pyx_t_10 = NULL;
  } else {
    __pyx_t_9 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_10 = Py_TYPE(__pyx_t_2)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (!__pyx_t_10 && PyList_CheckExact(__pyx_t_2)) {
      if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_2)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_9); __Pyx_INCREF(__pyx_t_3); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else if (!__pyx_t_10 && PyTuple_CheckExact(__pyx_t_2)) {
      if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_9); __Pyx_INCREF(__pyx_t_3); __pyx_t_9++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else {
      __pyx_t_3 = __pyx_t_10(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[7]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
      PyObject* sequence = __pyx_t_3;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        {__pyx_filename = __pyx_f[7]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_11 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_11 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_11);
      #else
      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_11);
      #endif
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_12 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_12)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_12);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext;
      index = 0; __pyx_t_1 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_1)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      index = 1; __pyx_t_11 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_11)) goto __pyx_L6_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_11);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 2) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_13 = NULL;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      goto __pyx_L7_unpacking_done;
      __pyx_L6_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
      __pyx_t_13 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      {__pyx_filename = __pyx_f[7]; __pyx_lineno = 477; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_L7_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_parameter, __pyx_t_1);
    __pyx_t_1 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_11);
    __pyx_t_11 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":478
 *             params[2] = nprob
 *         for parameter, value in parameters.items():
 *             if parameter is 'iseed':             # <<<<<<<<<<<<<<
 *                 params[1] = value  # 8-digit positive random number seed
 *             elif parameter is 'nodes':
 */
    __pyx_t_8 = (__pyx_v_parameter == __pyx_n_s_iseed);
    __pyx_t_6 = (__pyx_t_8 != 0);
    if (__pyx_t_6) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":479
 *         for parameter, value in parameters.items():
 *             if parameter is 'iseed':
 *                 params[1] = value  # 8-digit positive random number seed             # <<<<<<<<<<<<<<
 *             elif parameter is 'nodes':
 *                 params[3] = value  # total number of nodes
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 479; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[1]) = __pyx_t_5;
      goto __pyx_L8;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":480
 *             if parameter is 'iseed':
 *                 params[1] = value  # 8-digit positive random number seed
 *             elif parameter is 'nodes':             # <<<<<<<<<<<<<<
 *                 params[3] = value  # total number of nodes
 *             elif parameter is 'nsorc':
 */
    __pyx_t_6 = (__pyx_v_parameter == __pyx_n_s_nodes);
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (__pyx_t_8) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":481
 *                 params[1] = value  # 8-digit positive random number seed
 *             elif parameter is 'nodes':
 *                 params[3] = value  # total number of nodes             # <<<<<<<<<<<<<<
 *             elif parameter is 'nsorc':
 *                 params[4] = value
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 481; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[3]) = __pyx_t_5;
      goto __pyx_L8;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":482
 *             elif parameter is 'nodes':
 *                 params[3] = value  # total number of nodes
 *             elif parameter is 'nsorc':             # <<<<<<<<<<<<<<
 *                 params[4] = value
 *                 # total number of source nodes (including transshipment nodes)
 */
    __pyx_t_8 = (__pyx_v_parameter == __pyx_n_s_nsorc);
    __pyx_t_6 = (__pyx_t_8 != 0);
    if (__pyx_t_6) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":483
 *                 params[3] = value  # total number of nodes
 *             elif parameter is 'nsorc':
 *                 params[4] = value             # <<<<<<<<<<<<<<
 *                 # total number of source nodes (including transshipment nodes)
 *             elif parameter is 'nsink':
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 483; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[4]) = __pyx_t_5;
      goto __pyx_L8;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":485
 *                 params[4] = value
 *                 # total number of source nodes (including transshipment nodes)
 *             elif parameter is 'nsink':             # <<<<<<<<<<<<<<
 *                 params[5] = value
 *                 # total number of sink nodes (including transshipment nodes)
 */
    __pyx_t_6 = (__pyx_v_parameter == __pyx_n_s_nsink);
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (__pyx_t_8) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":486
 *                 # total number of source nodes (including transshipment nodes)
 *             elif parameter is 'nsink':
 *                 params[5] = value             # <<<<<<<<<<<<<<
 *                 # total number of sink nodes (including transshipment nodes)
 *             elif parameter is 'iarcs':
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 486; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[5]) = __pyx_t_5;
      goto __pyx_L8;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":488
 *                 params[5] = value
 *                 # total number of sink nodes (including transshipment nodes)
 *             elif parameter is 'iarcs':             # <<<<<<<<<<<<<<
 *                 params[6] = value  # number of arcs
 *             elif parameter is 'mincst':
 */
    __pyx_t_8 = (__pyx_v_parameter == __pyx_n_s_iarcs);
    __pyx_t_6 = (__pyx_t_8 != 0);
    if (__pyx_t_6) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":489
 *                 # total number of sink nodes (including transshipment nodes)
 *             elif parameter is 'iarcs':
 *                 params[6] = value  # number of arcs             # <<<<<<<<<<<<<<
 *             elif parameter is 'mincst':
 *                 params[7] = value  # minimum cost for arcs
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 489; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[6]) = __pyx_t_5;
      goto __pyx_L8;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":490
 *             elif parameter is 'iarcs':
 *                 params[6] = value  # number of arcs
 *             elif parameter is 'mincst':             # <<<<<<<<<<<<<<
 *                 params[7] = value  # minimum cost for arcs
 *             elif parameter is 'maxcst':
 */
    __pyx_t_6 = (__pyx_v_parameter == __pyx_n_s_mincst);
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (__pyx_t_8) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":491
 *                 params[6] = value  # number of arcs
 *             elif parameter is 'mincst':
 *                 params[7] = value  # minimum cost for arcs             # <<<<<<<<<<<<<<
 *             elif parameter is 'maxcst':
 *                 params[8] = value  # maximum cost for arcs
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 491; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[7]) = __pyx_t_5;
      goto __pyx_L8;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":492
 *             elif parameter is 'mincst':
 *                 params[7] = value  # minimum cost for arcs
 *             elif parameter is 'maxcst':             # <<<<<<<<<<<<<<
 *                 params[8] = value  # maximum cost for arcs
 *             elif parameter is 'itsup':
 */
    __pyx_t_8 = (__pyx_v_parameter == __pyx_n_s_maxcst);
    __pyx_t_6 = (__pyx_t_8 != 0);
    if (__pyx_t_6) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":493
 *                 params[7] = value  # minimum cost for arcs
 *             elif parameter is 'maxcst':
 *                 params[8] = value  # maximum cost for arcs             # <<<<<<<<<<<<<<
 *             elif parameter is 'itsup':
 *                 params[9] = value  # total supply
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 493; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[8]) = __pyx_t_5;
      goto __pyx_L8;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":494
 *             elif parameter is 'maxcst':
 *                 params[8] = value  # maximum cost for arcs
 *             elif parameter is 'itsup':             # <<<<<<<<<<<<<<
 *                 params[9] = value  # total supply
 *             elif parameter is 'ntsorc':
 */
    __pyx_t_6 = (__pyx_v_parameter == __pyx_n_s_itsup);
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (__pyx_t_8) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":495
 *                 params[8] = value  # maximum cost for arcs
 *             elif parameter is 'itsup':
 *                 params[9] = value  # total supply             # <<<<<<<<<<<<<<
 *             elif parameter is 'ntsorc':
 *                 params[10] = value  # number of transshipment source nodes
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 495; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[9]) = __pyx_t_5;
      goto __pyx_L8;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":496
 *             elif parameter is 'itsup':
 *                 params[9] = value  # total supply
 *             elif parameter is 'ntsorc':             # <<<<<<<<<<<<<<
 *                 params[10] = value  # number of transshipment source nodes
 *             elif parameter is 'ntsink':
 */
    __pyx_t_8 = (__pyx_v_parameter == __pyx_n_s_ntsorc);
    __pyx_t_6 = (__pyx_t_8 != 0);
    if (__pyx_t_6) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":497
 *                 params[9] = value  # total supply
 *             elif parameter is 'ntsorc':
 *                 params[10] = value  # number of transshipment source nodes             # <<<<<<<<<<<<<<
 *             elif parameter is 'ntsink':
 *                 params[11] = value  # number of transshipment sink nodes
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 497; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[10]) = __pyx_t_5;
      goto __pyx_L8;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":498
 *             elif parameter is 'ntsorc':
 *                 params[10] = value  # number of transshipment source nodes
 *             elif parameter is 'ntsink':             # <<<<<<<<<<<<<<
 *                 params[11] = value  # number of transshipment sink nodes
 *             elif parameter is 'iphic':
 */
    __pyx_t_6 = (__pyx_v_parameter == __pyx_n_s_ntsink);
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (__pyx_t_8) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":499
 *                 params[10] = value  # number of transshipment source nodes
 *             elif parameter is 'ntsink':
 *                 params[11] = value  # number of transshipment sink nodes             # <<<<<<<<<<<<<<
 *             elif parameter is 'iphic':
 *                 params[12] = value
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 499; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[11]) = __pyx_t_5;
      goto __pyx_L8;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":500
 *             elif parameter is 'ntsink':
 *                 params[11] = value  # number of transshipment sink nodes
 *             elif parameter is 'iphic':             # <<<<<<<<<<<<<<
 *                 params[12] = value
 *                 # percentage of skeleton arcs to be given the maximum cost
 */
    __pyx_t_8 = (__pyx_v_parameter == __pyx_n_s_iphic);
    __pyx_t_6 = (__pyx_t_8 != 0);
    if (__pyx_t_6) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":501
 *                 params[11] = value  # number of transshipment sink nodes
 *             elif parameter is 'iphic':
 *                 params[12] = value             # <<<<<<<<<<<<<<
 *                 # percentage of skeleton arcs to be given the maximum cost
 *             elif parameter is 'ipcap':
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 501; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[12]) = __pyx_t_5;
      goto __pyx_L8;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":503
 *                 params[12] = value
 *                 # percentage of skeleton arcs to be given the maximum cost
 *             elif parameter is 'ipcap':             # <<<<<<<<<<<<<<
 *                 params[13] = value  # percentage of arcs to be capacitated
 *             elif parameter is 'mincap':
 */
    __pyx_t_6 = (__pyx_v_parameter == __pyx_n_s_ipcap);
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (__pyx_t_8) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":504
 *                 # percentage of skeleton arcs to be given the maximum cost
 *             elif parameter is 'ipcap':
 *                 params[13] = value  # percentage of arcs to be capacitated             # <<<<<<<<<<<<<<
 *             elif parameter is 'mincap':
 *                 params[14] = value  # minimum upper bound for capacitated arcs
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 504; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[13]) = __pyx_t_5;
      goto __pyx_L8;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":505
 *             elif parameter is 'ipcap':
 *                 params[13] = value  # percentage of arcs to be capacitated
 *             elif parameter is 'mincap':             # <<<<<<<<<<<<<<
 *                 params[14] = value  # minimum upper bound for capacitated arcs
 *             elif parameter is 'maxcap':
 */
    __pyx_t_8 = (__pyx_v_parameter == __pyx_n_s_mincap);
    __pyx_t_6 = (__pyx_t_8 != 0);
    if (__pyx_t_6) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":506
 *                 params[13] = value  # percentage of arcs to be capacitated
 *             elif parameter is 'mincap':
 *                 params[14] = value  # minimum upper bound for capacitated arcs             # <<<<<<<<<<<<<<
 *             elif parameter is 'maxcap':
 *                 params[15] = value  # maximum upper bound for capacitated arcs
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 506; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[14]) = __pyx_t_5;
      goto __pyx_L8;
    }

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":507
 *             elif parameter is 'mincap':
 *                 params[14] = value  # minimum upper bound for capacitated arcs
 *             elif parameter is 'maxcap':             # <<<<<<<<<<<<<<
 *                 params[15] = value  # maximum upper bound for capacitated arcs
 *         retval = glpk.netgen(_graph, v_rhs, a_cap, a_cost, params)
 */
    __pyx_t_6 = (__pyx_v_parameter == __pyx_n_s_maxcap);
    __pyx_t_8 = (__pyx_t_6 != 0);
    if (__pyx_t_8) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":508
 *                 params[14] = value  # minimum upper bound for capacitated arcs
 *             elif parameter is 'maxcap':
 *                 params[15] = value  # maximum upper bound for capacitated arcs             # <<<<<<<<<<<<<<
 *         retval = glpk.netgen(_graph, v_rhs, a_cap, a_cost, params)
 *         if retval is not 0:
 */
      __pyx_t_5 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 508; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[15]) = __pyx_t_5;
      goto __pyx_L8;
    }
    __pyx_L8:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":509
 *             elif parameter is 'maxcap':
 *                 params[15] = value  # maximum upper bound for capacitated arcs
 *         retval = glpk.netgen(_graph, v_rhs, a_cap, a_cost, params)             # <<<<<<<<<<<<<<
 *         if retval is not 0:
 *             raise ValueError("Network generator parameters are inconsistent")
 */
  __pyx_v_retval = glp_netgen(__pyx_v__graph, __pyx_v_v_rhs, __pyx_v_a_cap, __pyx_v_a_cost, __pyx_v_params);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":510
 *                 params[15] = value  # maximum upper bound for capacitated arcs
 *         retval = glpk.netgen(_graph, v_rhs, a_cap, a_cost, params)
 *         if retval is not 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("Network generator parameters are inconsistent")
 *         return graph
 */
  __pyx_t_8 = ((__pyx_v_retval != 0) != 0);
  if (__pyx_t_8) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":511
 *         retval = glpk.netgen(_graph, v_rhs, a_cap, a_cost, params)
 *         if retval is not 0:
 *             raise ValueError("Network generator parameters are inconsistent")             # <<<<<<<<<<<<<<
 *         return graph
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__38, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":512
 *         if retval is not 0:
 *             raise ValueError("Network generator parameters are inconsistent")
 *         return graph             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_graph);
  __pyx_r = __pyx_v_graph;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":465
 * 
 *     @classmethod
 *     def netgen(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                int v_rhs, int a_cap, int a_cost, **parameters):
 *         """Klingman's network problem generator"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_11);
  __Pyx_XDECREF(__pyx_t_12);
  __Pyx_AddTraceback("ecyglpki.Graph.netgen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_graph);
  __Pyx_XDECREF(__pyx_v_parameter);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":515
 * 
 *     @classmethod
 *     def gridgen(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                 int v_rhs, int a_cap, int a_cost, **parameters):
 *         """Grid-like network problem generator"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_71gridgen(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_70gridgen[] = "Graph.gridgen(type cls, int vertex_data_size, int arc_data_size, int v_rhs, int a_cap, int a_cost, **parameters)\nGrid-like network problem generator";
static PyObject *__pyx_pw_8ecyglpki_5Graph_71gridgen(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_vertex_data_size;
  int __pyx_v_arc_data_size;
  int __pyx_v_v_rhs;
  int __pyx_v_a_cap;
  int __pyx_v_a_cost;
  PyObject *__pyx_v_parameters = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("gridgen (wrapper)", 0);
  __pyx_v_parameters = PyDict_New(); if (unlikely(!__pyx_v_parameters)) return NULL;
  __Pyx_GOTREF(__pyx_v_parameters);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vertex_data_size,&__pyx_n_s_arc_data_size,&__pyx_n_s_v_rhs,&__pyx_n_s_a_cap,&__pyx_n_s_a_cost,0};
    PyObject* values[5] = {0,0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  5: values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertex_data_size)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_arc_data_size)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("gridgen", 1, 5, 5, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_rhs)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("gridgen", 1, 5, 5, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("gridgen", 1, 5, 5, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  4:
        if (likely((values[4] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cost)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("gridgen", 1, 5, 5, 4); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_parameters, values, pos_args, "gridgen") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 5) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
      values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
    }
    __pyx_v_vertex_data_size = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_vertex_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_arc_data_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_arc_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_v_rhs = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_v_rhs == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cap = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_a_cap == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cost = __Pyx_PyInt_As_int(values[4]); if (unlikely((__pyx_v_a_cost == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 516; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("gridgen", 1, 5, 5, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_DECREF(__pyx_v_parameters); __pyx_v_parameters = 0;
  __Pyx_AddTraceback("ecyglpki.Graph.gridgen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_70gridgen(((PyObject*)__pyx_v_cls), __pyx_v_vertex_data_size, __pyx_v_arc_data_size, __pyx_v_v_rhs, __pyx_v_a_cap, __pyx_v_a_cost, __pyx_v_parameters);

  /* function exit code */
  __Pyx_XDECREF(__pyx_v_parameters);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_70gridgen(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_v_rhs, int __pyx_v_a_cap, int __pyx_v_a_cost, PyObject *__pyx_v_parameters) {
  PyObject *__pyx_v_graph = NULL;
  struct glp_graph *__pyx_v__graph;
  int __pyx_v_params[(1 + 14)];
  PyObject *__pyx_v_parameter = NULL;
  PyObject *__pyx_v_value = NULL;
  int __pyx_v_retval;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *(*__pyx_t_9)(PyObject *);
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("gridgen", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":518
 *                 int v_rhs, int a_cap, int a_cost, **parameters):
 *         """Grid-like network problem generator"""
 *         graph = cls(vertex_data_size, arc_data_size)             # <<<<<<<<<<<<<<
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_vertex_data_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_arc_data_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 518; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_graph = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":520
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         cdef int params[1+14]
 *         for parameter, value in parameters.items():
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph_ptr_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 520; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":519
 *         """Grid-like network problem generator"""
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     graph._graph_ptr(), NULL)
 *         cdef int params[1+14]
 */
  __pyx_t_4 = PyCapsule_GetPointer(__pyx_t_3, NULL); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 519; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v__graph = ((struct glp_graph *)__pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":522
 *                                                     graph._graph_ptr(), NULL)
 *         cdef int params[1+14]
 *         for parameter, value in parameters.items():             # <<<<<<<<<<<<<<
 *             if parameter is 'two_way':
 *                 params[1] = value
 */
  __pyx_t_3 = __Pyx_PyDict_Items(__pyx_v_parameters); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
    __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_6 = Py_TYPE(__pyx_t_2)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  for (;;) {
    if (!__pyx_t_6 && PyList_CheckExact(__pyx_t_2)) {
      if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_2)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else if (!__pyx_t_6 && PyTuple_CheckExact(__pyx_t_2)) {
      if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_5); __Pyx_INCREF(__pyx_t_3); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else {
      __pyx_t_3 = __pyx_t_6(__pyx_t_2);
      if (unlikely(!__pyx_t_3)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[7]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_3);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
      PyObject* sequence = __pyx_t_3;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        {__pyx_filename = __pyx_f[7]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_7);
      #else
      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      #endif
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
      index = 0; __pyx_t_1 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_9 = NULL;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_9 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      {__pyx_filename = __pyx_f[7]; __pyx_lineno = 522; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_parameter, __pyx_t_1);
    __pyx_t_1 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_7);
    __pyx_t_7 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":523
 *         cdef int params[1+14]
 *         for parameter, value in parameters.items():
 *             if parameter is 'two_way':             # <<<<<<<<<<<<<<
 *                 params[1] = value
 *                 # two-ways arcs indicator
 */
    __pyx_t_10 = (__pyx_v_parameter == __pyx_n_s_two_way);
    __pyx_t_11 = (__pyx_t_10 != 0);
    if (__pyx_t_11) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":524
 *         for parameter, value in parameters.items():
 *             if parameter is 'two_way':
 *                 params[1] = value             # <<<<<<<<<<<<<<
 *                 # two-ways arcs indicator
 *                 #  1  if links in both direction should be generated
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 524; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[1]) = __pyx_t_12;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":528
 *                 #  1  if links in both direction should be generated
 *                 #  0  otherwise
 *             if parameter is 'iseed':             # <<<<<<<<<<<<<<
 *                 params[2] = value  # random number seed (a positive integer)
 *             if parameter is 'nodes':
 */
    __pyx_t_11 = (__pyx_v_parameter == __pyx_n_s_iseed);
    __pyx_t_10 = (__pyx_t_11 != 0);
    if (__pyx_t_10) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":529
 *                 #  0  otherwise
 *             if parameter is 'iseed':
 *                 params[2] = value  # random number seed (a positive integer)             # <<<<<<<<<<<<<<
 *             if parameter is 'nodes':
 *                 params[3] = value
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 529; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[2]) = __pyx_t_12;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":530
 *             if parameter is 'iseed':
 *                 params[2] = value  # random number seed (a positive integer)
 *             if parameter is 'nodes':             # <<<<<<<<<<<<<<
 *                 params[3] = value
 *                 # number of nodes (the number of nodes generated might be
 */
    __pyx_t_10 = (__pyx_v_parameter == __pyx_n_s_nodes);
    __pyx_t_11 = (__pyx_t_10 != 0);
    if (__pyx_t_11) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":531
 *                 params[2] = value  # random number seed (a positive integer)
 *             if parameter is 'nodes':
 *                 params[3] = value             # <<<<<<<<<<<<<<
 *                 # number of nodes (the number of nodes generated might be
 *                 # slightly different to make the network a grid)
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 531; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[3]) = __pyx_t_12;
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":534
 *                 # number of nodes (the number of nodes generated might be
 *                 # slightly different to make the network a grid)
 *             if parameter is 'width':             # <<<<<<<<<<<<<<
 *                 params[4] = value  # grid width
 *             if parameter is 'sources':
 */
    __pyx_t_11 = (__pyx_v_parameter == __pyx_n_s_width);
    __pyx_t_10 = (__pyx_t_11 != 0);
    if (__pyx_t_10) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":535
 *                 # slightly different to make the network a grid)
 *             if parameter is 'width':
 *                 params[4] = value  # grid width             # <<<<<<<<<<<<<<
 *             if parameter is 'sources':
 *                 params[5] = value  # number of sources
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 535; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[4]) = __pyx_t_12;
      goto __pyx_L10;
    }
    __pyx_L10:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":536
 *             if parameter is 'width':
 *                 params[4] = value  # grid width
 *             if parameter is 'sources':             # <<<<<<<<<<<<<<
 *                 params[5] = value  # number of sources
 *             if parameter is 'sinks':
 */
    __pyx_t_10 = (__pyx_v_parameter == __pyx_n_s_sources);
    __pyx_t_11 = (__pyx_t_10 != 0);
    if (__pyx_t_11) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":537
 *                 params[4] = value  # grid width
 *             if parameter is 'sources':
 *                 params[5] = value  # number of sources             # <<<<<<<<<<<<<<
 *             if parameter is 'sinks':
 *                 params[6] = value  # number of sinks
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 537; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[5]) = __pyx_t_12;
      goto __pyx_L11;
    }
    __pyx_L11:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":538
 *             if parameter is 'sources':
 *                 params[5] = value  # number of sources
 *             if parameter is 'sinks':             # <<<<<<<<<<<<<<
 *                 params[6] = value  # number of sinks
 *             if parameter is 'degree':
 */
    __pyx_t_11 = (__pyx_v_parameter == __pyx_n_s_sinks);
    __pyx_t_10 = (__pyx_t_11 != 0);
    if (__pyx_t_10) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":539
 *                 params[5] = value  # number of sources
 *             if parameter is 'sinks':
 *                 params[6] = value  # number of sinks             # <<<<<<<<<<<<<<
 *             if parameter is 'degree':
 *                 params[7] = value  # average degree
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 539; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[6]) = __pyx_t_12;
      goto __pyx_L12;
    }
    __pyx_L12:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":540
 *             if parameter is 'sinks':
 *                 params[6] = value  # number of sinks
 *             if parameter is 'degree':             # <<<<<<<<<<<<<<
 *                 params[7] = value  # average degree
 *             if parameter is 'flow':
 */
    __pyx_t_10 = (__pyx_v_parameter == __pyx_n_s_degree);
    __pyx_t_11 = (__pyx_t_10 != 0);
    if (__pyx_t_11) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":541
 *                 params[6] = value  # number of sinks
 *             if parameter is 'degree':
 *                 params[7] = value  # average degree             # <<<<<<<<<<<<<<
 *             if parameter is 'flow':
 *                 params[8] = value  # total flow
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 541; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[7]) = __pyx_t_12;
      goto __pyx_L13;
    }
    __pyx_L13:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":542
 *             if parameter is 'degree':
 *                 params[7] = value  # average degree
 *             if parameter is 'flow':             # <<<<<<<<<<<<<<
 *                 params[8] = value  # total flow
 *             if parameter is 'dist_costs':
 */
    __pyx_t_11 = (__pyx_v_parameter == __pyx_n_s_flow);
    __pyx_t_10 = (__pyx_t_11 != 0);
    if (__pyx_t_10) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":543
 *                 params[7] = value  # average degree
 *             if parameter is 'flow':
 *                 params[8] = value  # total flow             # <<<<<<<<<<<<<<
 *             if parameter is 'dist_costs':
 *                 params[9] = value
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 543; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[8]) = __pyx_t_12;
      goto __pyx_L14;
    }
    __pyx_L14:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":544
 *             if parameter is 'flow':
 *                 params[8] = value  # total flow
 *             if parameter is 'dist_costs':             # <<<<<<<<<<<<<<
 *                 params[9] = value
 *                 # distribution of arc costs: 1  uniform, 2  exponential
 */
    __pyx_t_10 = (__pyx_v_parameter == __pyx_n_s_dist_costs);
    __pyx_t_11 = (__pyx_t_10 != 0);
    if (__pyx_t_11) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":545
 *                 params[8] = value  # total flow
 *             if parameter is 'dist_costs':
 *                 params[9] = value             # <<<<<<<<<<<<<<
 *                 # distribution of arc costs: 1  uniform, 2  exponential
 *             if parameter is 'cost_lb':
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 545; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[9]) = __pyx_t_12;
      goto __pyx_L15;
    }
    __pyx_L15:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":547
 *                 params[9] = value
 *                 # distribution of arc costs: 1  uniform, 2  exponential
 *             if parameter is 'cost_lb':             # <<<<<<<<<<<<<<
 *                 params[10] = value
 *                 # lower bound for arc cost (uniform), 100 (exponential)
 */
    __pyx_t_11 = (__pyx_v_parameter == __pyx_n_s_cost_lb);
    __pyx_t_10 = (__pyx_t_11 != 0);
    if (__pyx_t_10) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":548
 *                 # distribution of arc costs: 1  uniform, 2  exponential
 *             if parameter is 'cost_lb':
 *                 params[10] = value             # <<<<<<<<<<<<<<
 *                 # lower bound for arc cost (uniform), 100 (exponential)
 *             if parameter is 'cost_ub':
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 548; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[10]) = __pyx_t_12;
      goto __pyx_L16;
    }
    __pyx_L16:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":550
 *                 params[10] = value
 *                 # lower bound for arc cost (uniform), 100 (exponential)
 *             if parameter is 'cost_ub':             # <<<<<<<<<<<<<<
 *                 params[11] = value
 *                 # upper bound for arc cost (uniform), not used (exponential)
 */
    __pyx_t_10 = (__pyx_v_parameter == __pyx_n_s_cost_ub);
    __pyx_t_11 = (__pyx_t_10 != 0);
    if (__pyx_t_11) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":551
 *                 # lower bound for arc cost (uniform), 100 (exponential)
 *             if parameter is 'cost_ub':
 *                 params[11] = value             # <<<<<<<<<<<<<<
 *                 # upper bound for arc cost (uniform), not used (exponential)
 *             if parameter is 'dist_caps':
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 551; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[11]) = __pyx_t_12;
      goto __pyx_L17;
    }
    __pyx_L17:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":553
 *                 params[11] = value
 *                 # upper bound for arc cost (uniform), not used (exponential)
 *             if parameter is 'dist_caps':             # <<<<<<<<<<<<<<
 *                 params[12] = value
 *                 # distribution of arc capacities: 1  uniform, 2  exponential
 */
    __pyx_t_11 = (__pyx_v_parameter == __pyx_n_s_dist_caps);
    __pyx_t_10 = (__pyx_t_11 != 0);
    if (__pyx_t_10) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":554
 *                 # upper bound for arc cost (uniform), not used (exponential)
 *             if parameter is 'dist_caps':
 *                 params[12] = value             # <<<<<<<<<<<<<<
 *                 # distribution of arc capacities: 1  uniform, 2  exponential
 *             if parameter is 'caps_lb':
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 554; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[12]) = __pyx_t_12;
      goto __pyx_L18;
    }
    __pyx_L18:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":556
 *                 params[12] = value
 *                 # distribution of arc capacities: 1  uniform, 2  exponential
 *             if parameter is 'caps_lb':             # <<<<<<<<<<<<<<
 *                 params[13] = value
 *                 # lower bound for arc capacity (uniform), 100 (exponential)
 */
    __pyx_t_10 = (__pyx_v_parameter == __pyx_n_s_caps_lb);
    __pyx_t_11 = (__pyx_t_10 != 0);
    if (__pyx_t_11) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":557
 *                 # distribution of arc capacities: 1  uniform, 2  exponential
 *             if parameter is 'caps_lb':
 *                 params[13] = value             # <<<<<<<<<<<<<<
 *                 # lower bound for arc capacity (uniform), 100 (exponential)
 *             if parameter is 'caps_ub':
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 557; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[13]) = __pyx_t_12;
      goto __pyx_L19;
    }
    __pyx_L19:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":559
 *                 params[13] = value
 *                 # lower bound for arc capacity (uniform), 100 (exponential)
 *             if parameter is 'caps_ub':             # <<<<<<<<<<<<<<
 *                 params[14] = value
 *                 # upper bound for arc capacity (uniform), not used (exponential)
 */
    __pyx_t_11 = (__pyx_v_parameter == __pyx_n_s_caps_ub);
    __pyx_t_10 = (__pyx_t_11 != 0);
    if (__pyx_t_10) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":560
 *                 # lower bound for arc capacity (uniform), 100 (exponential)
 *             if parameter is 'caps_ub':
 *                 params[14] = value             # <<<<<<<<<<<<<<
 *                 # upper bound for arc capacity (uniform), not used (exponential)
 *         retval = glpk.gridgen(_graph, v_rhs, a_cap, a_cost, params)
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 560; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[14]) = __pyx_t_12;
      goto __pyx_L20;
    }
    __pyx_L20:;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":562
 *                 params[14] = value
 *                 # upper bound for arc capacity (uniform), not used (exponential)
 *         retval = glpk.gridgen(_graph, v_rhs, a_cap, a_cost, params)             # <<<<<<<<<<<<<<
 *         if retval is not 0:
 *             raise ValueError("Network generator parameters are inconsistent")
 */
  __pyx_v_retval = glp_gridgen(__pyx_v__graph, __pyx_v_v_rhs, __pyx_v_a_cap, __pyx_v_a_cost, __pyx_v_params);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":563
 *                 # upper bound for arc capacity (uniform), not used (exponential)
 *         retval = glpk.gridgen(_graph, v_rhs, a_cap, a_cost, params)
 *         if retval is not 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("Network generator parameters are inconsistent")
 *         return graph
 */
  __pyx_t_10 = ((__pyx_v_retval != 0) != 0);
  if (__pyx_t_10) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":564
 *         retval = glpk.gridgen(_graph, v_rhs, a_cap, a_cost, params)
 *         if retval is not 0:
 *             raise ValueError("Network generator parameters are inconsistent")             # <<<<<<<<<<<<<<
 *         return graph
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__39, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":565
 *         if retval is not 0:
 *             raise ValueError("Network generator parameters are inconsistent")
 *         return graph             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __Pyx_XDECREF(__pyx_r);
  __Pyx_INCREF(__pyx_v_graph);
  __pyx_r = __pyx_v_graph;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":515
 * 
 *     @classmethod
 *     def gridgen(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                 int v_rhs, int a_cap, int a_cost, **parameters):
 *         """Grid-like network problem generator"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("ecyglpki.Graph.gridgen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_graph);
  __Pyx_XDECREF(__pyx_v_parameter);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":568
 * 
 *     @classmethod
 *     def rmfgen(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                int a_cap, parameters):
 *         """Goldfarb's maximum flow problem generator"""
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_73rmfgen(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_72rmfgen[] = "Graph.rmfgen(type cls, int vertex_data_size, int arc_data_size, int a_cap, parameters)\nGoldfarb's maximum flow problem generator";
static PyObject *__pyx_pw_8ecyglpki_5Graph_73rmfgen(PyObject *__pyx_v_cls, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_vertex_data_size;
  int __pyx_v_arc_data_size;
  int __pyx_v_a_cap;
  PyObject *__pyx_v_parameters = 0;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("rmfgen (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_vertex_data_size,&__pyx_n_s_arc_data_size,&__pyx_n_s_a_cap,&__pyx_n_s_parameters,0};
    PyObject* values[4] = {0,0,0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  4: values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
        case  3: values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_vertex_data_size)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_arc_data_size)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("rmfgen", 1, 4, 4, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  2:
        if (likely((values[2] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_a_cap)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("rmfgen", 1, 4, 4, 2); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
        case  3:
        if (likely((values[3] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_parameters)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("rmfgen", 1, 4, 4, 3); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "rmfgen") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 4) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
      values[2] = PyTuple_GET_ITEM(__pyx_args, 2);
      values[3] = PyTuple_GET_ITEM(__pyx_args, 3);
    }
    __pyx_v_vertex_data_size = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_vertex_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_arc_data_size = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_arc_data_size == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_a_cap = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_a_cap == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 569; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_parameters = values[3];
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("rmfgen", 1, 4, 4, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.rmfgen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_72rmfgen(((PyObject*)__pyx_v_cls), __pyx_v_vertex_data_size, __pyx_v_arc_data_size, __pyx_v_a_cap, __pyx_v_parameters);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_72rmfgen(PyObject *__pyx_v_cls, int __pyx_v_vertex_data_size, int __pyx_v_arc_data_size, int __pyx_v_a_cap, PyObject *__pyx_v_parameters) {
  PyObject *__pyx_v_graph = NULL;
  struct glp_graph *__pyx_v__graph;
  int __pyx_v_params[(1 + 5)];
  PyObject *__pyx_v_parameter = NULL;
  PyObject *__pyx_v_value = NULL;
  int __pyx_v_source;
  int __pyx_v_sink;
  int __pyx_v_retval;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  void *__pyx_t_4;
  Py_ssize_t __pyx_t_5;
  PyObject *(*__pyx_t_6)(PyObject *);
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *(*__pyx_t_9)(PyObject *);
  int __pyx_t_10;
  int __pyx_t_11;
  int __pyx_t_12;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("rmfgen", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":571
 *                int a_cap, parameters):
 *         """Goldfarb's maximum flow problem generator"""
 *         graph = cls(vertex_data_size, arc_data_size)             # <<<<<<<<<<<<<<
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_vertex_data_size); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_arc_data_size); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_1 = 0;
  __pyx_t_2 = 0;
  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_cls), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 571; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v_graph = __pyx_t_2;
  __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":573
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(
 *                                                     graph._graph_ptr(), NULL)             # <<<<<<<<<<<<<<
 *         cdef int params[1+5]
 *         for parameter, value in parameters.items():
 */
  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_graph, __pyx_n_s_graph_ptr_2); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 573; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":572
 *         """Goldfarb's maximum flow problem generator"""
 *         graph = cls(vertex_data_size, arc_data_size)
 *         cdef glpk.Graph* _graph = <glpk.Graph*>PyCapsule_GetPointer(             # <<<<<<<<<<<<<<
 *                                                     graph._graph_ptr(), NULL)
 *         cdef int params[1+5]
 */
  __pyx_t_4 = PyCapsule_GetPointer(__pyx_t_3, NULL); if (unlikely(__pyx_t_4 == NULL && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 572; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __pyx_v__graph = ((struct glp_graph *)__pyx_t_4);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":575
 *                                                     graph._graph_ptr(), NULL)
 *         cdef int params[1+5]
 *         for parameter, value in parameters.items():             # <<<<<<<<<<<<<<
 *             if parameter is 'seed':
 *                 params[1] = value  # random number seed (a positive integer)
 */
  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_parameters, __pyx_n_s_items); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
    __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_5 = 0;
    __pyx_t_6 = NULL;
  } else {
    __pyx_t_5 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_6 = Py_TYPE(__pyx_t_3)->tp_iternext;
  }
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  for (;;) {
    if (!__pyx_t_6 && PyList_CheckExact(__pyx_t_3)) {
      if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_3)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else if (!__pyx_t_6 && PyTuple_CheckExact(__pyx_t_3)) {
      if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
      #if CYTHON_COMPILING_IN_CPYTHON
      __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_5); __Pyx_INCREF(__pyx_t_2); __pyx_t_5++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #else
      __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      #endif
    } else {
      __pyx_t_2 = __pyx_t_6(__pyx_t_3);
      if (unlikely(!__pyx_t_2)) {
        PyObject* exc_type = PyErr_Occurred();
        if (exc_type) {
          if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
          else {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
        }
        break;
      }
      __Pyx_GOTREF(__pyx_t_2);
    }
    if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
      PyObject* sequence = __pyx_t_2;
      #if CYTHON_COMPILING_IN_CPYTHON
      Py_ssize_t size = Py_SIZE(sequence);
      #else
      Py_ssize_t size = PySequence_Size(sequence);
      #endif
      if (unlikely(size != 2)) {
        if (size > 2) __Pyx_RaiseTooManyValuesError(2);
        else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
        {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      }
      #if CYTHON_COMPILING_IN_CPYTHON
      if (likely(PyTuple_CheckExact(sequence))) {
        __pyx_t_1 = PyTuple_GET_ITEM(sequence, 0); 
        __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
      } else {
        __pyx_t_1 = PyList_GET_ITEM(sequence, 0); 
        __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
      }
      __Pyx_INCREF(__pyx_t_1);
      __Pyx_INCREF(__pyx_t_7);
      #else
      __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_7);
      #endif
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    } else {
      Py_ssize_t index = -1;
      __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __Pyx_GOTREF(__pyx_t_8);
      __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
      index = 0; __pyx_t_1 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_1)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_1);
      index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L5_unpacking_failed;
      __Pyx_GOTREF(__pyx_t_7);
      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_t_9 = NULL;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      goto __pyx_L6_unpacking_done;
      __pyx_L5_unpacking_failed:;
      __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
      __pyx_t_9 = NULL;
      if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
      {__pyx_filename = __pyx_f[7]; __pyx_lineno = 575; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      __pyx_L6_unpacking_done:;
    }
    __Pyx_XDECREF_SET(__pyx_v_parameter, __pyx_t_1);
    __pyx_t_1 = 0;
    __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_7);
    __pyx_t_7 = 0;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":576
 *         cdef int params[1+5]
 *         for parameter, value in parameters.items():
 *             if parameter is 'seed':             # <<<<<<<<<<<<<<
 *                 params[1] = value  # random number seed (a positive integer)
 *             if parameter is 'a':
 */
    __pyx_t_10 = (__pyx_v_parameter == __pyx_n_s_seed);
    __pyx_t_11 = (__pyx_t_10 != 0);
    if (__pyx_t_11) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":577
 *         for parameter, value in parameters.items():
 *             if parameter is 'seed':
 *                 params[1] = value  # random number seed (a positive integer)             # <<<<<<<<<<<<<<
 *             if parameter is 'a':
 *                 params[2] = value  # frame size
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 577; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[1]) = __pyx_t_12;
      goto __pyx_L7;
    }
    __pyx_L7:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":578
 *             if parameter is 'seed':
 *                 params[1] = value  # random number seed (a positive integer)
 *             if parameter is 'a':             # <<<<<<<<<<<<<<
 *                 params[2] = value  # frame size
 *             if parameter is 'b':
 */
    __pyx_t_11 = (__pyx_v_parameter == __pyx_n_s_a);
    __pyx_t_10 = (__pyx_t_11 != 0);
    if (__pyx_t_10) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":579
 *                 params[1] = value  # random number seed (a positive integer)
 *             if parameter is 'a':
 *                 params[2] = value  # frame size             # <<<<<<<<<<<<<<
 *             if parameter is 'b':
 *                 params[3] = value  # depth
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 579; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[2]) = __pyx_t_12;
      goto __pyx_L8;
    }
    __pyx_L8:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":580
 *             if parameter is 'a':
 *                 params[2] = value  # frame size
 *             if parameter is 'b':             # <<<<<<<<<<<<<<
 *                 params[3] = value  # depth
 *             if parameter is 'c1':
 */
    __pyx_t_10 = (__pyx_v_parameter == __pyx_n_s_b);
    __pyx_t_11 = (__pyx_t_10 != 0);
    if (__pyx_t_11) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":581
 *                 params[2] = value  # frame size
 *             if parameter is 'b':
 *                 params[3] = value  # depth             # <<<<<<<<<<<<<<
 *             if parameter is 'c1':
 *                 params[4] = value  # minimal arc capacity
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 581; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[3]) = __pyx_t_12;
      goto __pyx_L9;
    }
    __pyx_L9:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":582
 *             if parameter is 'b':
 *                 params[3] = value  # depth
 *             if parameter is 'c1':             # <<<<<<<<<<<<<<
 *                 params[4] = value  # minimal arc capacity
 *             if parameter is 'c2':
 */
    __pyx_t_11 = (__pyx_v_parameter == __pyx_n_s_c1);
    __pyx_t_10 = (__pyx_t_11 != 0);
    if (__pyx_t_10) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":583
 *                 params[3] = value  # depth
 *             if parameter is 'c1':
 *                 params[4] = value  # minimal arc capacity             # <<<<<<<<<<<<<<
 *             if parameter is 'c2':
 *                 params[5] = value  # maximal arc capacity
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 583; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[4]) = __pyx_t_12;
      goto __pyx_L10;
    }
    __pyx_L10:;

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":584
 *             if parameter is 'c1':
 *                 params[4] = value  # minimal arc capacity
 *             if parameter is 'c2':             # <<<<<<<<<<<<<<
 *                 params[5] = value  # maximal arc capacity
 *         cdef int source
 */
    __pyx_t_10 = (__pyx_v_parameter == __pyx_n_s_c2);
    __pyx_t_11 = (__pyx_t_10 != 0);
    if (__pyx_t_11) {

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":585
 *                 params[4] = value  # minimal arc capacity
 *             if parameter is 'c2':
 *                 params[5] = value  # maximal arc capacity             # <<<<<<<<<<<<<<
 *         cdef int source
 *         cdef int sink
 */
      __pyx_t_12 = __Pyx_PyInt_As_int(__pyx_v_value); if (unlikely((__pyx_t_12 == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 585; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
      (__pyx_v_params[5]) = __pyx_t_12;
      goto __pyx_L11;
    }
    __pyx_L11:;
  }
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":588
 *         cdef int source
 *         cdef int sink
 *         retval = glpk.rmfgen(_graph, &source, &sink, a_cap, params)             # <<<<<<<<<<<<<<
 *         if retval is not 0:
 *             raise ValueError("Network generator parameters are inconsistent")
 */
  __pyx_v_retval = glp_rmfgen(__pyx_v__graph, (&__pyx_v_source), (&__pyx_v_sink), __pyx_v_a_cap, __pyx_v_params);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":589
 *         cdef int sink
 *         retval = glpk.rmfgen(_graph, &source, &sink, a_cap, params)
 *         if retval is not 0:             # <<<<<<<<<<<<<<
 *             raise ValueError("Network generator parameters are inconsistent")
 *         return (graph, source, sink)
 */
  __pyx_t_11 = ((__pyx_v_retval != 0) != 0);
  if (__pyx_t_11) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":590
 *         retval = glpk.rmfgen(_graph, &source, &sink, a_cap, params)
 *         if retval is not 0:
 *             raise ValueError("Network generator parameters are inconsistent")             # <<<<<<<<<<<<<<
 *         return (graph, source, sink)
 * 
 */
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__40, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_Raise(__pyx_t_3, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":591
 *         if retval is not 0:
 *             raise ValueError("Network generator parameters are inconsistent")
 *         return (graph, source, sink)             # <<<<<<<<<<<<<<
 * 
 *     def weak_comp(self, int v_num):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_source); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_sink); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_7 = PyTuple_New(3); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 591; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  __Pyx_INCREF(__pyx_v_graph);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_v_graph);
  __Pyx_GIVEREF(__pyx_v_graph);
  PyTuple_SET_ITEM(__pyx_t_7, 1, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  PyTuple_SET_ITEM(__pyx_t_7, 2, __pyx_t_2);
  __Pyx_GIVEREF(__pyx_t_2);
  __pyx_t_3 = 0;
  __pyx_t_2 = 0;
  __pyx_r = __pyx_t_7;
  __pyx_t_7 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":568
 * 
 *     @classmethod
 *     def rmfgen(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                int a_cap, parameters):
 *         """Goldfarb's maximum flow problem generator"""
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  __Pyx_AddTraceback("ecyglpki.Graph.rmfgen", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XDECREF(__pyx_v_graph);
  __Pyx_XDECREF(__pyx_v_parameter);
  __Pyx_XDECREF(__pyx_v_value);
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":593
 *         return (graph, source, sink)
 * 
 *     def weak_comp(self, int v_num):             # <<<<<<<<<<<<<<
 *         """Find all weakly connected components of graph"""
 *         return glpk.weak_comp(self._graph, v_num)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_75weak_comp(PyObject *__pyx_v_self, PyObject *__pyx_arg_v_num); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_74weak_comp[] = "Graph.weak_comp(self, int v_num)\nFind all weakly connected components of graph";
static PyObject *__pyx_pw_8ecyglpki_5Graph_75weak_comp(PyObject *__pyx_v_self, PyObject *__pyx_arg_v_num) {
  int __pyx_v_v_num;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("weak_comp (wrapper)", 0);
  assert(__pyx_arg_v_num); {
    __pyx_v_v_num = __Pyx_PyInt_As_int(__pyx_arg_v_num); if (unlikely((__pyx_v_v_num == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 593; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.weak_comp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_74weak_comp(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), ((int)__pyx_v_v_num));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_74weak_comp(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_num) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("weak_comp", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":595
 *     def weak_comp(self, int v_num):
 *         """Find all weakly connected components of graph"""
 *         return glpk.weak_comp(self._graph, v_num)             # <<<<<<<<<<<<<<
 * 
 *     def strong_comp(self, int v_num):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_weak_comp(__pyx_v_self->_graph, __pyx_v_v_num)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 595; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":593
 *         return (graph, source, sink)
 * 
 *     def weak_comp(self, int v_num):             # <<<<<<<<<<<<<<
 *         """Find all weakly connected components of graph"""
 *         return glpk.weak_comp(self._graph, v_num)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Graph.weak_comp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":597
 *         return glpk.weak_comp(self._graph, v_num)
 * 
 *     def strong_comp(self, int v_num):             # <<<<<<<<<<<<<<
 *         """Find all strongly connected components of graph"""
 *         return glpk.strong_comp(self._graph, v_num)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_77strong_comp(PyObject *__pyx_v_self, PyObject *__pyx_arg_v_num); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_76strong_comp[] = "Graph.strong_comp(self, int v_num)\nFind all strongly connected components of graph";
static PyObject *__pyx_pw_8ecyglpki_5Graph_77strong_comp(PyObject *__pyx_v_self, PyObject *__pyx_arg_v_num) {
  int __pyx_v_v_num;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("strong_comp (wrapper)", 0);
  assert(__pyx_arg_v_num); {
    __pyx_v_v_num = __Pyx_PyInt_As_int(__pyx_arg_v_num); if (unlikely((__pyx_v_v_num == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 597; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.strong_comp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_76strong_comp(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), ((int)__pyx_v_v_num));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_76strong_comp(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_num) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("strong_comp", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":599
 *     def strong_comp(self, int v_num):
 *         """Find all strongly connected components of graph"""
 *         return glpk.strong_comp(self._graph, v_num)             # <<<<<<<<<<<<<<
 * 
 *     def top_sort(self, int v_num):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_strong_comp(__pyx_v_self->_graph, __pyx_v_v_num)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 599; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":597
 *         return glpk.weak_comp(self._graph, v_num)
 * 
 *     def strong_comp(self, int v_num):             # <<<<<<<<<<<<<<
 *         """Find all strongly connected components of graph"""
 *         return glpk.strong_comp(self._graph, v_num)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Graph.strong_comp", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":601
 *         return glpk.strong_comp(self._graph, v_num)
 * 
 *     def top_sort(self, int v_num):             # <<<<<<<<<<<<<<
 *         """Topological sorting of acyclic digraph"""
 *         return glpk.top_sort(self._graph, v_num)
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_79top_sort(PyObject *__pyx_v_self, PyObject *__pyx_arg_v_num); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_78top_sort[] = "Graph.top_sort(self, int v_num)\nTopological sorting of acyclic digraph";
static PyObject *__pyx_pw_8ecyglpki_5Graph_79top_sort(PyObject *__pyx_v_self, PyObject *__pyx_arg_v_num) {
  int __pyx_v_v_num;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("top_sort (wrapper)", 0);
  assert(__pyx_arg_v_num); {
    __pyx_v_v_num = __Pyx_PyInt_As_int(__pyx_arg_v_num); if (unlikely((__pyx_v_v_num == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 601; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.top_sort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_78top_sort(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), ((int)__pyx_v_v_num));

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_78top_sort(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_num) {
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  PyObject *__pyx_t_1 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("top_sort", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":603
 *     def top_sort(self, int v_num):
 *         """Topological sorting of acyclic digraph"""
 *         return glpk.top_sort(self._graph, v_num)             # <<<<<<<<<<<<<<
 * 
 *     def wclique_exact(self, int v_wgt, int v_set):
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_1 = __Pyx_PyInt_From_int(glp_top_sort(__pyx_v_self->_graph, __pyx_v_v_num)); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 603; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __pyx_r = __pyx_t_1;
  __pyx_t_1 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":601
 *         return glpk.strong_comp(self._graph, v_num)
 * 
 *     def top_sort(self, int v_num):             # <<<<<<<<<<<<<<
 *         """Topological sorting of acyclic digraph"""
 *         return glpk.top_sort(self._graph, v_num)
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_AddTraceback("ecyglpki.Graph.top_sort", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

/* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":605
 *         return glpk.top_sort(self._graph, v_num)
 * 
 *     def wclique_exact(self, int v_wgt, int v_set):             # <<<<<<<<<<<<<<
 *         """Find maximum weight clique with exact algorithm"""
 *         cdef double sol
 */

/* Python wrapper */
static PyObject *__pyx_pw_8ecyglpki_5Graph_81wclique_exact(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds); /*proto*/
static char __pyx_doc_8ecyglpki_5Graph_80wclique_exact[] = "Graph.wclique_exact(self, int v_wgt, int v_set)\nFind maximum weight clique with exact algorithm";
static PyObject *__pyx_pw_8ecyglpki_5Graph_81wclique_exact(PyObject *__pyx_v_self, PyObject *__pyx_args, PyObject *__pyx_kwds) {
  int __pyx_v_v_wgt;
  int __pyx_v_v_set;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  PyObject *__pyx_r = 0;
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("wclique_exact (wrapper)", 0);
  {
    static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_v_wgt,&__pyx_n_s_v_set,0};
    PyObject* values[2] = {0,0};
    if (unlikely(__pyx_kwds)) {
      Py_ssize_t kw_args;
      const Py_ssize_t pos_args = PyTuple_GET_SIZE(__pyx_args);
      switch (pos_args) {
        case  2: values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
        case  1: values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
        case  0: break;
        default: goto __pyx_L5_argtuple_error;
      }
      kw_args = PyDict_Size(__pyx_kwds);
      switch (pos_args) {
        case  0:
        if (likely((values[0] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_wgt)) != 0)) kw_args--;
        else goto __pyx_L5_argtuple_error;
        case  1:
        if (likely((values[1] = PyDict_GetItem(__pyx_kwds, __pyx_n_s_v_set)) != 0)) kw_args--;
        else {
          __Pyx_RaiseArgtupleInvalid("wclique_exact", 1, 2, 2, 1); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
        }
      }
      if (unlikely(kw_args > 0)) {
        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "wclique_exact") < 0)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
      }
    } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
      goto __pyx_L5_argtuple_error;
    } else {
      values[0] = PyTuple_GET_ITEM(__pyx_args, 0);
      values[1] = PyTuple_GET_ITEM(__pyx_args, 1);
    }
    __pyx_v_v_wgt = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_v_wgt == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
    __pyx_v_v_set = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_v_set == (int)-1) && PyErr_Occurred())) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  }
  goto __pyx_L4_argument_unpacking_done;
  __pyx_L5_argtuple_error:;
  __Pyx_RaiseArgtupleInvalid("wclique_exact", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); {__pyx_filename = __pyx_f[7]; __pyx_lineno = 605; __pyx_clineno = __LINE__; goto __pyx_L3_error;}
  __pyx_L3_error:;
  __Pyx_AddTraceback("ecyglpki.Graph.wclique_exact", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __Pyx_RefNannyFinishContext();
  return NULL;
  __pyx_L4_argument_unpacking_done:;
  __pyx_r = __pyx_pf_8ecyglpki_5Graph_80wclique_exact(((struct __pyx_obj_8ecyglpki_Graph *)__pyx_v_self), __pyx_v_v_wgt, __pyx_v_v_set);

  /* function exit code */
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_pf_8ecyglpki_5Graph_80wclique_exact(struct __pyx_obj_8ecyglpki_Graph *__pyx_v_self, int __pyx_v_v_wgt, int __pyx_v_v_set) {
  double __pyx_v_sol;
  int __pyx_v_retcode;
  PyObject *__pyx_r = NULL;
  __Pyx_RefNannyDeclarations
  int __pyx_t_1;
  PyObject *__pyx_t_2 = NULL;
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannySetupContext("wclique_exact", 0);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":608
 *         """Find maximum weight clique with exact algorithm"""
 *         cdef double sol
 *         retcode = glpk.wclique_exact(self._graph, v_wgt, &sol, v_set)             # <<<<<<<<<<<<<<
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]
 */
  __pyx_v_retcode = glp_wclique_exact(__pyx_v_self->_graph, __pyx_v_v_wgt, (&__pyx_v_sol), __pyx_v_v_set);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":609
 *         cdef double sol
 *         retcode = glpk.wclique_exact(self._graph, v_wgt, &sol, v_set)
 *         if retcode is not 0:             # <<<<<<<<<<<<<<
 *             raise ioretcode2error[retcode]
 *         return sol
 */
  __pyx_t_1 = ((__pyx_v_retcode != 0) != 0);
  if (__pyx_t_1) {

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":610
 *         retcode = glpk.wclique_exact(self._graph, v_wgt, &sol, v_set)
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]             # <<<<<<<<<<<<<<
 *         return sol
 */
    __pyx_t_2 = __Pyx_GetItemInt(__pyx_v_8ecyglpki_ioretcode2error, __pyx_v_retcode, int, 1, __Pyx_PyInt_From_int, 0, 1, 1); if (unlikely(__pyx_t_2 == NULL)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 610; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_Raise(__pyx_t_2, 0, 0, 0);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    {__pyx_filename = __pyx_f[7]; __pyx_lineno = 610; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  }

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":611
 *         if retcode is not 0:
 *             raise ioretcode2error[retcode]
 *         return sol             # <<<<<<<<<<<<<<
 */
  __Pyx_XDECREF(__pyx_r);
  __pyx_t_2 = PyFloat_FromDouble(__pyx_v_sol); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 611; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_r = __pyx_t_2;
  __pyx_t_2 = 0;
  goto __pyx_L0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":605
 *         return glpk.top_sort(self._graph, v_num)
 * 
 *     def wclique_exact(self, int v_wgt, int v_set):             # <<<<<<<<<<<<<<
 *         """Find maximum weight clique with exact algorithm"""
 *         cdef double sol
 */

  /* function exit code */
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_AddTraceback("ecyglpki.Graph.wclique_exact", __pyx_clineno, __pyx_lineno, __pyx_filename);
  __pyx_r = NULL;
  __pyx_L0:;
  __Pyx_XGIVEREF(__pyx_r);
  __Pyx_RefNannyFinishContext();
  return __pyx_r;
}

static PyObject *__pyx_tp_new_8ecyglpki_SimplexControls(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_8ecyglpki_15SimplexControls_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki_SimplexControls(PyObject *o) {
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_msg_lev(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_7msg_lev_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_msg_lev(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_7msg_lev_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_meth(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_4meth_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_meth(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_4meth_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_pricing(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_7pricing_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_pricing(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_7pricing_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_r_test(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_6r_test_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_r_test(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_6r_test_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_tol_bnd(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_7tol_bnd_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_tol_bnd(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_7tol_bnd_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_tol_dj(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_6tol_dj_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_tol_dj(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_6tol_dj_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_tol_piv(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_7tol_piv_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_tol_piv(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_7tol_piv_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_obj_ll(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_6obj_ll_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_obj_ll(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_6obj_ll_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_obj_ul(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_6obj_ul_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_obj_ul(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_6obj_ul_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_it_lim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_6it_lim_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_it_lim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_6it_lim_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_tm_lim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_6tm_lim_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_tm_lim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_6tm_lim_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_out_frq(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_7out_frq_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_out_frq(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_7out_frq_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_out_dly(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_7out_dly_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_out_dly(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_7out_dly_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_15SimplexControls_presolve(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_15SimplexControls_8presolve_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_15SimplexControls_presolve(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_15SimplexControls_8presolve_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_8ecyglpki_SimplexControls[] = {
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8ecyglpki_SimplexControls[] = {
  {(char *)"msg_lev", __pyx_getprop_8ecyglpki_15SimplexControls_msg_lev, __pyx_setprop_8ecyglpki_15SimplexControls_msg_lev, __Pyx_DOCSTR(__pyx_k_The_message_level_a_str_The_poss), 0},
  {(char *)"meth", __pyx_getprop_8ecyglpki_15SimplexControls_meth, __pyx_setprop_8ecyglpki_15SimplexControls_meth, __Pyx_DOCSTR(__pyx_k_The_simplex_method_a_str_The_pos), 0},
  {(char *)"pricing", __pyx_getprop_8ecyglpki_15SimplexControls_pricing, __pyx_setprop_8ecyglpki_15SimplexControls_pricing, __Pyx_DOCSTR(__pyx_k_The_pricing_technique_a_str_The), 0},
  {(char *)"r_test", __pyx_getprop_8ecyglpki_15SimplexControls_r_test, __pyx_setprop_8ecyglpki_15SimplexControls_r_test, __Pyx_DOCSTR(__pyx_k_The_ratio_test_technique_a_str_T), 0},
  {(char *)"tol_bnd", __pyx_getprop_8ecyglpki_15SimplexControls_tol_bnd, __pyx_setprop_8ecyglpki_15SimplexControls_tol_bnd, __Pyx_DOCSTR(__pyx_k_Tolerance_to_check_if_the_soluti), 0},
  {(char *)"tol_dj", __pyx_getprop_8ecyglpki_15SimplexControls_tol_dj, __pyx_setprop_8ecyglpki_15SimplexControls_tol_dj, __Pyx_DOCSTR(__pyx_k_Tolerance_to_check_if_the_soluti_2), 0},
  {(char *)"tol_piv", __pyx_getprop_8ecyglpki_15SimplexControls_tol_piv, __pyx_setprop_8ecyglpki_15SimplexControls_tol_piv, __Pyx_DOCSTR(__pyx_k_Tolerance_to_choose_eligble_pivo), 0},
  {(char *)"obj_ll", __pyx_getprop_8ecyglpki_15SimplexControls_obj_ll, __pyx_setprop_8ecyglpki_15SimplexControls_obj_ll, __Pyx_DOCSTR(__pyx_k_Lower_limit_of_the_objective_fun), 0},
  {(char *)"obj_ul", __pyx_getprop_8ecyglpki_15SimplexControls_obj_ul, __pyx_setprop_8ecyglpki_15SimplexControls_obj_ul, __Pyx_DOCSTR(__pyx_k_Upper_limit_of_the_objective_fun), 0},
  {(char *)"it_lim", __pyx_getprop_8ecyglpki_15SimplexControls_it_lim, __pyx_setprop_8ecyglpki_15SimplexControls_it_lim, __Pyx_DOCSTR(__pyx_k_Iteration_limit_an_int), 0},
  {(char *)"tm_lim", __pyx_getprop_8ecyglpki_15SimplexControls_tm_lim, __pyx_setprop_8ecyglpki_15SimplexControls_tm_lim, __Pyx_DOCSTR(__pyx_k_Time_limit_ms_an_int), 0},
  {(char *)"out_frq", __pyx_getprop_8ecyglpki_15SimplexControls_out_frq, __pyx_setprop_8ecyglpki_15SimplexControls_out_frq, __Pyx_DOCSTR(__pyx_k_Output_frequency_iterations_of_i), 0},
  {(char *)"out_dly", __pyx_getprop_8ecyglpki_15SimplexControls_out_dly, __pyx_setprop_8ecyglpki_15SimplexControls_out_dly, __Pyx_DOCSTR(__pyx_k_Output_delay_ms_of_solution_proc), 0},
  {(char *)"presolve", __pyx_getprop_8ecyglpki_15SimplexControls_presolve, __pyx_setprop_8ecyglpki_15SimplexControls_presolve, __Pyx_DOCSTR(__pyx_k_Whether_to_use_the_LP_presolver), 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_8ecyglpki_SimplexControls = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.SimplexControls"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki_SimplexControls), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki_SimplexControls, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("The simplex solver control parameter object\n\n    .. doctest:: SimplexControls\n\n        >>> r = SimplexControls()\n\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8ecyglpki_SimplexControls, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8ecyglpki_SimplexControls, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki_SimplexControls, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyObject *__pyx_tp_new_8ecyglpki_FactorizationControls(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_8ecyglpki_21FactorizationControls_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki_FactorizationControls(PyObject *o) {
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_8ecyglpki_21FactorizationControls_type(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_21FactorizationControls_4type_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_21FactorizationControls_type(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_21FactorizationControls_4type_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_21FactorizationControls_piv_tol(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_21FactorizationControls_7piv_tol_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_21FactorizationControls_piv_tol(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_21FactorizationControls_7piv_tol_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_21FactorizationControls_piv_lim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_21FactorizationControls_7piv_lim_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_21FactorizationControls_piv_lim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_21FactorizationControls_7piv_lim_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_21FactorizationControls_suhl(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_21FactorizationControls_4suhl_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_21FactorizationControls_suhl(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_21FactorizationControls_4suhl_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_21FactorizationControls_eps_tol(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_21FactorizationControls_7eps_tol_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_21FactorizationControls_eps_tol(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_21FactorizationControls_7eps_tol_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_21FactorizationControls_nfs_max(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_21FactorizationControls_7nfs_max_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_21FactorizationControls_nfs_max(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_21FactorizationControls_7nfs_max_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_21FactorizationControls_nrs_max(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_21FactorizationControls_7nrs_max_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_21FactorizationControls_nrs_max(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_21FactorizationControls_7nrs_max_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_8ecyglpki_FactorizationControls[] = {
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8ecyglpki_FactorizationControls[] = {
  {(char *)"type", __pyx_getprop_8ecyglpki_21FactorizationControls_type, __pyx_setprop_8ecyglpki_21FactorizationControls_type, __Pyx_DOCSTR(__pyx_k_The_basis_factorization_type_str), 0},
  {(char *)"piv_tol", __pyx_getprop_8ecyglpki_21FactorizationControls_piv_tol, __pyx_setprop_8ecyglpki_21FactorizationControls_piv_tol, __Pyx_DOCSTR(__pyx_k_Markowitz_threshold_pivoting_tol), 0},
  {(char *)"piv_lim", __pyx_getprop_8ecyglpki_21FactorizationControls_piv_lim, __pyx_setprop_8ecyglpki_21FactorizationControls_piv_lim, __Pyx_DOCSTR(__pyx_k_Number_of_pivot_candidates_that), 0},
  {(char *)"suhl", __pyx_getprop_8ecyglpki_21FactorizationControls_suhl, __pyx_setprop_8ecyglpki_21FactorizationControls_suhl, __Pyx_DOCSTR(__pyx_k_Whether_to_use_Suhl_heuristic_a), 0},
  {(char *)"eps_tol", __pyx_getprop_8ecyglpki_21FactorizationControls_eps_tol, __pyx_setprop_8ecyglpki_21FactorizationControls_eps_tol, __Pyx_DOCSTR(__pyx_k_Tolerance_below_which_numbers_ar), 0},
  {(char *)"nfs_max", __pyx_getprop_8ecyglpki_21FactorizationControls_nfs_max, __pyx_setprop_8ecyglpki_21FactorizationControls_nfs_max, __Pyx_DOCSTR(__pyx_k_Maximal_number_of_additional_row), 0},
  {(char *)"nrs_max", __pyx_getprop_8ecyglpki_21FactorizationControls_nrs_max, __pyx_setprop_8ecyglpki_21FactorizationControls_nrs_max, __Pyx_DOCSTR(__pyx_k_Maximal_number_of_additional_row_2), 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_8ecyglpki_FactorizationControls = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.FactorizationControls"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki_FactorizationControls), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki_FactorizationControls, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("The basis factorization control parameter object\n\n    .. doctest:: FactorizationControls\n\n        >>> p = Problem()\n        >>> r = FactorizationControls(p)\n\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8ecyglpki_FactorizationControls, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8ecyglpki_FactorizationControls, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki_FactorizationControls, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyObject *__pyx_tp_new_8ecyglpki_IPointControls(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_8ecyglpki_14IPointControls_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki_IPointControls(PyObject *o) {
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_8ecyglpki_14IPointControls_msg_lev(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IPointControls_7msg_lev_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IPointControls_msg_lev(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IPointControls_7msg_lev_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IPointControls_ord_alg(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IPointControls_7ord_alg_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IPointControls_ord_alg(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IPointControls_7ord_alg_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_8ecyglpki_IPointControls[] = {
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8ecyglpki_IPointControls[] = {
  {(char *)"msg_lev", __pyx_getprop_8ecyglpki_14IPointControls_msg_lev, __pyx_setprop_8ecyglpki_14IPointControls_msg_lev, __Pyx_DOCSTR(__pyx_k_The_message_level_a_str_The_poss_2), 0},
  {(char *)"ord_alg", __pyx_getprop_8ecyglpki_14IPointControls_ord_alg, __pyx_setprop_8ecyglpki_14IPointControls_ord_alg, __Pyx_DOCSTR(__pyx_k_The_ordering_algorithm_used_prio), 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_8ecyglpki_IPointControls = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.IPointControls"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki_IPointControls), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki_IPointControls, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("The interior point solver control parameter object\n\n    .. doctest:: IPointControls\n\n        >>> r = IPointControls()\n\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8ecyglpki_IPointControls, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8ecyglpki_IPointControls, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki_IPointControls, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyObject *__pyx_tp_new_8ecyglpki_CallbackFunction(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_8ecyglpki_16CallbackFunction_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki_CallbackFunction(PyObject *o) {
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_8ecyglpki_CallbackFunction[] = {
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_8ecyglpki_CallbackFunction = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.CallbackFunction"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki_CallbackFunction), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki_CallbackFunction, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("The callback function wrapper"), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8ecyglpki_CallbackFunction, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki_CallbackFunction, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyObject *__pyx_tp_new_8ecyglpki_CallbackInfo(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_8ecyglpki_12CallbackInfo_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki_CallbackInfo(PyObject *o) {
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_8ecyglpki_CallbackInfo[] = {
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_8ecyglpki_CallbackInfo = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.CallbackInfo"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki_CallbackInfo), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki_CallbackInfo, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("The callback function info reference"), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8ecyglpki_CallbackInfo, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki_CallbackInfo, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyObject *__pyx_tp_new_8ecyglpki_IntOptControls(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_8ecyglpki_14IntOptControls_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki_IntOptControls(PyObject *o) {
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_msg_lev(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7msg_lev_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_msg_lev(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7msg_lev_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_out_frq(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7out_frq_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_out_frq(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7out_frq_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_out_dly(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7out_dly_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_out_dly(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7out_dly_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_cb_func(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7cb_func_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_cb_func(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7cb_func_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_cb_info(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7cb_info_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_cb_info(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7cb_info_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_cb_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7cb_size_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_cb_size(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7cb_size_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_tm_lim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_6tm_lim_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_tm_lim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_6tm_lim_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_br_tech(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7br_tech_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_br_tech(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7br_tech_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_bt_tech(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7bt_tech_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_bt_tech(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7bt_tech_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_pp_tech(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7pp_tech_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_pp_tech(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7pp_tech_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_fp_heur(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7fp_heur_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_fp_heur(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7fp_heur_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_ps_heur(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7ps_heur_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_ps_heur(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7ps_heur_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_ps_tm_lim(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_9ps_tm_lim_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_ps_tm_lim(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_9ps_tm_lim_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_gmi_cuts(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_8gmi_cuts_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_gmi_cuts(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_8gmi_cuts_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_mir_cuts(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_8mir_cuts_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_mir_cuts(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_8mir_cuts_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_cov_cuts(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_8cov_cuts_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_cov_cuts(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_8cov_cuts_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_clq_cuts(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_8clq_cuts_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_clq_cuts(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_8clq_cuts_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_tol_int(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7tol_int_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_tol_int(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7tol_int_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_tol_obj(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7tol_obj_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_tol_obj(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7tol_obj_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_mip_gap(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_7mip_gap_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_mip_gap(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_7mip_gap_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_presolve(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_8presolve_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_presolve(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_8presolve_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyObject *__pyx_getprop_8ecyglpki_14IntOptControls_binarize(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_14IntOptControls_8binarize_1__get__(o);
}

static int __pyx_setprop_8ecyglpki_14IntOptControls_binarize(PyObject *o, PyObject *v, CYTHON_UNUSED void *x) {
  if (v) {
    return __pyx_pw_8ecyglpki_14IntOptControls_8binarize_3__set__(o, v);
  }
  else {
    PyErr_SetString(PyExc_NotImplementedError, "__del__");
    return -1;
  }
}

static PyMethodDef __pyx_methods_8ecyglpki_IntOptControls[] = {
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8ecyglpki_IntOptControls[] = {
  {(char *)"msg_lev", __pyx_getprop_8ecyglpki_14IntOptControls_msg_lev, __pyx_setprop_8ecyglpki_14IntOptControls_msg_lev, __Pyx_DOCSTR(__pyx_k_The_message_level_a_str_The_poss_3), 0},
  {(char *)"out_frq", __pyx_getprop_8ecyglpki_14IntOptControls_out_frq, __pyx_setprop_8ecyglpki_14IntOptControls_out_frq, __Pyx_DOCSTR(__pyx_k_Output_frequency_ms_of_informati), 0},
  {(char *)"out_dly", __pyx_getprop_8ecyglpki_14IntOptControls_out_dly, __pyx_setprop_8ecyglpki_14IntOptControls_out_dly, __Pyx_DOCSTR(__pyx_k_Output_delay_ms_of_current_LP_re), 0},
  {(char *)"cb_func", __pyx_getprop_8ecyglpki_14IntOptControls_cb_func, __pyx_setprop_8ecyglpki_14IntOptControls_cb_func, __Pyx_DOCSTR(__pyx_k_Callback_routine), 0},
  {(char *)"cb_info", __pyx_getprop_8ecyglpki_14IntOptControls_cb_info, __pyx_setprop_8ecyglpki_14IntOptControls_cb_info, __Pyx_DOCSTR(__pyx_k_Transit_pointer_passed_to_the_ro), 0},
  {(char *)"cb_size", __pyx_getprop_8ecyglpki_14IntOptControls_cb_size, __pyx_setprop_8ecyglpki_14IntOptControls_cb_size, __Pyx_DOCSTR(__pyx_k_Number_of_extra_bytes_allocated), 0},
  {(char *)"tm_lim", __pyx_getprop_8ecyglpki_14IntOptControls_tm_lim, __pyx_setprop_8ecyglpki_14IntOptControls_tm_lim, __Pyx_DOCSTR(__pyx_k_Time_limit_ms_an_int), 0},
  {(char *)"br_tech", __pyx_getprop_8ecyglpki_14IntOptControls_br_tech, __pyx_setprop_8ecyglpki_14IntOptControls_br_tech, __Pyx_DOCSTR(__pyx_k_The_branching_technique_a_str_Th), 0},
  {(char *)"bt_tech", __pyx_getprop_8ecyglpki_14IntOptControls_bt_tech, __pyx_setprop_8ecyglpki_14IntOptControls_bt_tech, __Pyx_DOCSTR(__pyx_k_The_backtracking_technique_a_str), 0},
  {(char *)"pp_tech", __pyx_getprop_8ecyglpki_14IntOptControls_pp_tech, __pyx_setprop_8ecyglpki_14IntOptControls_pp_tech, __Pyx_DOCSTR(__pyx_k_The_preprocessing_technique_a_st), 0},
  {(char *)"fp_heur", __pyx_getprop_8ecyglpki_14IntOptControls_fp_heur, __pyx_setprop_8ecyglpki_14IntOptControls_fp_heur, __Pyx_DOCSTR(__pyx_k_Whether_to_apply_the_feasibility), 0},
  {(char *)"ps_heur", __pyx_getprop_8ecyglpki_14IntOptControls_ps_heur, __pyx_setprop_8ecyglpki_14IntOptControls_ps_heur, __Pyx_DOCSTR(__pyx_k_Whether_to_apply_the_proximity_s), 0},
  {(char *)"ps_tm_lim", __pyx_getprop_8ecyglpki_14IntOptControls_ps_tm_lim, __pyx_setprop_8ecyglpki_14IntOptControls_ps_tm_lim, __Pyx_DOCSTR(__pyx_k_Time_limit_ms_for_the_proximity), 0},
  {(char *)"gmi_cuts", __pyx_getprop_8ecyglpki_14IntOptControls_gmi_cuts, __pyx_setprop_8ecyglpki_14IntOptControls_gmi_cuts, __Pyx_DOCSTR(__pyx_k_Whether_to_generate_Gomorys_mixe), 0},
  {(char *)"mir_cuts", __pyx_getprop_8ecyglpki_14IntOptControls_mir_cuts, __pyx_setprop_8ecyglpki_14IntOptControls_mir_cuts, __Pyx_DOCSTR(__pyx_k_Whether_to_generate_mixed_intege), 0},
  {(char *)"cov_cuts", __pyx_getprop_8ecyglpki_14IntOptControls_cov_cuts, __pyx_setprop_8ecyglpki_14IntOptControls_cov_cuts, __Pyx_DOCSTR(__pyx_k_Whether_to_generate_mixed_cover), 0},
  {(char *)"clq_cuts", __pyx_getprop_8ecyglpki_14IntOptControls_clq_cuts, __pyx_setprop_8ecyglpki_14IntOptControls_clq_cuts, __Pyx_DOCSTR(__pyx_k_Whether_to_generate_generate_cli), 0},
  {(char *)"tol_int", __pyx_getprop_8ecyglpki_14IntOptControls_tol_int, __pyx_setprop_8ecyglpki_14IntOptControls_tol_int, __Pyx_DOCSTR(__pyx_k_Abs_tolerance_for_LP_solution_in), 0},
  {(char *)"tol_obj", __pyx_getprop_8ecyglpki_14IntOptControls_tol_obj, __pyx_setprop_8ecyglpki_14IntOptControls_tol_obj, __Pyx_DOCSTR(__pyx_k_Rel_tolerance_of_LP_objective_op), 0},
  {(char *)"mip_gap", __pyx_getprop_8ecyglpki_14IntOptControls_mip_gap, __pyx_setprop_8ecyglpki_14IntOptControls_mip_gap, __Pyx_DOCSTR(__pyx_k_The_relative_MIP_gap_tolerance_a), 0},
  {(char *)"presolve", __pyx_getprop_8ecyglpki_14IntOptControls_presolve, __pyx_setprop_8ecyglpki_14IntOptControls_presolve, __Pyx_DOCSTR(__pyx_k_Whether_to_use_the_MIP_presolver), 0},
  {(char *)"binarize", __pyx_getprop_8ecyglpki_14IntOptControls_binarize, __pyx_setprop_8ecyglpki_14IntOptControls_binarize, __Pyx_DOCSTR(__pyx_k_Whether_to_binarize_integer_vari), 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_8ecyglpki_IntOptControls = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.IntOptControls"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki_IntOptControls), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki_IntOptControls, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("The integer optimization solver control parameter object\n\n    .. doctest:: IntOptControls\n\n        >>> r = IntOptControls()\n\n    "), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8ecyglpki_IntOptControls, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8ecyglpki_IntOptControls, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki_IntOptControls, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyObject *__pyx_tp_new_8ecyglpki_Problem(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_8ecyglpki_7Problem_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki_Problem(PyObject *o) {
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pw_8ecyglpki_7Problem_5__dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyMethodDef __pyx_methods_8ecyglpki_Problem[] = {
  {__Pyx_NAMESTR("_prob_ptr"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_3_prob_ptr, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_2_prob_ptr)},
  {__Pyx_NAMESTR("set_prob_name"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_7set_prob_name, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_6set_prob_name)},
  {__Pyx_NAMESTR("set_obj_name"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_9set_obj_name, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_8set_obj_name)},
  {__Pyx_NAMESTR("set_obj_dir"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_11set_obj_dir, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_10set_obj_dir)},
  {__Pyx_NAMESTR("add_rows"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_13add_rows, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_12add_rows)},
  {__Pyx_NAMESTR("add_named_rows"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_15add_named_rows, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_14add_named_rows)},
  {__Pyx_NAMESTR("add_cols"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_17add_cols, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_16add_cols)},
  {__Pyx_NAMESTR("add_named_cols"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_19add_named_cols, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_18add_named_cols)},
  {__Pyx_NAMESTR("set_row_name"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_21set_row_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_20set_row_name)},
  {__Pyx_NAMESTR("set_col_name"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_23set_col_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_22set_col_name)},
  {__Pyx_NAMESTR("set_row_bnds"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_25set_row_bnds, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_24set_row_bnds)},
  {__Pyx_NAMESTR("set_col_bnds"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_27set_col_bnds, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_26set_col_bnds)},
  {__Pyx_NAMESTR("set_obj_coef"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_29set_obj_coef, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_28set_obj_coef)},
  {__Pyx_NAMESTR("set_obj_const"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_31set_obj_const, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_30set_obj_const)},
  {__Pyx_NAMESTR("set_mat_row"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_33set_mat_row, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_32set_mat_row)},
  {__Pyx_NAMESTR("clear_mat_row"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_35clear_mat_row, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_34clear_mat_row)},
  {__Pyx_NAMESTR("set_mat_col"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_37set_mat_col, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_36set_mat_col)},
  {__Pyx_NAMESTR("clear_mat_col"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_39clear_mat_col, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_38clear_mat_col)},
  {__Pyx_NAMESTR("load_matrix"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_41load_matrix, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_40load_matrix)},
  {__Pyx_NAMESTR("sort_matrix"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_43sort_matrix, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_42sort_matrix)},
  {__Pyx_NAMESTR("clear_matrix"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_45clear_matrix, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_44clear_matrix)},
  {__Pyx_NAMESTR("del_rows"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_47del_rows, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_46del_rows)},
  {__Pyx_NAMESTR("del_cols"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_49del_cols, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_48del_cols)},
  {__Pyx_NAMESTR("copy_prob"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_51copy_prob, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_50copy_prob)},
  {__Pyx_NAMESTR("erase_prob"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_53erase_prob, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_52erase_prob)},
  {__Pyx_NAMESTR("get_prob_name"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_55get_prob_name, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_54get_prob_name)},
  {__Pyx_NAMESTR("get_obj_name"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_57get_obj_name, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_56get_obj_name)},
  {__Pyx_NAMESTR("get_obj_dir"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_59get_obj_dir, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_58get_obj_dir)},
  {__Pyx_NAMESTR("get_num_rows"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_61get_num_rows, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_60get_num_rows)},
  {__Pyx_NAMESTR("get_num_cols"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_63get_num_cols, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_62get_num_cols)},
  {__Pyx_NAMESTR("get_row_name"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_65get_row_name, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_64get_row_name)},
  {__Pyx_NAMESTR("get_row_name_if"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_67get_row_name_if, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_66get_row_name_if)},
  {__Pyx_NAMESTR("get_col_name"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_69get_col_name, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_68get_col_name)},
  {__Pyx_NAMESTR("get_col_name_if"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_71get_col_name_if, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_70get_col_name_if)},
  {__Pyx_NAMESTR("get_row_or_col_name"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_73get_row_or_col_name, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_72get_row_or_col_name)},
  {__Pyx_NAMESTR("get_row_or_col_name_if"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_75get_row_or_col_name_if, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_74get_row_or_col_name_if)},
  {__Pyx_NAMESTR("get_row_type"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_77get_row_type, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_76get_row_type)},
  {__Pyx_NAMESTR("get_row_lb"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_79get_row_lb, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_78get_row_lb)},
  {__Pyx_NAMESTR("get_row_ub"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_81get_row_ub, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_80get_row_ub)},
  {__Pyx_NAMESTR("get_col_type"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_83get_col_type, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_82get_col_type)},
  {__Pyx_NAMESTR("get_col_lb"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_85get_col_lb, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_84get_col_lb)},
  {__Pyx_NAMESTR("get_col_ub"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_87get_col_ub, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_86get_col_ub)},
  {__Pyx_NAMESTR("get_obj_coef"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_89get_obj_coef, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_88get_obj_coef)},
  {__Pyx_NAMESTR("get_obj_const"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_91get_obj_const, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_90get_obj_const)},
  {__Pyx_NAMESTR("get_num_nz"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_93get_num_nz, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_92get_num_nz)},
  {__Pyx_NAMESTR("get_mat_row"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_95get_mat_row, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_94get_mat_row)},
  {__Pyx_NAMESTR("get_mat_col"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_97get_mat_col, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_96get_mat_col)},
  {__Pyx_NAMESTR("find_row"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_99find_row, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_98find_row)},
  {__Pyx_NAMESTR("find_row_as_needed"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_101find_row_as_needed, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_100find_row_as_needed)},
  {__Pyx_NAMESTR("find_col"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_103find_col, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_102find_col)},
  {__Pyx_NAMESTR("find_col_as_needed"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_105find_col_as_needed, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_104find_col_as_needed)},
  {__Pyx_NAMESTR("find_row_or_col_as_needed"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_107find_row_or_col_as_needed, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_106find_row_or_col_as_needed)},
  {__Pyx_NAMESTR("set_rii"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_109set_rii, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_108set_rii)},
  {__Pyx_NAMESTR("set_sjj"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_111set_sjj, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_110set_sjj)},
  {__Pyx_NAMESTR("get_rii"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_113get_rii, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_112get_rii)},
  {__Pyx_NAMESTR("get_sjj"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_115get_sjj, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_114get_sjj)},
  {__Pyx_NAMESTR("scale_prob"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_117scale_prob, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_116scale_prob)},
  {__Pyx_NAMESTR("unscale_prob"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_119unscale_prob, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_118unscale_prob)},
  {__Pyx_NAMESTR("set_row_stat"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_121set_row_stat, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_120set_row_stat)},
  {__Pyx_NAMESTR("set_col_stat"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_123set_col_stat, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_122set_col_stat)},
  {__Pyx_NAMESTR("std_basis"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_125std_basis, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_124std_basis)},
  {__Pyx_NAMESTR("adv_basis"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_127adv_basis, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_126adv_basis)},
  {__Pyx_NAMESTR("cpx_basis"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_129cpx_basis, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_128cpx_basis)},
  {__Pyx_NAMESTR("simplex"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_131simplex, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_130simplex)},
  {__Pyx_NAMESTR("exact"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_133exact, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_132exact)},
  {__Pyx_NAMESTR("get_status"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_135get_status, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_134get_status)},
  {__Pyx_NAMESTR("get_prim_stat"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_137get_prim_stat, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_136get_prim_stat)},
  {__Pyx_NAMESTR("get_dual_stat"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_139get_dual_stat, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_138get_dual_stat)},
  {__Pyx_NAMESTR("get_obj_val"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_141get_obj_val, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_140get_obj_val)},
  {__Pyx_NAMESTR("get_row_stat"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_143get_row_stat, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_142get_row_stat)},
  {__Pyx_NAMESTR("get_row_prim"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_145get_row_prim, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_144get_row_prim)},
  {__Pyx_NAMESTR("get_row_dual"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_147get_row_dual, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_146get_row_dual)},
  {__Pyx_NAMESTR("get_col_stat"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_149get_col_stat, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_148get_col_stat)},
  {__Pyx_NAMESTR("get_col_prim"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_151get_col_prim, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_150get_col_prim)},
  {__Pyx_NAMESTR("get_col_dual"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_153get_col_dual, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_152get_col_dual)},
  {__Pyx_NAMESTR("get_unbnd_ray"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_155get_unbnd_ray, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_154get_unbnd_ray)},
  {__Pyx_NAMESTR("interior"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_157interior, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_156interior)},
  {__Pyx_NAMESTR("ipt_status"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_159ipt_status, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_158ipt_status)},
  {__Pyx_NAMESTR("ipt_obj_val"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_161ipt_obj_val, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_160ipt_obj_val)},
  {__Pyx_NAMESTR("ipt_row_prim"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_163ipt_row_prim, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_162ipt_row_prim)},
  {__Pyx_NAMESTR("ipt_row_dual"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_165ipt_row_dual, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_164ipt_row_dual)},
  {__Pyx_NAMESTR("ipt_col_prim"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_167ipt_col_prim, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_166ipt_col_prim)},
  {__Pyx_NAMESTR("ipt_col_dual"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_169ipt_col_dual, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_168ipt_col_dual)},
  {__Pyx_NAMESTR("set_col_kind"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_171set_col_kind, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_170set_col_kind)},
  {__Pyx_NAMESTR("get_col_kind"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_173get_col_kind, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_172get_col_kind)},
  {__Pyx_NAMESTR("get_num_int"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_175get_num_int, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_174get_num_int)},
  {__Pyx_NAMESTR("get_num_bin"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_177get_num_bin, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_176get_num_bin)},
  {__Pyx_NAMESTR("intopt"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_179intopt, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_178intopt)},
  {__Pyx_NAMESTR("mip_status"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_181mip_status, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_180mip_status)},
  {__Pyx_NAMESTR("mip_obj_val"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_183mip_obj_val, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_182mip_obj_val)},
  {__Pyx_NAMESTR("mip_row_val"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_185mip_row_val, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_184mip_row_val)},
  {__Pyx_NAMESTR("mip_col_val"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_187mip_col_val, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_186mip_col_val)},
  {__Pyx_NAMESTR("check_kkt"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_189check_kkt, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_188check_kkt)},
  {__Pyx_NAMESTR("print_sol"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_191print_sol, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_190print_sol)},
  {__Pyx_NAMESTR("read_sol"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_193read_sol, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_192read_sol)},
  {__Pyx_NAMESTR("write_sol"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_195write_sol, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_194write_sol)},
  {__Pyx_NAMESTR("print_ranges"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_197print_ranges, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_196print_ranges)},
  {__Pyx_NAMESTR("print_ipt"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_199print_ipt, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_198print_ipt)},
  {__Pyx_NAMESTR("read_ipt"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_201read_ipt, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_200read_ipt)},
  {__Pyx_NAMESTR("write_ipt"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_203write_ipt, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_202write_ipt)},
  {__Pyx_NAMESTR("print_mip"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_205print_mip, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_204print_mip)},
  {__Pyx_NAMESTR("read_mip"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_207read_mip, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_206read_mip)},
  {__Pyx_NAMESTR("write_mip"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_209write_mip, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_208write_mip)},
  {__Pyx_NAMESTR("bf_exists"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_211bf_exists, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_210bf_exists)},
  {__Pyx_NAMESTR("factorize"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_213factorize, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_212factorize)},
  {__Pyx_NAMESTR("bf_updated"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_215bf_updated, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_214bf_updated)},
  {__Pyx_NAMESTR("get_bfcp"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_217get_bfcp, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_216get_bfcp)},
  {__Pyx_NAMESTR("set_bfcp"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_219set_bfcp, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_218set_bfcp)},
  {__Pyx_NAMESTR("get_bhead"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_221get_bhead, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_220get_bhead)},
  {__Pyx_NAMESTR("get_row_bind"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_223get_row_bind, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_222get_row_bind)},
  {__Pyx_NAMESTR("get_col_bind"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_225get_col_bind, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_224get_col_bind)},
  {__Pyx_NAMESTR("ftran"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_227ftran, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_226ftran)},
  {__Pyx_NAMESTR("btran"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_229btran, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_228btran)},
  {__Pyx_NAMESTR("warm_up"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_231warm_up, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_230warm_up)},
  {__Pyx_NAMESTR("eval_tab_row"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_233eval_tab_row, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_232eval_tab_row)},
  {__Pyx_NAMESTR("eval_tab_col"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_235eval_tab_col, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_234eval_tab_col)},
  {__Pyx_NAMESTR("transform_row"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_237transform_row, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_236transform_row)},
  {__Pyx_NAMESTR("transform_col"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_239transform_col, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_238transform_col)},
  {__Pyx_NAMESTR("prim_rtest"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_241prim_rtest, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_240prim_rtest)},
  {__Pyx_NAMESTR("dual_rtest"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_243dual_rtest, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_242dual_rtest)},
  {__Pyx_NAMESTR("analyze_bound"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_245analyze_bound, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_244analyze_bound)},
  {__Pyx_NAMESTR("analyze_coef"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_247analyze_coef, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_246analyze_coef)},
  {__Pyx_NAMESTR("read_mps"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_249read_mps, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_248read_mps)},
  {__Pyx_NAMESTR("write_mps"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_251write_mps, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_250write_mps)},
  {__Pyx_NAMESTR("read_lp"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_253read_lp, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_252read_lp)},
  {__Pyx_NAMESTR("write_lp"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_255write_lp, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_254write_lp)},
  {__Pyx_NAMESTR("read_prob"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_257read_prob, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_256read_prob)},
  {__Pyx_NAMESTR("write_prob"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_259write_prob, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_258write_prob)},
  {__Pyx_NAMESTR("read_cnfsat"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_261read_cnfsat, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_260read_cnfsat)},
  {__Pyx_NAMESTR("check_cnfsat"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_263check_cnfsat, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_262check_cnfsat)},
  {__Pyx_NAMESTR("write_cnfsat"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_265write_cnfsat, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_264write_cnfsat)},
  {__Pyx_NAMESTR("minisat1"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_267minisat1, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_266minisat1)},
  {__Pyx_NAMESTR("intfeas1"), (PyCFunction)__pyx_pw_8ecyglpki_7Problem_269intfeas1, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_7Problem_268intfeas1)},
  {0, 0, 0, 0}
};

static PyTypeObject __pyx_type_8ecyglpki_Problem = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.Problem"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki_Problem), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki_Problem, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("A GLPK problem"), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8ecyglpki_Problem, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki_Problem, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyObject *__pyx_tp_new_8ecyglpki_Tree(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  struct __pyx_obj_8ecyglpki_Tree *p;
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  p = ((struct __pyx_obj_8ecyglpki_Tree *)o);
  p->problem = ((struct __pyx_obj_8ecyglpki_Problem *)Py_None); Py_INCREF(Py_None);
  if (unlikely(__pyx_pw_8ecyglpki_4Tree_1__cinit__(o, __pyx_empty_tuple, NULL) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki_Tree(PyObject *o) {
  struct __pyx_obj_8ecyglpki_Tree *p = (struct __pyx_obj_8ecyglpki_Tree *)o;
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && !_PyGC_FINALIZED(o)) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->problem);
  (*Py_TYPE(o)->tp_free)(o);
}

static int __pyx_tp_traverse_8ecyglpki_Tree(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8ecyglpki_Tree *p = (struct __pyx_obj_8ecyglpki_Tree *)o;
  if (p->problem) {
    e = (*v)(((PyObject*)p->problem), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8ecyglpki_Tree(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8ecyglpki_Tree *p = (struct __pyx_obj_8ecyglpki_Tree *)o;
  tmp = ((PyObject*)p->problem);
  p->problem = ((struct __pyx_obj_8ecyglpki_Problem *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyObject *__pyx_getprop_8ecyglpki_4Tree_problem(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_4Tree_7problem_1__get__(o);
}

static PyMethodDef __pyx_methods_8ecyglpki_Tree[] = {
  {__Pyx_NAMESTR("ios_reason"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_3ios_reason, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_2ios_reason)},
  {__Pyx_NAMESTR("ios_tree_size"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_5ios_tree_size, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_4ios_tree_size)},
  {__Pyx_NAMESTR("ios_curr_node"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_7ios_curr_node, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_6ios_curr_node)},
  {__Pyx_NAMESTR("ios_next_node"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_9ios_next_node, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_8ios_next_node)},
  {__Pyx_NAMESTR("ios_first_node"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_11ios_first_node, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_10ios_first_node)},
  {__Pyx_NAMESTR("ios_prev_node"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_13ios_prev_node, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_12ios_prev_node)},
  {__Pyx_NAMESTR("ios_last_node"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_15ios_last_node, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_14ios_last_node)},
  {__Pyx_NAMESTR("ios_up_node"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_17ios_up_node, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_16ios_up_node)},
  {__Pyx_NAMESTR("ios_node_level"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_19ios_node_level, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_18ios_node_level)},
  {__Pyx_NAMESTR("ios_node_bound"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_21ios_node_bound, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_20ios_node_bound)},
  {__Pyx_NAMESTR("ios_best_node"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_23ios_best_node, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_22ios_best_node)},
  {__Pyx_NAMESTR("ios_mip_gap"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_25ios_mip_gap, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_24ios_mip_gap)},
  {__Pyx_NAMESTR("ios_node_data"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_27ios_node_data, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_26ios_node_data)},
  {__Pyx_NAMESTR("ios_row_attr"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_29ios_row_attr, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_28ios_row_attr)},
  {__Pyx_NAMESTR("ios_pool_size"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_31ios_pool_size, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_30ios_pool_size)},
  {__Pyx_NAMESTR("ios_add_row"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_33ios_add_row, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_32ios_add_row)},
  {__Pyx_NAMESTR("ios_del_row"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_35ios_del_row, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_34ios_del_row)},
  {__Pyx_NAMESTR("ios_clear_pool"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_37ios_clear_pool, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_36ios_clear_pool)},
  {__Pyx_NAMESTR("ios_can_branch"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_39ios_can_branch, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_38ios_can_branch)},
  {__Pyx_NAMESTR("ios_branch_upon"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_41ios_branch_upon, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_40ios_branch_upon)},
  {__Pyx_NAMESTR("ios_select_node"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_43ios_select_node, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_42ios_select_node)},
  {__Pyx_NAMESTR("ios_heur_sol"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_45ios_heur_sol, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_44ios_heur_sol)},
  {__Pyx_NAMESTR("ios_terminate"), (PyCFunction)__pyx_pw_8ecyglpki_4Tree_47ios_terminate, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_4Tree_46ios_terminate)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8ecyglpki_Tree[] = {
  {(char *)"problem", __pyx_getprop_8ecyglpki_4Tree_problem, 0, 0, 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_8ecyglpki_Tree = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.Tree"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki_Tree), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki_Tree, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  __Pyx_DOCSTR("A GLPK search tree"), /*tp_doc*/
  __pyx_tp_traverse_8ecyglpki_Tree, /*tp_traverse*/
  __pyx_tp_clear_8ecyglpki_Tree, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8ecyglpki_Tree, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8ecyglpki_Tree, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki_Tree, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyObject *__pyx_tp_new_8ecyglpki_Vertex(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_8ecyglpki_6Vertex_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki_Vertex(PyObject *o) {
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_8ecyglpki_6Vertex_i(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_6Vertex_1i_1__get__(o);
}

static PyObject *__pyx_getprop_8ecyglpki_6Vertex_name(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_6Vertex_4name_1__get__(o);
}

static PyObject *__pyx_getprop_8ecyglpki_6Vertex_inc(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_6Vertex_3inc_1__get__(o);
}

static PyObject *__pyx_getprop_8ecyglpki_6Vertex_out(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_6Vertex_3out_1__get__(o);
}

static PyMethodDef __pyx_methods_8ecyglpki_Vertex[] = {
  {__Pyx_NAMESTR("_vertex_ptr"), (PyCFunction)__pyx_pw_8ecyglpki_6Vertex_3_vertex_ptr, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_6Vertex_2_vertex_ptr)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8ecyglpki_Vertex[] = {
  {(char *)"i", __pyx_getprop_8ecyglpki_6Vertex_i, 0, __Pyx_DOCSTR(__pyx_k_Vertex_ordinal_number_an_int), 0},
  {(char *)"name", __pyx_getprop_8ecyglpki_6Vertex_name, 0, __Pyx_DOCSTR(__pyx_k_Vertex_name_a_str), 0},
  {(char *)"inc", __pyx_getprop_8ecyglpki_6Vertex_inc, 0, __Pyx_DOCSTR(__pyx_k_First_incoming_arc_an_Arc), 0},
  {(char *)"out", __pyx_getprop_8ecyglpki_6Vertex_out, 0, __Pyx_DOCSTR(__pyx_k_First_outgoing_arc_an_Arc), 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_8ecyglpki_Vertex = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.Vertex"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki_Vertex), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki_Vertex, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("A GLPK graph vertex"), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8ecyglpki_Vertex, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8ecyglpki_Vertex, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki_Vertex, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyObject *__pyx_tp_new_8ecyglpki_Arc(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_8ecyglpki_3Arc_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki_Arc(PyObject *o) {
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_8ecyglpki_3Arc_tail(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_3Arc_4tail_1__get__(o);
}

static PyObject *__pyx_getprop_8ecyglpki_3Arc_head(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_3Arc_4head_1__get__(o);
}

static PyObject *__pyx_getprop_8ecyglpki_3Arc_t_prev(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_3Arc_6t_prev_1__get__(o);
}

static PyObject *__pyx_getprop_8ecyglpki_3Arc_t_next(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_3Arc_6t_next_1__get__(o);
}

static PyObject *__pyx_getprop_8ecyglpki_3Arc_h_prev(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_3Arc_6h_prev_1__get__(o);
}

static PyObject *__pyx_getprop_8ecyglpki_3Arc_h_next(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_3Arc_6h_next_1__get__(o);
}

static PyMethodDef __pyx_methods_8ecyglpki_Arc[] = {
  {__Pyx_NAMESTR("_arc_ptr"), (PyCFunction)__pyx_pw_8ecyglpki_3Arc_3_arc_ptr, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_3Arc_2_arc_ptr)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8ecyglpki_Arc[] = {
  {(char *)"tail", __pyx_getprop_8ecyglpki_3Arc_tail, 0, __Pyx_DOCSTR(__pyx_k_Tail_vertex_a_Vertex), 0},
  {(char *)"head", __pyx_getprop_8ecyglpki_3Arc_head, 0, __Pyx_DOCSTR(__pyx_k_Head_vertex_a_Vertex), 0},
  {(char *)"t_prev", __pyx_getprop_8ecyglpki_3Arc_t_prev, 0, __Pyx_DOCSTR(__pyx_k_Previous_arc_having_the_same_tai), 0},
  {(char *)"t_next", __pyx_getprop_8ecyglpki_3Arc_t_next, 0, __Pyx_DOCSTR(__pyx_k_Next_arc_having_the_same_tail_en), 0},
  {(char *)"h_prev", __pyx_getprop_8ecyglpki_3Arc_h_prev, 0, __Pyx_DOCSTR(__pyx_k_Previous_arc_having_the_same_hea), 0},
  {(char *)"h_next", __pyx_getprop_8ecyglpki_3Arc_h_next, 0, __Pyx_DOCSTR(__pyx_k_Next_arc_having_the_same_head_en), 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_8ecyglpki_Arc = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.Arc"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki_Arc), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki_Arc, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("A GLPK graph arc"), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8ecyglpki_Arc, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8ecyglpki_Arc, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki_Arc, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyObject *__pyx_tp_new_8ecyglpki_Graph(PyTypeObject *t, PyObject *a, PyObject *k) {
  PyObject *o;
  if (likely((t->tp_flags & Py_TPFLAGS_IS_ABSTRACT) == 0)) {
    o = (*t->tp_alloc)(t, 0);
  } else {
    o = (PyObject *) PyBaseObject_Type.tp_new(t, __pyx_empty_tuple, 0);
  }
  if (unlikely(!o)) return 0;
  if (unlikely(__pyx_pw_8ecyglpki_5Graph_1__cinit__(o, a, k) < 0)) {
    Py_DECREF(o); o = 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki_Graph(PyObject *o) {
  #if PY_VERSION_HEX >= 0x030400a1
  if (unlikely(Py_TYPE(o)->tp_finalize) && (!PyType_IS_GC(Py_TYPE(o)) || !_PyGC_FINALIZED(o))) {
    if (PyObject_CallFinalizerFromDealloc(o)) return;
  }
  #endif
  {
    PyObject *etype, *eval, *etb;
    PyErr_Fetch(&etype, &eval, &etb);
    ++Py_REFCNT(o);
    __pyx_pw_8ecyglpki_5Graph_5__dealloc__(o);
    --Py_REFCNT(o);
    PyErr_Restore(etype, eval, etb);
  }
  (*Py_TYPE(o)->tp_free)(o);
}

static PyObject *__pyx_getprop_8ecyglpki_5Graph_nv(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_5Graph_2nv_1__get__(o);
}

static PyObject *__pyx_getprop_8ecyglpki_5Graph_na(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_5Graph_2na_1__get__(o);
}

static PyObject *__pyx_getprop_8ecyglpki_5Graph_v_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_5Graph_6v_size_1__get__(o);
}

static PyObject *__pyx_getprop_8ecyglpki_5Graph_a_size(PyObject *o, CYTHON_UNUSED void *x) {
  return __pyx_pw_8ecyglpki_5Graph_6a_size_1__get__(o);
}

static PyMethodDef __pyx_methods_8ecyglpki_Graph[] = {
  {__Pyx_NAMESTR("_graph_ptr"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_3_graph_ptr, METH_NOARGS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_2_graph_ptr)},
  {__Pyx_NAMESTR("set_graph_name"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_7set_graph_name, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_6set_graph_name)},
  {__Pyx_NAMESTR("add_vertices"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_9add_vertices, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_8add_vertices)},
  {__Pyx_NAMESTR("add_named_vertices"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_11add_named_vertices, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_10add_named_vertices)},
  {__Pyx_NAMESTR("set_vertex_name"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_13set_vertex_name, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_12set_vertex_name)},
  {__Pyx_NAMESTR("add_arc"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_15add_arc, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_14add_arc)},
  {__Pyx_NAMESTR("del_vertices"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_17del_vertices, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_16del_vertices)},
  {__Pyx_NAMESTR("del_arc"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_19del_arc, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_18del_arc)},
  {__Pyx_NAMESTR("erase_graph"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_21erase_graph, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_20erase_graph)},
  {__Pyx_NAMESTR("find_vertex"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_23find_vertex, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_22find_vertex)},
  {__Pyx_NAMESTR("find_vertex_as_needed"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_25find_vertex_as_needed, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_24find_vertex_as_needed)},
  {__Pyx_NAMESTR("get_vertex_object"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_27get_vertex_object, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_26get_vertex_object)},
  {__Pyx_NAMESTR("read_graph"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_29read_graph, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_28read_graph)},
  {__Pyx_NAMESTR("write_graph"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_31write_graph, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_30write_graph)},
  {__Pyx_NAMESTR("mincost_lp"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_33mincost_lp, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_32mincost_lp)},
  {__Pyx_NAMESTR("mincost_okalg"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_35mincost_okalg, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_34mincost_okalg)},
  {__Pyx_NAMESTR("mincost_relax4"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_37mincost_relax4, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_36mincost_relax4)},
  {__Pyx_NAMESTR("maxflow_lp"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_39maxflow_lp, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_38maxflow_lp)},
  {__Pyx_NAMESTR("maxflow_ffalg"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_41maxflow_ffalg, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_40maxflow_ffalg)},
  {__Pyx_NAMESTR("check_asnprob"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_43check_asnprob, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_42check_asnprob)},
  {__Pyx_NAMESTR("asnprob_lp"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_45asnprob_lp, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_44asnprob_lp)},
  {__Pyx_NAMESTR("asnprob_okalg"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_47asnprob_okalg, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_46asnprob_okalg)},
  {__Pyx_NAMESTR("asnprob_hall"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_49asnprob_hall, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_48asnprob_hall)},
  {__Pyx_NAMESTR("cpp"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_51cpp, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_50cpp)},
  {__Pyx_NAMESTR("read_mincost"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_53read_mincost, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_52read_mincost)},
  {__Pyx_NAMESTR("write_mincost"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_55write_mincost, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_54write_mincost)},
  {__Pyx_NAMESTR("read_maxflow"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_57read_maxflow, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_56read_maxflow)},
  {__Pyx_NAMESTR("write_maxflow"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_59write_maxflow, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_58write_maxflow)},
  {__Pyx_NAMESTR("read_asnprob"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_61read_asnprob, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_60read_asnprob)},
  {__Pyx_NAMESTR("write_asnprob"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_63write_asnprob, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_62write_asnprob)},
  {__Pyx_NAMESTR("read_ccdata"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_65read_ccdata, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_64read_ccdata)},
  {__Pyx_NAMESTR("write_ccdata"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_67write_ccdata, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_66write_ccdata)},
  {__Pyx_NAMESTR("netgen"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_69netgen, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_68netgen)},
  {__Pyx_NAMESTR("gridgen"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_71gridgen, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_70gridgen)},
  {__Pyx_NAMESTR("rmfgen"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_73rmfgen, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_72rmfgen)},
  {__Pyx_NAMESTR("weak_comp"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_75weak_comp, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_74weak_comp)},
  {__Pyx_NAMESTR("strong_comp"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_77strong_comp, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_76strong_comp)},
  {__Pyx_NAMESTR("top_sort"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_79top_sort, METH_O, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_78top_sort)},
  {__Pyx_NAMESTR("wclique_exact"), (PyCFunction)__pyx_pw_8ecyglpki_5Graph_81wclique_exact, METH_VARARGS|METH_KEYWORDS, __Pyx_DOCSTR(__pyx_doc_8ecyglpki_5Graph_80wclique_exact)},
  {0, 0, 0, 0}
};

static struct PyGetSetDef __pyx_getsets_8ecyglpki_Graph[] = {
  {(char *)"nv", __pyx_getprop_8ecyglpki_5Graph_nv, 0, __Pyx_DOCSTR(__pyx_k_The_number_of_vertices_in_the_gr), 0},
  {(char *)"na", __pyx_getprop_8ecyglpki_5Graph_na, 0, __Pyx_DOCSTR(__pyx_k_The_number_of_arcs_in_the_graph), 0},
  {(char *)"v_size", __pyx_getprop_8ecyglpki_5Graph_v_size, 0, __Pyx_DOCSTR(__pyx_k_Size_of_data_associated_with_eac), 0},
  {(char *)"a_size", __pyx_getprop_8ecyglpki_5Graph_a_size, 0, __Pyx_DOCSTR(__pyx_k_size_of_data_associated_with_eac), 0},
  {0, 0, 0, 0, 0}
};

static PyTypeObject __pyx_type_8ecyglpki_Graph = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.Graph"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki_Graph), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki_Graph, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_BASETYPE, /*tp_flags*/
  __Pyx_DOCSTR("A GLPK graph"), /*tp_doc*/
  0, /*tp_traverse*/
  0, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  __pyx_methods_8ecyglpki_Graph, /*tp_methods*/
  0, /*tp_members*/
  __pyx_getsets_8ecyglpki_Graph, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki_Graph, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix *__pyx_freelist_8ecyglpki___pyx_scope_struct__load_matrix[8];
static int __pyx_freecount_8ecyglpki___pyx_scope_struct__load_matrix = 0;

static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct__load_matrix(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_8ecyglpki___pyx_scope_struct__load_matrix > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix)))) {
    o = (PyObject*)__pyx_freelist_8ecyglpki___pyx_scope_struct__load_matrix[--__pyx_freecount_8ecyglpki___pyx_scope_struct__load_matrix];
    memset(o, 0, sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct__load_matrix(PyObject *o) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_coeffs);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_8ecyglpki___pyx_scope_struct__load_matrix < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix)))) {
    __pyx_freelist_8ecyglpki___pyx_scope_struct__load_matrix[__pyx_freecount_8ecyglpki___pyx_scope_struct__load_matrix++] = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_8ecyglpki___pyx_scope_struct__load_matrix(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix *)o;
  if (p->__pyx_v_coeffs) {
    e = (*v)(p->__pyx_v_coeffs, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8ecyglpki___pyx_scope_struct__load_matrix(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix *)o;
  tmp = ((PyObject*)p->__pyx_v_coeffs);
  p->__pyx_v_coeffs = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_8ecyglpki___pyx_scope_struct__load_matrix = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.__pyx_scope_struct__load_matrix"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct__load_matrix, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_8ecyglpki___pyx_scope_struct__load_matrix, /*tp_traverse*/
  __pyx_tp_clear_8ecyglpki___pyx_scope_struct__load_matrix, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki___pyx_scope_struct__load_matrix, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr *__pyx_freelist_8ecyglpki___pyx_scope_struct_1_genexpr[8];
static int __pyx_freecount_8ecyglpki___pyx_scope_struct_1_genexpr = 0;

static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_1_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_8ecyglpki___pyx_scope_struct_1_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr)))) {
    o = (PyObject*)__pyx_freelist_8ecyglpki___pyx_scope_struct_1_genexpr[--__pyx_freecount_8ecyglpki___pyx_scope_struct_1_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_1_genexpr(PyObject *o) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_key);
  Py_CLEAR(p->__pyx_t_0);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_8ecyglpki___pyx_scope_struct_1_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr)))) {
    __pyx_freelist_8ecyglpki___pyx_scope_struct_1_genexpr[__pyx_freecount_8ecyglpki___pyx_scope_struct_1_genexpr++] = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_1_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_v_key) {
    e = (*v)(p->__pyx_v_key, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8ecyglpki___pyx_scope_struct_1_genexpr(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr *)o;
  tmp = ((PyObject*)p->__pyx_outer_scope);
  p->__pyx_outer_scope = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct__load_matrix *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_key);
  p->__pyx_v_key = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_0);
  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_8ecyglpki___pyx_scope_struct_1_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.__pyx_scope_struct_1_genexpr"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_1_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_1_genexpr, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_1_genexpr, /*tp_traverse*/
  __pyx_tp_clear_8ecyglpki___pyx_scope_struct_1_genexpr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki___pyx_scope_struct_1_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob *__pyx_freelist_8ecyglpki___pyx_scope_struct_2_scale_prob[8];
static int __pyx_freecount_8ecyglpki___pyx_scope_struct_2_scale_prob = 0;

static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_2_scale_prob(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_8ecyglpki___pyx_scope_struct_2_scale_prob > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob)))) {
    o = (PyObject*)__pyx_freelist_8ecyglpki___pyx_scope_struct_2_scale_prob[--__pyx_freecount_8ecyglpki___pyx_scope_struct_2_scale_prob];
    memset(o, 0, sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_2_scale_prob(PyObject *o) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_algorithms);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_8ecyglpki___pyx_scope_struct_2_scale_prob < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob)))) {
    __pyx_freelist_8ecyglpki___pyx_scope_struct_2_scale_prob[__pyx_freecount_8ecyglpki___pyx_scope_struct_2_scale_prob++] = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_2_scale_prob(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob *)o;
  if (p->__pyx_v_algorithms) {
    e = (*v)(p->__pyx_v_algorithms, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8ecyglpki___pyx_scope_struct_2_scale_prob(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob *)o;
  tmp = ((PyObject*)p->__pyx_v_algorithms);
  p->__pyx_v_algorithms = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_8ecyglpki___pyx_scope_struct_2_scale_prob = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.__pyx_scope_struct_2_scale_prob"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_2_scale_prob, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_2_scale_prob, /*tp_traverse*/
  __pyx_tp_clear_8ecyglpki___pyx_scope_struct_2_scale_prob, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki___pyx_scope_struct_2_scale_prob, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr *__pyx_freelist_8ecyglpki___pyx_scope_struct_3_genexpr[8];
static int __pyx_freecount_8ecyglpki___pyx_scope_struct_3_genexpr = 0;

static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_3_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_8ecyglpki___pyx_scope_struct_3_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr)))) {
    o = (PyObject*)__pyx_freelist_8ecyglpki___pyx_scope_struct_3_genexpr[--__pyx_freecount_8ecyglpki___pyx_scope_struct_3_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_3_genexpr(PyObject *o) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_algorithm);
  Py_CLEAR(p->__pyx_t_0);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_8ecyglpki___pyx_scope_struct_3_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr)))) {
    __pyx_freelist_8ecyglpki___pyx_scope_struct_3_genexpr[__pyx_freecount_8ecyglpki___pyx_scope_struct_3_genexpr++] = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_3_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_v_algorithm) {
    e = (*v)(p->__pyx_v_algorithm, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8ecyglpki___pyx_scope_struct_3_genexpr(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr *)o;
  tmp = ((PyObject*)p->__pyx_outer_scope);
  p->__pyx_outer_scope = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_2_scale_prob *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_algorithm);
  p->__pyx_v_algorithm = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_0);
  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_8ecyglpki___pyx_scope_struct_3_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.__pyx_scope_struct_3_genexpr"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_3_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_3_genexpr, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_3_genexpr, /*tp_traverse*/
  __pyx_tp_clear_8ecyglpki___pyx_scope_struct_3_genexpr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki___pyx_scope_struct_3_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *__pyx_freelist_8ecyglpki___pyx_scope_struct_4_ftran[8];
static int __pyx_freecount_8ecyglpki___pyx_scope_struct_4_ftran = 0;

static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_4_ftran(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_8ecyglpki___pyx_scope_struct_4_ftran > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran)))) {
    o = (PyObject*)__pyx_freelist_8ecyglpki___pyx_scope_struct_4_ftran[--__pyx_freecount_8ecyglpki___pyx_scope_struct_4_ftran];
    memset(o, 0, sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_4_ftran(PyObject *o) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_rhs);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_8ecyglpki___pyx_scope_struct_4_ftran < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran)))) {
    __pyx_freelist_8ecyglpki___pyx_scope_struct_4_ftran[__pyx_freecount_8ecyglpki___pyx_scope_struct_4_ftran++] = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_4_ftran(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *)o;
  if (p->__pyx_v_rhs) {
    e = (*v)(p->__pyx_v_rhs, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8ecyglpki___pyx_scope_struct_4_ftran(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *)o;
  tmp = ((PyObject*)p->__pyx_v_rhs);
  p->__pyx_v_rhs = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_8ecyglpki___pyx_scope_struct_4_ftran = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.__pyx_scope_struct_4_ftran"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_4_ftran, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_4_ftran, /*tp_traverse*/
  __pyx_tp_clear_8ecyglpki___pyx_scope_struct_4_ftran, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki___pyx_scope_struct_4_ftran, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr *__pyx_freelist_8ecyglpki___pyx_scope_struct_5_genexpr[8];
static int __pyx_freecount_8ecyglpki___pyx_scope_struct_5_genexpr = 0;

static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_5_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_8ecyglpki___pyx_scope_struct_5_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr)))) {
    o = (PyObject*)__pyx_freelist_8ecyglpki___pyx_scope_struct_5_genexpr[--__pyx_freecount_8ecyglpki___pyx_scope_struct_5_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_5_genexpr(PyObject *o) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_value);
  Py_CLEAR(p->__pyx_t_0);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_8ecyglpki___pyx_scope_struct_5_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr)))) {
    __pyx_freelist_8ecyglpki___pyx_scope_struct_5_genexpr[__pyx_freecount_8ecyglpki___pyx_scope_struct_5_genexpr++] = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_5_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_v_value) {
    e = (*v)(p->__pyx_v_value, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8ecyglpki___pyx_scope_struct_5_genexpr(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr *)o;
  tmp = ((PyObject*)p->__pyx_outer_scope);
  p->__pyx_outer_scope = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_value);
  p->__pyx_v_value = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_0);
  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_8ecyglpki___pyx_scope_struct_5_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.__pyx_scope_struct_5_genexpr"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_5_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_5_genexpr, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_5_genexpr, /*tp_traverse*/
  __pyx_tp_clear_8ecyglpki___pyx_scope_struct_5_genexpr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki___pyx_scope_struct_5_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr *__pyx_freelist_8ecyglpki___pyx_scope_struct_6_genexpr[8];
static int __pyx_freecount_8ecyglpki___pyx_scope_struct_6_genexpr = 0;

static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_6_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_8ecyglpki___pyx_scope_struct_6_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr)))) {
    o = (PyObject*)__pyx_freelist_8ecyglpki___pyx_scope_struct_6_genexpr[--__pyx_freecount_8ecyglpki___pyx_scope_struct_6_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_6_genexpr(PyObject *o) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_8ecyglpki___pyx_scope_struct_6_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr)))) {
    __pyx_freelist_8ecyglpki___pyx_scope_struct_6_genexpr[__pyx_freecount_8ecyglpki___pyx_scope_struct_6_genexpr++] = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_6_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8ecyglpki___pyx_scope_struct_6_genexpr(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr *)o;
  tmp = ((PyObject*)p->__pyx_outer_scope);
  p->__pyx_outer_scope = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_4_ftran *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_8ecyglpki___pyx_scope_struct_6_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.__pyx_scope_struct_6_genexpr"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_6_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_6_genexpr, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_6_genexpr, /*tp_traverse*/
  __pyx_tp_clear_8ecyglpki___pyx_scope_struct_6_genexpr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki___pyx_scope_struct_6_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *__pyx_freelist_8ecyglpki___pyx_scope_struct_7_btran[8];
static int __pyx_freecount_8ecyglpki___pyx_scope_struct_7_btran = 0;

static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_7_btran(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_8ecyglpki___pyx_scope_struct_7_btran > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran)))) {
    o = (PyObject*)__pyx_freelist_8ecyglpki___pyx_scope_struct_7_btran[--__pyx_freecount_8ecyglpki___pyx_scope_struct_7_btran];
    memset(o, 0, sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_7_btran(PyObject *o) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_v_rhs);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_8ecyglpki___pyx_scope_struct_7_btran < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran)))) {
    __pyx_freelist_8ecyglpki___pyx_scope_struct_7_btran[__pyx_freecount_8ecyglpki___pyx_scope_struct_7_btran++] = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_7_btran(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *)o;
  if (p->__pyx_v_rhs) {
    e = (*v)(p->__pyx_v_rhs, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8ecyglpki___pyx_scope_struct_7_btran(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *)o;
  tmp = ((PyObject*)p->__pyx_v_rhs);
  p->__pyx_v_rhs = ((PyObject*)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_8ecyglpki___pyx_scope_struct_7_btran = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.__pyx_scope_struct_7_btran"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_7_btran, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_7_btran, /*tp_traverse*/
  __pyx_tp_clear_8ecyglpki___pyx_scope_struct_7_btran, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki___pyx_scope_struct_7_btran, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr *__pyx_freelist_8ecyglpki___pyx_scope_struct_8_genexpr[8];
static int __pyx_freecount_8ecyglpki___pyx_scope_struct_8_genexpr = 0;

static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_8_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_8ecyglpki___pyx_scope_struct_8_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr)))) {
    o = (PyObject*)__pyx_freelist_8ecyglpki___pyx_scope_struct_8_genexpr[--__pyx_freecount_8ecyglpki___pyx_scope_struct_8_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_8_genexpr(PyObject *o) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  Py_CLEAR(p->__pyx_v_value);
  Py_CLEAR(p->__pyx_t_0);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_8ecyglpki___pyx_scope_struct_8_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr)))) {
    __pyx_freelist_8ecyglpki___pyx_scope_struct_8_genexpr[__pyx_freecount_8ecyglpki___pyx_scope_struct_8_genexpr++] = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_8_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
  }
  if (p->__pyx_v_value) {
    e = (*v)(p->__pyx_v_value, a); if (e) return e;
  }
  if (p->__pyx_t_0) {
    e = (*v)(p->__pyx_t_0, a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8ecyglpki___pyx_scope_struct_8_genexpr(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr *)o;
  tmp = ((PyObject*)p->__pyx_outer_scope);
  p->__pyx_outer_scope = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_v_value);
  p->__pyx_v_value = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  tmp = ((PyObject*)p->__pyx_t_0);
  p->__pyx_t_0 = Py_None; Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_8ecyglpki___pyx_scope_struct_8_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.__pyx_scope_struct_8_genexpr"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_8_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_8_genexpr, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_8_genexpr, /*tp_traverse*/
  __pyx_tp_clear_8ecyglpki___pyx_scope_struct_8_genexpr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki___pyx_scope_struct_8_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr *__pyx_freelist_8ecyglpki___pyx_scope_struct_9_genexpr[8];
static int __pyx_freecount_8ecyglpki___pyx_scope_struct_9_genexpr = 0;

static PyObject *__pyx_tp_new_8ecyglpki___pyx_scope_struct_9_genexpr(PyTypeObject *t, CYTHON_UNUSED PyObject *a, CYTHON_UNUSED PyObject *k) {
  PyObject *o;
  if (CYTHON_COMPILING_IN_CPYTHON && likely((__pyx_freecount_8ecyglpki___pyx_scope_struct_9_genexpr > 0) & (t->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr)))) {
    o = (PyObject*)__pyx_freelist_8ecyglpki___pyx_scope_struct_9_genexpr[--__pyx_freecount_8ecyglpki___pyx_scope_struct_9_genexpr];
    memset(o, 0, sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr));
    (void) PyObject_INIT(o, t);
    PyObject_GC_Track(o);
  } else {
    o = (*t->tp_alloc)(t, 0);
    if (unlikely(!o)) return 0;
  }
  return o;
}

static void __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_9_genexpr(PyObject *o) {
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr *)o;
  PyObject_GC_UnTrack(o);
  Py_CLEAR(p->__pyx_outer_scope);
  if (CYTHON_COMPILING_IN_CPYTHON && ((__pyx_freecount_8ecyglpki___pyx_scope_struct_9_genexpr < 8) & (Py_TYPE(o)->tp_basicsize == sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr)))) {
    __pyx_freelist_8ecyglpki___pyx_scope_struct_9_genexpr[__pyx_freecount_8ecyglpki___pyx_scope_struct_9_genexpr++] = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr *)o);
  } else {
    (*Py_TYPE(o)->tp_free)(o);
  }
}

static int __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_9_genexpr(PyObject *o, visitproc v, void *a) {
  int e;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr *)o;
  if (p->__pyx_outer_scope) {
    e = (*v)(((PyObject*)p->__pyx_outer_scope), a); if (e) return e;
  }
  return 0;
}

static int __pyx_tp_clear_8ecyglpki___pyx_scope_struct_9_genexpr(PyObject *o) {
  PyObject* tmp;
  struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr *p = (struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr *)o;
  tmp = ((PyObject*)p->__pyx_outer_scope);
  p->__pyx_outer_scope = ((struct __pyx_obj_8ecyglpki___pyx_scope_struct_7_btran *)Py_None); Py_INCREF(Py_None);
  Py_XDECREF(tmp);
  return 0;
}

static PyTypeObject __pyx_type_8ecyglpki___pyx_scope_struct_9_genexpr = {
  PyVarObject_HEAD_INIT(0, 0)
  __Pyx_NAMESTR("ecyglpki.__pyx_scope_struct_9_genexpr"), /*tp_name*/
  sizeof(struct __pyx_obj_8ecyglpki___pyx_scope_struct_9_genexpr), /*tp_basicsize*/
  0, /*tp_itemsize*/
  __pyx_tp_dealloc_8ecyglpki___pyx_scope_struct_9_genexpr, /*tp_dealloc*/
  0, /*tp_print*/
  0, /*tp_getattr*/
  0, /*tp_setattr*/
  #if PY_MAJOR_VERSION < 3
  0, /*tp_compare*/
  #else
  0, /*reserved*/
  #endif
  0, /*tp_repr*/
  0, /*tp_as_number*/
  0, /*tp_as_sequence*/
  0, /*tp_as_mapping*/
  0, /*tp_hash*/
  0, /*tp_call*/
  0, /*tp_str*/
  0, /*tp_getattro*/
  0, /*tp_setattro*/
  0, /*tp_as_buffer*/
  Py_TPFLAGS_DEFAULT|Py_TPFLAGS_HAVE_VERSION_TAG|Py_TPFLAGS_CHECKTYPES|Py_TPFLAGS_HAVE_NEWBUFFER|Py_TPFLAGS_HAVE_GC, /*tp_flags*/
  0, /*tp_doc*/
  __pyx_tp_traverse_8ecyglpki___pyx_scope_struct_9_genexpr, /*tp_traverse*/
  __pyx_tp_clear_8ecyglpki___pyx_scope_struct_9_genexpr, /*tp_clear*/
  0, /*tp_richcompare*/
  0, /*tp_weaklistoffset*/
  0, /*tp_iter*/
  0, /*tp_iternext*/
  0, /*tp_methods*/
  0, /*tp_members*/
  0, /*tp_getset*/
  0, /*tp_base*/
  0, /*tp_dict*/
  0, /*tp_descr_get*/
  0, /*tp_descr_set*/
  0, /*tp_dictoffset*/
  0, /*tp_init*/
  0, /*tp_alloc*/
  __pyx_tp_new_8ecyglpki___pyx_scope_struct_9_genexpr, /*tp_new*/
  0, /*tp_free*/
  0, /*tp_is_gc*/
  0, /*tp_bases*/
  0, /*tp_mro*/
  0, /*tp_cache*/
  0, /*tp_subclasses*/
  0, /*tp_weaklist*/
  0, /*tp_del*/
  #if PY_VERSION_HEX >= 0x02060000
  0, /*tp_version_tag*/
  #endif
  #if PY_VERSION_HEX >= 0x030400a1
  0, /*tp_finalize*/
  #endif
};

static PyMethodDef __pyx_methods[] = {
  {0, 0, 0, 0}
};

#if PY_MAJOR_VERSION >= 3
static struct PyModuleDef __pyx_moduledef = {
  #if PY_VERSION_HEX < 0x03020000
    { PyObject_HEAD_INIT(NULL) NULL, 0, NULL },
  #else
    PyModuleDef_HEAD_INIT,
  #endif
    __Pyx_NAMESTR("ecyglpki"),
    0, /* m_doc */
    -1, /* m_size */
    __pyx_methods /* m_methods */,
    NULL, /* m_reload */
    NULL, /* m_traverse */
    NULL, /* m_clear */
    NULL /* m_free */
};
#endif

static __Pyx_StringTabEntry __pyx_string_tab[] = {
  {&__pyx_kp_s_All_problem_parameters_must_be_i, __pyx_k_All_problem_parameters_must_be_i, sizeof(__pyx_k_All_problem_parameters_must_be_i), 0, 0, 1, 0},
  {&__pyx_n_s_ArithmeticError, __pyx_k_ArithmeticError, sizeof(__pyx_k_ArithmeticError), 0, 0, 1, 1},
  {&__pyx_kp_s_Assignment_problem_data_is_incor, __pyx_k_Assignment_problem_data_is_incor, sizeof(__pyx_k_Assignment_problem_data_is_incor), 0, 0, 1, 0},
  {&__pyx_n_s_BTLU, __pyx_k_BTLU, sizeof(__pyx_k_BTLU), 0, 0, 1, 1},
  {&__pyx_kp_s_Bartels_Golub, __pyx_k_Bartels_Golub, sizeof(__pyx_k_Bartels_Golub), 0, 0, 1, 0},
  {&__pyx_kp_s_Basis_is_invalid, __pyx_k_Basis_is_invalid, sizeof(__pyx_k_Basis_is_invalid), 0, 0, 1, 0},
  {&__pyx_kp_s_Basis_matrix_is_ill_conditioned, __pyx_k_Basis_matrix_is_ill_conditioned, sizeof(__pyx_k_Basis_matrix_is_ill_conditioned), 0, 0, 1, 0},
  {&__pyx_kp_s_Basis_matrix_is_singular, __pyx_k_Basis_matrix_is_singular, sizeof(__pyx_k_Basis_matrix_is_singular), 0, 0, 1, 0},
  {&__pyx_kp_s_Branch_and_cut_callback_terminat, __pyx_k_Branch_and_cut_callback_terminat, sizeof(__pyx_k_Branch_and_cut_callback_terminat), 0, 0, 1, 0},
  {&__pyx_kp_s_Coefficient_keys_must_be_pairs, __pyx_k_Coefficient_keys_must_be_pairs, sizeof(__pyx_k_Coefficient_keys_must_be_pairs), 0, 0, 1, 0},
  {&__pyx_kp_s_Coefficient_values_must_be_Real, __pyx_k_Coefficient_values_must_be_Real, sizeof(__pyx_k_Coefficient_values_must_be_Real), 0, 0, 1, 0},
  {&__pyx_kp_s_Coefficients_must_be_passed_in_a, __pyx_k_Coefficients_must_be_passed_in_a, sizeof(__pyx_k_Coefficients_must_be_passed_in_a), 0, 0, 1, 0},
  {&__pyx_kp_s_Condition_is_either_equalities_o, __pyx_k_Condition_is_either_equalities_o, sizeof(__pyx_k_Condition_is_either_equalities_o), 0, 0, 1, 0},
  {&__pyx_n_s_Dantzig, __pyx_k_Dantzig, sizeof(__pyx_k_Dantzig), 0, 0, 1, 1},
  {&__pyx_kp_s_Driebeek_Tomlin, __pyx_k_Driebeek_Tomlin, sizeof(__pyx_k_Driebeek_Tomlin), 0, 0, 1, 0},
  {&__pyx_kp_s_Dual_conditions_cannot_be_checke, __pyx_k_Dual_conditions_cannot_be_checke, sizeof(__pyx_k_Dual_conditions_cannot_be_checke), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_assignment_problem_DIMACS, __pyx_k_Error_assignment_problem_DIMACS, sizeof(__pyx_k_Error_assignment_problem_DIMACS), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_reading_CNF_SAT_file, __pyx_k_Error_reading_CNF_SAT_file, sizeof(__pyx_k_Error_reading_CNF_SAT_file), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_reading_GLPK_file, __pyx_k_Error_reading_GLPK_file, sizeof(__pyx_k_Error_reading_GLPK_file), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_reading_LP_file, __pyx_k_Error_reading_LP_file, sizeof(__pyx_k_Error_reading_LP_file), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_reading_MPS_file, __pyx_k_Error_reading_MPS_file, sizeof(__pyx_k_Error_reading_MPS_file), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_reading_basic_solution_fil, __pyx_k_Error_reading_basic_solution_fil, sizeof(__pyx_k_Error_reading_basic_solution_fil), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_reading_graph_DIMACS_cliqu, __pyx_k_Error_reading_graph_DIMACS_cliqu, sizeof(__pyx_k_Error_reading_graph_DIMACS_cliqu), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_reading_graph_from_plain_t, __pyx_k_Error_reading_graph_from_plain_t, sizeof(__pyx_k_Error_reading_graph_from_plain_t), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_reading_integer_optimizati, __pyx_k_Error_reading_integer_optimizati, sizeof(__pyx_k_Error_reading_integer_optimizati), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_reading_interior_point_sol, __pyx_k_Error_reading_interior_point_sol, sizeof(__pyx_k_Error_reading_interior_point_sol), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_reading_maximum_flow_probl, __pyx_k_Error_reading_maximum_flow_probl, sizeof(__pyx_k_Error_reading_maximum_flow_probl), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_reading_min_cost_flow_prob, __pyx_k_Error_reading_min_cost_flow_prob, sizeof(__pyx_k_Error_reading_min_cost_flow_prob), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_CNF_SAT_file, __pyx_k_Error_writing_CNF_SAT_file, sizeof(__pyx_k_Error_writing_CNF_SAT_file), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_GLPK_file, __pyx_k_Error_writing_GLPK_file, sizeof(__pyx_k_Error_writing_GLPK_file), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_LP_file, __pyx_k_Error_writing_LP_file, sizeof(__pyx_k_Error_writing_LP_file), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_MPS_file, __pyx_k_Error_writing_MPS_file, sizeof(__pyx_k_Error_writing_MPS_file), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_assignment_problem, __pyx_k_Error_writing_assignment_problem, sizeof(__pyx_k_Error_writing_assignment_problem), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_basic_solution_fil, __pyx_k_Error_writing_basic_solution_fil, sizeof(__pyx_k_Error_writing_basic_solution_fil), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_graph_DIMACS_cliqu, __pyx_k_Error_writing_graph_DIMACS_cliqu, sizeof(__pyx_k_Error_writing_graph_DIMACS_cliqu), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_graph_plain_text_f, __pyx_k_Error_writing_graph_plain_text_f, sizeof(__pyx_k_Error_writing_graph_plain_text_f), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_integer_optimizati, __pyx_k_Error_writing_integer_optimizati, sizeof(__pyx_k_Error_writing_integer_optimizati), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_interior_point_sol, __pyx_k_Error_writing_interior_point_sol, sizeof(__pyx_k_Error_writing_interior_point_sol), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_maximum_flow_probl, __pyx_k_Error_writing_maximum_flow_probl, sizeof(__pyx_k_Error_writing_maximum_flow_probl), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_min_cost_flow_prob, __pyx_k_Error_writing_min_cost_flow_prob, sizeof(__pyx_k_Error_writing_min_cost_flow_prob), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_printable_basic_so, __pyx_k_Error_writing_printable_basic_so, sizeof(__pyx_k_Error_writing_printable_basic_so), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_printable_integer, __pyx_k_Error_writing_printable_integer, sizeof(__pyx_k_Error_writing_printable_integer), 0, 0, 1, 0},
  {&__pyx_kp_s_Error_writing_printable_interior, __pyx_k_Error_writing_printable_interior, sizeof(__pyx_k_Error_writing_printable_interior), 0, 0, 1, 0},
  {&__pyx_n_s_Exception, __pyx_k_Exception, sizeof(__pyx_k_Exception), 0, 0, 1, 1},
  {&__pyx_kp_s_Forrest_Tomlin, __pyx_k_Forrest_Tomlin, sizeof(__pyx_k_Forrest_Tomlin), 0, 0, 1, 0},
  {&__pyx_n_s_GLPK_version, __pyx_k_GLPK_version, sizeof(__pyx_k_GLPK_version), 0, 0, 1, 1},
  {&__pyx_n_s_Givens, __pyx_k_Givens, sizeof(__pyx_k_Givens), 0, 0, 1, 1},
  {&__pyx_n_s_Gomory, __pyx_k_Gomory, sizeof(__pyx_k_Gomory), 0, 0, 1, 1},
  {&__pyx_n_s_Harris, __pyx_k_Harris, sizeof(__pyx_k_Harris), 0, 0, 1, 1},
  {&__pyx_kp_s_Incorrect_bounds_given, __pyx_k_Incorrect_bounds_given, sizeof(__pyx_k_Incorrect_bounds_given), 0, 0, 1, 0},
  {&__pyx_kp_s_Incorrect_vertex_index, __pyx_k_Incorrect_vertex_index, sizeof(__pyx_k_Incorrect_vertex_index), 0, 0, 1, 0},
  {&__pyx_kp_s_Integer_overflow_occurred_when_t, __pyx_k_Integer_overflow_occurred_when_t, sizeof(__pyx_k_Integer_overflow_occurred_when_t), 0, 0, 1, 0},
  {&__pyx_kp_s_Iteration_limit_exceeded, __pyx_k_Iteration_limit_exceeded, sizeof(__pyx_k_Iteration_limit_exceeded), 0, 0, 1, 0},
  {&__pyx_kp_s_LP_relaxation_is_infeasible, __pyx_k_LP_relaxation_is_infeasible, sizeof(__pyx_k_LP_relaxation_is_infeasible), 0, 0, 1, 0},
  {&__pyx_kp_s_LP_relaxation_is_unbounded, __pyx_k_LP_relaxation_is_unbounded, sizeof(__pyx_k_LP_relaxation_is_unbounded), 0, 0, 1, 0},
  {&__pyx_n_s_LU, __pyx_k_LU, sizeof(__pyx_k_LU), 0, 0, 1, 1},
  {&__pyx_kp_s_Lower_bound, __pyx_k_Lower_bound, sizeof(__pyx_k_Lower_bound), 0, 0, 1, 0},
  {&__pyx_kp_s_Lower_bound_must_be_None_or_Real, __pyx_k_Lower_bound_must_be_None_or_Real, sizeof(__pyx_k_Lower_bound_must_be_None_or_Real), 0, 0, 1, 0},
  {&__pyx_n_s_Mapping, __pyx_k_Mapping, sizeof(__pyx_k_Mapping), 0, 0, 1, 1},
  {&__pyx_kp_s_Name_must_not_exceed_255_bytes, __pyx_k_Name_must_not_exceed_255_bytes, sizeof(__pyx_k_Name_must_not_exceed_255_bytes), 0, 0, 1, 0},
  {&__pyx_kp_s_Network_generator_parameters_are, __pyx_k_Network_generator_parameters_are, sizeof(__pyx_k_Network_generator_parameters_are), 0, 0, 1, 0},
  {&__pyx_kp_s_No_optimal_LP_relaxation_basis_p, __pyx_k_No_optimal_LP_relaxation_basis_p, sizeof(__pyx_k_No_optimal_LP_relaxation_basis_p), 0, 0, 1, 0},
  {&__pyx_kp_s_Numerical_instability, __pyx_k_Numerical_instability, sizeof(__pyx_k_Numerical_instability), 0, 0, 1, 0},
  {&__pyx_kp_s_Objective_function_limits_only_w, __pyx_k_Objective_function_limits_only_w, sizeof(__pyx_k_Objective_function_limits_only_w), 0, 0, 1, 0},
  {&__pyx_kp_s_Only_primal_simplex_with_exact_a, __pyx_k_Only_primal_simplex_with_exact_a, sizeof(__pyx_k_Only_primal_simplex_with_exact_a), 0, 0, 1, 0},
  {&__pyx_n_s_OverflowError, __pyx_k_OverflowError, sizeof(__pyx_k_OverflowError), 0, 0, 1, 1},
  {&__pyx_kp_s_Presolver_Problem_has_no_dual_fe, __pyx_k_Presolver_Problem_has_no_dual_fe, sizeof(__pyx_k_Presolver_Problem_has_no_dual_fe), 0, 0, 1, 0},
  {&__pyx_kp_s_Presolver_Problem_has_no_primal, __pyx_k_Presolver_Problem_has_no_primal, sizeof(__pyx_k_Presolver_Problem_has_no_primal), 0, 0, 1, 0},
  {&__pyx_n_s_Real, __pyx_k_Real, sizeof(__pyx_k_Real), 0, 0, 1, 1},
  {&__pyx_kp_s_Relative_mip_gap_tolerance_has_b, __pyx_k_Relative_mip_gap_tolerance_has_b, sizeof(__pyx_k_Relative_mip_gap_tolerance_has_b), 0, 0, 1, 0},
  {&__pyx_kp_s_Right_hand_side_must_contain_Rea, __pyx_k_Right_hand_side_must_contain_Rea, sizeof(__pyx_k_Right_hand_side_must_contain_Rea), 0, 0, 1, 0},
  {&__pyx_kp_s_Row_status_must_be_in, __pyx_k_Row_status_must_be_in, sizeof(__pyx_k_Row_status_must_be_in), 0, 0, 1, 0},
  {&__pyx_n_s_RuntimeError, __pyx_k_RuntimeError, sizeof(__pyx_k_RuntimeError), 0, 0, 1, 1},
  {&__pyx_n_s_Sequence, __pyx_k_Sequence, sizeof(__pyx_k_Sequence), 0, 0, 1, 1},
  {&__pyx_kp_s_Solution_rejected, __pyx_k_Solution_rejected, sizeof(__pyx_k_Solution_rejected), 0, 0, 1, 0},
  {&__pyx_kp_s_Solver_failure, __pyx_k_Solver_failure, sizeof(__pyx_k_Solver_failure), 0, 0, 1, 0},
  {&__pyx_n_s_StopIteration, __pyx_k_StopIteration, sizeof(__pyx_k_StopIteration), 0, 0, 1, 1},
  {&__pyx_kp_s_The_problem_has_no_rows_columns, __pyx_k_The_problem_has_no_rows_columns, sizeof(__pyx_k_The_problem_has_no_rows_columns), 0, 0, 1, 0},
  {&__pyx_kp_s_The_right_hand_side_vector_must, __pyx_k_The_right_hand_side_vector_must, sizeof(__pyx_k_The_right_hand_side_vector_must), 0, 0, 1, 0},
  {&__pyx_kp_s_The_search_tree_is_empty, __pyx_k_The_search_tree_is_empty, sizeof(__pyx_k_The_search_tree_is_empty), 0, 0, 1, 0},
  {&__pyx_kp_s_The_specified_graph_is_incorrect, __pyx_k_The_specified_graph_is_incorrect, sizeof(__pyx_k_The_specified_graph_is_incorrect), 0, 0, 1, 0},
  {&__pyx_kp_s_There_is_no_current_active_subpr, __pyx_k_There_is_no_current_active_subpr, sizeof(__pyx_k_There_is_no_current_active_subpr), 0, 0, 1, 0},
  {&__pyx_kp_s_There_is_no_next_active_subprobl, __pyx_k_There_is_no_next_active_subprobl, sizeof(__pyx_k_There_is_no_next_active_subprobl), 0, 0, 1, 0},
  {&__pyx_kp_s_There_is_no_previous_active_subp, __pyx_k_There_is_no_previous_active_subp, sizeof(__pyx_k_There_is_no_previous_active_subp), 0, 0, 1, 0},
  {&__pyx_kp_s_This_is_the_search_tree_root_it, __pyx_k_This_is_the_search_tree_root_it, sizeof(__pyx_k_This_is_the_search_tree_root_it), 0, 0, 1, 0},
  {&__pyx_kp_s_Time_limit_exceeded, __pyx_k_Time_limit_exceeded, sizeof(__pyx_k_Time_limit_exceeded), 0, 0, 1, 0},
  {&__pyx_n_s_TypeError, __pyx_k_TypeError, sizeof(__pyx_k_TypeError), 0, 0, 1, 1},
  {&__pyx_kp_s_Upper_bound_must_be_None_or_Real, __pyx_k_Upper_bound_must_be_None_or_Real, sizeof(__pyx_k_Upper_bound_must_be_None_or_Real), 0, 0, 1, 0},
  {&__pyx_n_s_ValueError, __pyx_k_ValueError, sizeof(__pyx_k_ValueError), 0, 0, 1, 1},
  {&__pyx_kp_s_Very_slow_convergence_or_diverge, __pyx_k_Very_slow_convergence_or_diverge, sizeof(__pyx_k_Very_slow_convergence_or_diverge), 0, 0, 1, 0},
  {&__pyx_kp_s__2, __pyx_k__2, sizeof(__pyx_k__2), 0, 0, 1, 0},
  {&__pyx_kp_s__4, __pyx_k__4, sizeof(__pyx_k__4), 0, 0, 1, 0},
  {&__pyx_kp_s__5, __pyx_k__5, sizeof(__pyx_k__5), 0, 0, 1, 0},
  {&__pyx_kp_s__7, __pyx_k__7, sizeof(__pyx_k__7), 0, 0, 1, 0},
  {&__pyx_kp_s__8, __pyx_k__8, sizeof(__pyx_k__8), 0, 0, 1, 0},
  {&__pyx_n_s_a, __pyx_k_a, sizeof(__pyx_k_a), 0, 0, 1, 1},
  {&__pyx_n_s_a_cap, __pyx_k_a_cap, sizeof(__pyx_k_a_cap), 0, 0, 1, 1},
  {&__pyx_n_s_a_cost, __pyx_k_a_cost, sizeof(__pyx_k_a_cost), 0, 0, 1, 1},
  {&__pyx_n_s_a_low, __pyx_k_a_low, sizeof(__pyx_k_a_low), 0, 0, 1, 1},
  {&__pyx_n_s_a_rc, __pyx_k_a_rc, sizeof(__pyx_k_a_rc), 0, 0, 1, 1},
  {&__pyx_n_s_a_x, __pyx_k_a_x, sizeof(__pyx_k_a_x), 0, 0, 1, 1},
  {&__pyx_n_s_abc, __pyx_k_abc, sizeof(__pyx_k_abc), 0, 0, 1, 1},
  {&__pyx_n_s_abs, __pyx_k_abs, sizeof(__pyx_k_abs), 0, 0, 1, 1},
  {&__pyx_n_s_active, __pyx_k_active, sizeof(__pyx_k_active), 0, 0, 1, 1},
  {&__pyx_n_s_add_cols, __pyx_k_add_cols, sizeof(__pyx_k_add_cols), 0, 0, 1, 1},
  {&__pyx_n_s_add_rows, __pyx_k_add_rows, sizeof(__pyx_k_add_rows), 0, 0, 1, 1},
  {&__pyx_n_s_add_vertices, __pyx_k_add_vertices, sizeof(__pyx_k_add_vertices), 0, 0, 1, 1},
  {&__pyx_n_s_all, __pyx_k_all, sizeof(__pyx_k_all), 0, 0, 1, 1},
  {&__pyx_n_s_amd, __pyx_k_amd, sizeof(__pyx_k_amd), 0, 0, 1, 1},
  {&__pyx_n_s_arc_data_size, __pyx_k_arc_data_size, sizeof(__pyx_k_arc_data_size), 0, 0, 1, 1},
  {&__pyx_n_s_arc_ptr, __pyx_k_arc_ptr, sizeof(__pyx_k_arc_ptr), 0, 0, 1, 1},
  {&__pyx_n_s_arc_ptr_2, __pyx_k_arc_ptr_2, sizeof(__pyx_k_arc_ptr_2), 0, 0, 1, 1},
  {&__pyx_n_s_args, __pyx_k_args, sizeof(__pyx_k_args), 0, 0, 1, 1},
  {&__pyx_n_s_asnform, __pyx_k_asnform, sizeof(__pyx_k_asnform), 0, 0, 1, 1},
  {&__pyx_n_s_auto, __pyx_k_auto, sizeof(__pyx_k_auto), 0, 0, 1, 1},
  {&__pyx_n_s_b, __pyx_k_b, sizeof(__pyx_k_b), 0, 0, 1, 1},
  {&__pyx_n_s_basic, __pyx_k_basic, sizeof(__pyx_k_basic), 0, 0, 1, 1},
  {&__pyx_n_s_binary, __pyx_k_binary, sizeof(__pyx_k_binary), 0, 0, 1, 1},
  {&__pyx_n_s_bound, __pyx_k_bound, sizeof(__pyx_k_bound), 0, 0, 1, 1},
  {&__pyx_n_s_bounded, __pyx_k_bounded, sizeof(__pyx_k_bounded), 0, 0, 1, 1},
  {&__pyx_n_s_bounds, __pyx_k_bounds, sizeof(__pyx_k_bounds), 0, 0, 1, 1},
  {&__pyx_n_s_branch, __pyx_k_branch, sizeof(__pyx_k_branch), 0, 0, 1, 1},
  {&__pyx_n_s_branchdir, __pyx_k_branchdir, sizeof(__pyx_k_branchdir), 0, 0, 1, 1},
  {&__pyx_n_s_breadth, __pyx_k_breadth, sizeof(__pyx_k_breadth), 0, 0, 1, 1},
  {&__pyx_n_s_c1, __pyx_k_c1, sizeof(__pyx_k_c1), 0, 0, 1, 1},
  {&__pyx_n_s_c2, __pyx_k_c2, sizeof(__pyx_k_c2), 0, 0, 1, 1},
  {&__pyx_n_s_caps_lb, __pyx_k_caps_lb, sizeof(__pyx_k_caps_lb), 0, 0, 1, 1},
  {&__pyx_n_s_caps_ub, __pyx_k_caps_ub, sizeof(__pyx_k_caps_ub), 0, 0, 1, 1},
  {&__pyx_kp_s_cb_size_must_be_an_int_between, __pyx_k_cb_size_must_be_an_int_between, sizeof(__pyx_k_cb_size_must_be_an_int_between), 0, 0, 1, 0},
  {&__pyx_n_s_cbfunc_ptr, __pyx_k_cbfunc_ptr, sizeof(__pyx_k_cbfunc_ptr), 0, 0, 1, 1},
  {&__pyx_n_s_cbinfo_ptr, __pyx_k_cbinfo_ptr, sizeof(__pyx_k_cbinfo_ptr), 0, 0, 1, 1},
  {&__pyx_n_s_class, __pyx_k_class, sizeof(__pyx_k_class), 0, 0, 1, 1},
  {&__pyx_n_s_clique, __pyx_k_clique, sizeof(__pyx_k_clique), 0, 0, 1, 1},
  {&__pyx_n_s_close, __pyx_k_close, sizeof(__pyx_k_close), 0, 0, 1, 1},
  {&__pyx_n_s_coeff, __pyx_k_coeff, sizeof(__pyx_k_coeff), 0, 0, 1, 1},
  {&__pyx_n_s_coeffs, __pyx_k_coeffs, sizeof(__pyx_k_coeffs), 0, 0, 1, 1},
  {&__pyx_n_s_col, __pyx_k_col, sizeof(__pyx_k_col), 0, 0, 1, 1},
  {&__pyx_kp_s_col_must_be_a_number_int_or_a_n, __pyx_k_col_must_be_a_number_int_or_a_n, sizeof(__pyx_k_col_must_be_a_number_int_or_a_n), 0, 0, 1, 0},
  {&__pyx_n_s_collections, __pyx_k_collections, sizeof(__pyx_k_collections), 0, 0, 1, 1},
  {&__pyx_n_s_collections_abc, __pyx_k_collections_abc, sizeof(__pyx_k_collections_abc), 0, 0, 1, 1},
  {&__pyx_n_s_condition, __pyx_k_condition, sizeof(__pyx_k_condition), 0, 0, 1, 1},
  {&__pyx_n_s_continuous, __pyx_k_continuous, sizeof(__pyx_k_continuous), 0, 0, 1, 1},
  {&__pyx_n_s_copy_names, __pyx_k_copy_names, sizeof(__pyx_k_copy_names), 0, 0, 1, 1},
  {&__pyx_n_s_copy_prob, __pyx_k_copy_prob, sizeof(__pyx_k_copy_prob), 0, 0, 1, 1},
  {&__pyx_n_s_cost_lb, __pyx_k_cost_lb, sizeof(__pyx_k_cost_lb), 0, 0, 1, 1},
  {&__pyx_n_s_cost_ub, __pyx_k_cost_ub, sizeof(__pyx_k_cost_ub), 0, 0, 1, 1},
  {&__pyx_n_s_cover, __pyx_k_cover, sizeof(__pyx_k_cover), 0, 0, 1, 1},
  {&__pyx_n_s_crash, __pyx_k_crash, sizeof(__pyx_k_crash), 0, 0, 1, 1},
  {&__pyx_n_s_current, __pyx_k_current, sizeof(__pyx_k_current), 0, 0, 1, 1},
  {&__pyx_n_s_cut, __pyx_k_cut, sizeof(__pyx_k_cut), 0, 0, 1, 1},
  {&__pyx_n_s_cutgen, __pyx_k_cutgen, sizeof(__pyx_k_cutgen), 0, 0, 1, 1},
  {&__pyx_n_s_degree, __pyx_k_degree, sizeof(__pyx_k_degree), 0, 0, 1, 1},
  {&__pyx_n_s_depth, __pyx_k_depth, sizeof(__pyx_k_depth), 0, 0, 1, 1},
  {&__pyx_n_s_direction, __pyx_k_direction, sizeof(__pyx_k_direction), 0, 0, 1, 1},
  {&__pyx_kp_s_direction_should_be_1_or_1_not, __pyx_k_direction_should_be_1_or_1_not, sizeof(__pyx_k_direction_should_be_1_or_1_not), 0, 0, 1, 0},
  {&__pyx_n_s_dist_caps, __pyx_k_dist_caps, sizeof(__pyx_k_dist_caps), 0, 0, 1, 1},
  {&__pyx_n_s_dist_costs, __pyx_k_dist_costs, sizeof(__pyx_k_dist_costs), 0, 0, 1, 1},
  {&__pyx_n_s_dominated, __pyx_k_dominated, sizeof(__pyx_k_dominated), 0, 0, 1, 1},
  {&__pyx_n_s_dominating, __pyx_k_dominating, sizeof(__pyx_k_dominating), 0, 0, 1, 1},
  {&__pyx_n_s_down, __pyx_k_down, sizeof(__pyx_k_down), 0, 0, 1, 1},
  {&__pyx_n_s_dual, __pyx_k_dual, sizeof(__pyx_k_dual), 0, 0, 1, 1},
  {&__pyx_n_s_dual_fail_primal, __pyx_k_dual_fail_primal, sizeof(__pyx_k_dual_fail_primal), 0, 0, 1, 1},
  {&__pyx_n_s_ecyglpki, __pyx_k_ecyglpki, sizeof(__pyx_k_ecyglpki), 0, 0, 1, 1},
  {&__pyx_n_s_encode, __pyx_k_encode, sizeof(__pyx_k_encode), 0, 0, 1, 1},
  {&__pyx_n_s_enumerate, __pyx_k_enumerate, sizeof(__pyx_k_enumerate), 0, 0, 1, 1},
  {&__pyx_n_s_eps, __pyx_k_eps, sizeof(__pyx_k_eps), 0, 0, 1, 1},
  {&__pyx_n_s_equalities, __pyx_k_equalities, sizeof(__pyx_k_equalities), 0, 0, 1, 1},
  {&__pyx_n_s_equilibration, __pyx_k_equilibration, sizeof(__pyx_k_equilibration), 0, 0, 1, 1},
  {&__pyx_n_s_feasible, __pyx_k_feasible, sizeof(__pyx_k_feasible), 0, 0, 1, 1},
  {&__pyx_n_s_file, __pyx_k_file, sizeof(__pyx_k_file), 0, 0, 1, 1},
  {&__pyx_n_s_find_col, __pyx_k_find_col, sizeof(__pyx_k_find_col), 0, 0, 1, 1},
  {&__pyx_n_s_find_col_as_needed, __pyx_k_find_col_as_needed, sizeof(__pyx_k_find_col_as_needed), 0, 0, 1, 1},
  {&__pyx_n_s_find_row, __pyx_k_find_row, sizeof(__pyx_k_find_row), 0, 0, 1, 1},
  {&__pyx_n_s_find_row_as_needed, __pyx_k_find_row_as_needed, sizeof(__pyx_k_find_row_as_needed), 0, 0, 1, 1},
  {&__pyx_n_s_find_row_or_col_as_needed, __pyx_k_find_row_or_col_as_needed, sizeof(__pyx_k_find_row_or_col_as_needed), 0, 0, 1, 1},
  {&__pyx_n_s_find_vertex, __pyx_k_find_vertex, sizeof(__pyx_k_find_vertex), 0, 0, 1, 1},
  {&__pyx_n_s_find_vertex_as_needed, __pyx_k_find_vertex_as_needed, sizeof(__pyx_k_find_vertex_as_needed), 0, 0, 1, 1},
  {&__pyx_n_s_first_fracvar, __pyx_k_first_fracvar, sizeof(__pyx_k_first_fracvar), 0, 0, 1, 1},
  {&__pyx_n_s_fixed, __pyx_k_fixed, sizeof(__pyx_k_fixed), 0, 0, 1, 1},
  {&__pyx_n_s_flow, __pyx_k_flow, sizeof(__pyx_k_flow), 0, 0, 1, 1},
  {&__pyx_n_s_fname, __pyx_k_fname, sizeof(__pyx_k_fname), 0, 0, 1, 1},
  {&__pyx_n_s_format, __pyx_k_format, sizeof(__pyx_k_format), 0, 0, 1, 1},
  {&__pyx_n_s_free, __pyx_k_free, sizeof(__pyx_k_free), 0, 0, 1, 1},
  {&__pyx_n_s_full, __pyx_k_full, sizeof(__pyx_k_full), 0, 0, 1, 1},
  {&__pyx_n_s_geometric, __pyx_k_geometric, sizeof(__pyx_k_geometric), 0, 0, 1, 1},
  {&__pyx_n_s_get_col_name, __pyx_k_get_col_name, sizeof(__pyx_k_get_col_name), 0, 0, 1, 1},
  {&__pyx_n_s_get_col_name_if, __pyx_k_get_col_name_if, sizeof(__pyx_k_get_col_name_if), 0, 0, 1, 1},
  {&__pyx_n_s_get_col_type, __pyx_k_get_col_type, sizeof(__pyx_k_get_col_type), 0, 0, 1, 1},
  {&__pyx_n_s_get_num_cols, __pyx_k_get_num_cols, sizeof(__pyx_k_get_num_cols), 0, 0, 1, 1},
  {&__pyx_n_s_get_num_rows, __pyx_k_get_num_rows, sizeof(__pyx_k_get_num_rows), 0, 0, 1, 1},
  {&__pyx_n_s_get_row_name, __pyx_k_get_row_name, sizeof(__pyx_k_get_row_name), 0, 0, 1, 1},
  {&__pyx_n_s_get_row_name_if, __pyx_k_get_row_name_if, sizeof(__pyx_k_get_row_name_if), 0, 0, 1, 1},
  {&__pyx_n_s_get_row_or_col_name, __pyx_k_get_row_or_col_name, sizeof(__pyx_k_get_row_or_col_name), 0, 0, 1, 1},
  {&__pyx_n_s_get_row_or_col_name_if, __pyx_k_get_row_or_col_name_if, sizeof(__pyx_k_get_row_or_col_name_if), 0, 0, 1, 1},
  {&__pyx_n_s_get_row_type, __pyx_k_get_row_type, sizeof(__pyx_k_get_row_type), 0, 0, 1, 1},
  {&__pyx_n_s_get_status, __pyx_k_get_status, sizeof(__pyx_k_get_status), 0, 0, 1, 1},
  {&__pyx_n_s_graph_ptr, __pyx_k_graph_ptr, sizeof(__pyx_k_graph_ptr), 0, 0, 1, 1},
  {&__pyx_n_s_graph_ptr_2, __pyx_k_graph_ptr_2, sizeof(__pyx_k_graph_ptr_2), 0, 0, 1, 1},
  {&__pyx_n_s_gridgen, __pyx_k_gridgen, sizeof(__pyx_k_gridgen), 0, 0, 1, 1},
  {&__pyx_n_s_head, __pyx_k_head, sizeof(__pyx_k_head), 0, 0, 1, 1},
  {&__pyx_n_s_heur_sol, __pyx_k_heur_sol, sizeof(__pyx_k_heur_sol), 0, 0, 1, 1},
  {&__pyx_kp_s_home_equaeghe_werk_progs_ecyglp, __pyx_k_home_equaeghe_werk_progs_ecyglp, sizeof(__pyx_k_home_equaeghe_werk_progs_ecyglp), 0, 0, 1, 0},
  {&__pyx_n_s_hybrid_peudocost, __pyx_k_hybrid_peudocost, sizeof(__pyx_k_hybrid_peudocost), 0, 0, 1, 1},
  {&__pyx_kp_s_i_e_length_2_tuples, __pyx_k_i_e_length_2_tuples, sizeof(__pyx_k_i_e_length_2_tuples), 0, 0, 1, 0},
  {&__pyx_n_s_iarcs, __pyx_k_iarcs, sizeof(__pyx_k_iarcs), 0, 0, 1, 1},
  {&__pyx_n_s_import, __pyx_k_import, sizeof(__pyx_k_import), 0, 0, 1, 1},
  {&__pyx_n_s_improved, __pyx_k_improved, sizeof(__pyx_k_improved), 0, 0, 1, 1},
  {&__pyx_n_s_ind, __pyx_k_ind, sizeof(__pyx_k_ind), 0, 0, 1, 1},
  {&__pyx_kp_s_ind_0_must_be_row_or_col_not, __pyx_k_ind_0_must_be_row_or_col_not, sizeof(__pyx_k_ind_0_must_be_row_or_col_not), 0, 0, 1, 0},
  {&__pyx_kp_s_ind_must_be_a_number_int_or_a_p, __pyx_k_ind_must_be_a_number_int_or_a_p, sizeof(__pyx_k_ind_must_be_a_number_int_or_a_p), 0, 0, 1, 0},
  {&__pyx_n_s_inf, __pyx_k_inf, sizeof(__pyx_k_inf), 0, 0, 1, 1},
  {&__pyx_n_s_infeasible, __pyx_k_infeasible, sizeof(__pyx_k_infeasible), 0, 0, 1, 1},
  {&__pyx_n_s_integer, __pyx_k_integer, sizeof(__pyx_k_integer), 0, 0, 1, 1},
  {&__pyx_kp_s_integer_optimization_solution, __pyx_k_integer_optimization_solution, sizeof(__pyx_k_integer_optimization_solution), 0, 0, 1, 0},
  {&__pyx_n_s_intopt, __pyx_k_intopt, sizeof(__pyx_k_intopt), 0, 0, 1, 1},
  {&__pyx_n_s_ios_first_node, __pyx_k_ios_first_node, sizeof(__pyx_k_ios_first_node), 0, 0, 1, 1},
  {&__pyx_n_s_ios_last_node, __pyx_k_ios_last_node, sizeof(__pyx_k_ios_last_node), 0, 0, 1, 1},
  {&__pyx_n_s_ipcap, __pyx_k_ipcap, sizeof(__pyx_k_ipcap), 0, 0, 1, 1},
  {&__pyx_n_s_iphic, __pyx_k_iphic, sizeof(__pyx_k_iphic), 0, 0, 1, 1},
  {&__pyx_n_s_ipoint, __pyx_k_ipoint, sizeof(__pyx_k_ipoint), 0, 0, 1, 1},
  {&__pyx_n_s_ipt_status, __pyx_k_ipt_status, sizeof(__pyx_k_ipt_status), 0, 0, 1, 1},
  {&__pyx_kp_s_is_not_a_column_name, __pyx_k_is_not_a_column_name, sizeof(__pyx_k_is_not_a_column_name), 0, 0, 1, 0},
  {&__pyx_kp_s_is_not_a_row_name, __pyx_k_is_not_a_row_name, sizeof(__pyx_k_is_not_a_row_name), 0, 0, 1, 0},
  {&__pyx_kp_s_is_not_a_vertex_name, __pyx_k_is_not_a_vertex_name, sizeof(__pyx_k_is_not_a_vertex_name), 0, 0, 1, 0},
  {&__pyx_n_s_iseed, __pyx_k_iseed, sizeof(__pyx_k_iseed), 0, 0, 1, 1},
  {&__pyx_n_s_items, __pyx_k_items, sizeof(__pyx_k_items), 0, 0, 1, 1},
  {&__pyx_n_s_itsup, __pyx_k_itsup, sizeof(__pyx_k_itsup), 0, 0, 1, 1},
  {&__pyx_n_s_k, __pyx_k_k, sizeof(__pyx_k_k), 0, 0, 1, 1},
  {&__pyx_n_s_keys, __pyx_k_keys, sizeof(__pyx_k_keys), 0, 0, 1, 1},
  {&__pyx_n_s_kind, __pyx_k_kind, sizeof(__pyx_k_kind), 0, 0, 1, 1},
  {&__pyx_n_s_last_fracvar, __pyx_k_last_fracvar, sizeof(__pyx_k_last_fracvar), 0, 0, 1, 1},
  {&__pyx_n_s_lazy, __pyx_k_lazy, sizeof(__pyx_k_lazy), 0, 0, 1, 1},
  {&__pyx_n_s_level, __pyx_k_level, sizeof(__pyx_k_level), 0, 0, 1, 1},
  {&__pyx_n_s_lower, __pyx_k_lower, sizeof(__pyx_k_lower), 0, 0, 1, 1},
  {&__pyx_n_s_main, __pyx_k_main, sizeof(__pyx_k_main), 0, 0, 1, 1},
  {&__pyx_n_s_maxcap, __pyx_k_maxcap, sizeof(__pyx_k_maxcap), 0, 0, 1, 1},
  {&__pyx_n_s_maxcst, __pyx_k_maxcst, sizeof(__pyx_k_maxcst), 0, 0, 1, 1},
  {&__pyx_n_s_maximal, __pyx_k_maximal, sizeof(__pyx_k_maximal), 0, 0, 1, 1},
  {&__pyx_n_s_maximize, __pyx_k_maximize, sizeof(__pyx_k_maximize), 0, 0, 1, 1},
  {&__pyx_n_s_maximum, __pyx_k_maximum, sizeof(__pyx_k_maximum), 0, 0, 1, 1},
  {&__pyx_n_s_meth, __pyx_k_meth, sizeof(__pyx_k_meth), 0, 0, 1, 1},
  {&__pyx_n_s_mincap, __pyx_k_mincap, sizeof(__pyx_k_mincap), 0, 0, 1, 1},
  {&__pyx_n_s_mincst, __pyx_k_mincst, sizeof(__pyx_k_mincst), 0, 0, 1, 1},
  {&__pyx_n_s_minimal, __pyx_k_minimal, sizeof(__pyx_k_minimal), 0, 0, 1, 1},
  {&__pyx_n_s_minimize, __pyx_k_minimize, sizeof(__pyx_k_minimize), 0, 0, 1, 1},
  {&__pyx_n_s_mip_status, __pyx_k_mip_status, sizeof(__pyx_k_mip_status), 0, 0, 1, 1},
  {&__pyx_n_s_most_fracvar, __pyx_k_most_fracvar, sizeof(__pyx_k_most_fracvar), 0, 0, 1, 1},
  {&__pyx_kp_s_must_not_dominate, __pyx_k_must_not_dominate, sizeof(__pyx_k_must_not_dominate), 0, 0, 1, 0},
  {&__pyx_n_s_name, __pyx_k_name, sizeof(__pyx_k_name), 0, 0, 1, 1},
  {&__pyx_n_s_name_2, __pyx_k_name_2, sizeof(__pyx_k_name_2), 0, 0, 1, 1},
  {&__pyx_n_s_names_preferred, __pyx_k_names_preferred, sizeof(__pyx_k_names_preferred), 0, 0, 1, 1},
  {&__pyx_n_s_netgen, __pyx_k_netgen, sizeof(__pyx_k_netgen), 0, 0, 1, 1},
  {&__pyx_n_s_no, __pyx_k_no, sizeof(__pyx_k_no), 0, 0, 1, 1},
  {&__pyx_kp_s_no_feasible, __pyx_k_no_feasible, sizeof(__pyx_k_no_feasible), 0, 0, 1, 0},
  {&__pyx_n_s_nodes, __pyx_k_nodes, sizeof(__pyx_k_nodes), 0, 0, 1, 1},
  {&__pyx_n_s_none, __pyx_k_none, sizeof(__pyx_k_none), 0, 0, 1, 1},
  {&__pyx_n_s_normal, __pyx_k_normal, sizeof(__pyx_k_normal), 0, 0, 1, 1},
  {&__pyx_kp_s_not, __pyx_k_not, sizeof(__pyx_k_not), 0, 0, 1, 0},
  {&__pyx_n_s_nprob, __pyx_k_nprob, sizeof(__pyx_k_nprob), 0, 0, 1, 1},
  {&__pyx_n_s_nsink, __pyx_k_nsink, sizeof(__pyx_k_nsink), 0, 0, 1, 1},
  {&__pyx_n_s_nsorc, __pyx_k_nsorc, sizeof(__pyx_k_nsorc), 0, 0, 1, 1},
  {&__pyx_n_s_ntsink, __pyx_k_ntsink, sizeof(__pyx_k_ntsink), 0, 0, 1, 1},
  {&__pyx_n_s_ntsorc, __pyx_k_ntsorc, sizeof(__pyx_k_ntsorc), 0, 0, 1, 1},
  {&__pyx_kp_s_number_of_components_as_the_basi, __pyx_k_number_of_components_as_the_basi, sizeof(__pyx_k_number_of_components_as_the_basi), 0, 0, 1, 0},
  {&__pyx_n_s_numbers, __pyx_k_numbers, sizeof(__pyx_k_numbers), 0, 0, 1, 1},
  {&__pyx_n_s_nv, __pyx_k_nv, sizeof(__pyx_k_nv), 0, 0, 1, 1},
  {&__pyx_n_s_obj_bound, __pyx_k_obj_bound, sizeof(__pyx_k_obj_bound), 0, 0, 1, 1},
  {&__pyx_n_s_obj_ll, __pyx_k_obj_ll, sizeof(__pyx_k_obj_ll), 0, 0, 1, 1},
  {&__pyx_kp_s_obj_ll_reached, __pyx_k_obj_ll_reached, sizeof(__pyx_k_obj_ll_reached), 0, 0, 1, 0},
  {&__pyx_n_s_obj_ul, __pyx_k_obj_ul, sizeof(__pyx_k_obj_ul), 0, 0, 1, 1},
  {&__pyx_kp_s_obj_ul_reached, __pyx_k_obj_ul_reached, sizeof(__pyx_k_obj_ul_reached), 0, 0, 1, 0},
  {&__pyx_kp_s_on_solving_Newtonian_system, __pyx_k_on_solving_Newtonian_system, sizeof(__pyx_k_on_solving_Newtonian_system), 0, 0, 1, 0},
  {&__pyx_kp_s_only, __pyx_k_only, sizeof(__pyx_k_only), 0, 0, 1, 0},
  {&__pyx_n_s_optimal, __pyx_k_optimal, sizeof(__pyx_k_optimal), 0, 0, 1, 1},
  {&__pyx_kp_s_optimization_solution_file, __pyx_k_optimization_solution_file, sizeof(__pyx_k_optimization_solution_file), 0, 0, 1, 0},
  {&__pyx_n_s_orig, __pyx_k_orig, sizeof(__pyx_k_orig), 0, 0, 1, 1},
  {&__pyx_n_s_origin, __pyx_k_origin, sizeof(__pyx_k_origin), 0, 0, 1, 1},
  {&__pyx_n_s_parameters, __pyx_k_parameters, sizeof(__pyx_k_parameters), 0, 0, 1, 1},
  {&__pyx_n_s_perfect_maximize, __pyx_k_perfect_maximize, sizeof(__pyx_k_perfect_maximize), 0, 0, 1, 1},
  {&__pyx_n_s_perfect_minimize, __pyx_k_perfect_minimize, sizeof(__pyx_k_perfect_minimize), 0, 0, 1, 1},
  {&__pyx_n_s_preprocess, __pyx_k_preprocess, sizeof(__pyx_k_preprocess), 0, 0, 1, 1},
  {&__pyx_n_s_primal, __pyx_k_primal, sizeof(__pyx_k_primal), 0, 0, 1, 1},
  {&__pyx_n_s_prob_ptr, __pyx_k_prob_ptr, sizeof(__pyx_k_prob_ptr), 0, 0, 1, 1},
  {&__pyx_n_s_prob_ptr_2, __pyx_k_prob_ptr_2, sizeof(__pyx_k_prob_ptr_2), 0, 0, 1, 1},
  {&__pyx_n_s_problem, __pyx_k_problem, sizeof(__pyx_k_problem), 0, 0, 1, 1},
  {&__pyx_n_s_projection, __pyx_k_projection, sizeof(__pyx_k_projection), 0, 0, 1, 1},
  {&__pyx_n_s_qmd, __pyx_k_qmd, sizeof(__pyx_k_qmd), 0, 0, 1, 1},
  {&__pyx_n_s_range, __pyx_k_range, sizeof(__pyx_k_range), 0, 0, 1, 1},
  {&__pyx_n_s_read_asnprob, __pyx_k_read_asnprob, sizeof(__pyx_k_read_asnprob), 0, 0, 1, 1},
  {&__pyx_n_s_read_ccdata, __pyx_k_read_ccdata, sizeof(__pyx_k_read_ccdata), 0, 0, 1, 1},
  {&__pyx_n_s_read_cnfsat, __pyx_k_read_cnfsat, sizeof(__pyx_k_read_cnfsat), 0, 0, 1, 1},
  {&__pyx_n_s_read_graph, __pyx_k_read_graph, sizeof(__pyx_k_read_graph), 0, 0, 1, 1},
  {&__pyx_n_s_read_lp, __pyx_k_read_lp, sizeof(__pyx_k_read_lp), 0, 0, 1, 1},
  {&__pyx_n_s_read_maxflow, __pyx_k_read_maxflow, sizeof(__pyx_k_read_maxflow), 0, 0, 1, 1},
  {&__pyx_n_s_read_mincost, __pyx_k_read_mincost, sizeof(__pyx_k_read_mincost), 0, 0, 1, 1},
  {&__pyx_n_s_read_mps, __pyx_k_read_mps, sizeof(__pyx_k_read_mps), 0, 0, 1, 1},
  {&__pyx_n_s_read_prob, __pyx_k_read_prob, sizeof(__pyx_k_read_prob), 0, 0, 1, 1},
  {&__pyx_n_s_regular, __pyx_k_regular, sizeof(__pyx_k_regular), 0, 0, 1, 1},
  {&__pyx_n_s_rel, __pyx_k_rel, sizeof(__pyx_k_rel), 0, 0, 1, 1},
  {&__pyx_n_s_rhs, __pyx_k_rhs, sizeof(__pyx_k_rhs), 0, 0, 1, 1},
  {&__pyx_n_s_rmfgen, __pyx_k_rmfgen, sizeof(__pyx_k_rmfgen), 0, 0, 1, 1},
  {&__pyx_n_s_root, __pyx_k_root, sizeof(__pyx_k_root), 0, 0, 1, 1},
  {&__pyx_n_s_round, __pyx_k_round, sizeof(__pyx_k_round), 0, 0, 1, 1},
  {&__pyx_n_s_rounding, __pyx_k_rounding, sizeof(__pyx_k_rounding), 0, 0, 1, 1},
  {&__pyx_n_s_row, __pyx_k_row, sizeof(__pyx_k_row), 0, 0, 1, 1},
  {&__pyx_kp_s_row_must_be_a_number_int_or_a_n, __pyx_k_row_must_be_a_number_int_or_a_n, sizeof(__pyx_k_row_must_be_a_number_int_or_a_n), 0, 0, 1, 0},
  {&__pyx_n_s_row_or_cols, __pyx_k_row_or_cols, sizeof(__pyx_k_row_or_cols), 0, 0, 1, 1},
  {&__pyx_kp_s_row_or_cols_must_be_a_Sequence, __pyx_k_row_or_cols_must_be_a_Sequence, sizeof(__pyx_k_row_or_cols_must_be_a_Sequence), 0, 0, 1, 0},
  {&__pyx_n_s_rowclass, __pyx_k_rowclass, sizeof(__pyx_k_rowclass), 0, 0, 1, 1},
  {&__pyx_n_s_rowgen, __pyx_k_rowgen, sizeof(__pyx_k_rowgen), 0, 0, 1, 1},
  {&__pyx_n_s_seed, __pyx_k_seed, sizeof(__pyx_k_seed), 0, 0, 1, 1},
  {&__pyx_n_s_send, __pyx_k_send, sizeof(__pyx_k_send), 0, 0, 1, 1},
  {&__pyx_n_s_sf, __pyx_k_sf, sizeof(__pyx_k_sf), 0, 0, 1, 1},
  {&__pyx_kp_s_simplex, __pyx_k_simplex, sizeof(__pyx_k_simplex), 0, 0, 1, 0},
  {&__pyx_n_s_simplex_2, __pyx_k_simplex_2, sizeof(__pyx_k_simplex_2), 0, 0, 1, 1},
  {&__pyx_n_s_sink, __pyx_k_sink, sizeof(__pyx_k_sink), 0, 0, 1, 1},
  {&__pyx_n_s_sinks, __pyx_k_sinks, sizeof(__pyx_k_sinks), 0, 0, 1, 1},
  {&__pyx_n_s_skip, __pyx_k_skip, sizeof(__pyx_k_skip), 0, 0, 1, 1},
  {&__pyx_kp_s_solution_file, __pyx_k_solution_file, sizeof(__pyx_k_solution_file), 0, 0, 1, 0},
  {&__pyx_n_s_solver, __pyx_k_solver, sizeof(__pyx_k_solver), 0, 0, 1, 1},
  {&__pyx_n_s_source, __pyx_k_source, sizeof(__pyx_k_source), 0, 0, 1, 1},
  {&__pyx_n_s_sources, __pyx_k_sources, sizeof(__pyx_k_sources), 0, 0, 1, 1},
  {&__pyx_n_s_standard, __pyx_k_standard, sizeof(__pyx_k_standard), 0, 0, 1, 1},
  {&__pyx_n_s_start, __pyx_k_start, sizeof(__pyx_k_start), 0, 0, 1, 1},
  {&__pyx_n_s_status, __pyx_k_status, sizeof(__pyx_k_status), 0, 0, 1, 1},
  {&__pyx_n_s_steepest, __pyx_k_steepest, sizeof(__pyx_k_steepest), 0, 0, 1, 1},
  {&__pyx_kp_s_str_str_not, __pyx_k_str_str_not, sizeof(__pyx_k_str_str_not), 0, 0, 1, 0},
  {&__pyx_n_s_subproblem, __pyx_k_subproblem, sizeof(__pyx_k_subproblem), 0, 0, 1, 1},
  {&__pyx_n_s_sum, __pyx_k_sum, sizeof(__pyx_k_sum), 0, 0, 1, 1},
  {&__pyx_n_s_symamd, __pyx_k_symamd, sizeof(__pyx_k_symamd), 0, 0, 1, 1},
  {&__pyx_n_s_tail, __pyx_k_tail, sizeof(__pyx_k_tail), 0, 0, 1, 1},
  {&__pyx_n_s_test, __pyx_k_test, sizeof(__pyx_k_test), 0, 0, 1, 1},
  {&__pyx_n_s_throw, __pyx_k_throw, sizeof(__pyx_k_throw), 0, 0, 1, 1},
  {&__pyx_kp_s_to_CNF_SAT_format, __pyx_k_to_CNF_SAT_format, sizeof(__pyx_k_to_CNF_SAT_format), 0, 0, 1, 0},
  {&__pyx_n_s_total, __pyx_k_total, sizeof(__pyx_k_total), 0, 0, 1, 1},
  {&__pyx_n_s_two_way, __pyx_k_two_way, sizeof(__pyx_k_two_way), 0, 0, 1, 1},
  {&__pyx_n_s_unbounded, __pyx_k_unbounded, sizeof(__pyx_k_unbounded), 0, 0, 1, 1},
  {&__pyx_n_s_undefined, __pyx_k_undefined, sizeof(__pyx_k_undefined), 0, 0, 1, 1},
  {&__pyx_n_s_up, __pyx_k_up, sizeof(__pyx_k_up), 0, 0, 1, 1},
  {&__pyx_n_s_upper, __pyx_k_upper, sizeof(__pyx_k_upper), 0, 0, 1, 1},
  {&__pyx_kp_s_upper_bound, __pyx_k_upper_bound, sizeof(__pyx_k_upper_bound), 0, 0, 1, 0},
  {&__pyx_n_s_use_bound, __pyx_k_use_bound, sizeof(__pyx_k_use_bound), 0, 0, 1, 1},
  {&__pyx_n_s_v_cut, __pyx_k_v_cut, sizeof(__pyx_k_v_cut), 0, 0, 1, 1},
  {&__pyx_n_s_v_es, __pyx_k_v_es, sizeof(__pyx_k_v_es), 0, 0, 1, 1},
  {&__pyx_n_s_v_ls, __pyx_k_v_ls, sizeof(__pyx_k_v_ls), 0, 0, 1, 1},
  {&__pyx_n_s_v_pi, __pyx_k_v_pi, sizeof(__pyx_k_v_pi), 0, 0, 1, 1},
  {&__pyx_n_s_v_rhs, __pyx_k_v_rhs, sizeof(__pyx_k_v_rhs), 0, 0, 1, 1},
  {&__pyx_n_s_v_set, __pyx_k_v_set, sizeof(__pyx_k_v_set), 0, 0, 1, 1},
  {&__pyx_n_s_v_t, __pyx_k_v_t, sizeof(__pyx_k_v_t), 0, 0, 1, 1},
  {&__pyx_n_s_v_wgt, __pyx_k_v_wgt, sizeof(__pyx_k_v_wgt), 0, 0, 1, 1},
  {&__pyx_n_s_values, __pyx_k_values, sizeof(__pyx_k_values), 0, 0, 1, 1},
  {&__pyx_n_s_vartype, __pyx_k_vartype, sizeof(__pyx_k_vartype), 0, 0, 1, 1},
  {&__pyx_n_s_vertex, __pyx_k_vertex, sizeof(__pyx_k_vertex), 0, 0, 1, 1},
  {&__pyx_n_s_vertex_data_size, __pyx_k_vertex_data_size, sizeof(__pyx_k_vertex_data_size), 0, 0, 1, 1},
  {&__pyx_kp_s_vertex_must_be_a_number_int_or, __pyx_k_vertex_must_be_a_number_int_or, sizeof(__pyx_k_vertex_must_be_a_number_int_or), 0, 0, 1, 0},
  {&__pyx_n_s_vertex_ptr, __pyx_k_vertex_ptr, sizeof(__pyx_k_vertex_ptr), 0, 0, 1, 1},
  {&__pyx_n_s_warnerror, __pyx_k_warnerror, sizeof(__pyx_k_warnerror), 0, 0, 1, 1},
  {&__pyx_n_s_width, __pyx_k_width, sizeof(__pyx_k_width), 0, 0, 1, 1},
  {0, 0, 0, 0, 0, 0, 0}
};
static int __Pyx_InitCachedBuiltins(void) {
  __pyx_builtin_ValueError = __Pyx_GetBuiltinName(__pyx_n_s_ValueError); if (!__pyx_builtin_ValueError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_RuntimeError = __Pyx_GetBuiltinName(__pyx_n_s_RuntimeError); if (!__pyx_builtin_RuntimeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s_StopIteration); if (!__pyx_builtin_StopIteration) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_ArithmeticError = __Pyx_GetBuiltinName(__pyx_n_s_ArithmeticError); if (!__pyx_builtin_ArithmeticError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_OverflowError = __Pyx_GetBuiltinName(__pyx_n_s_OverflowError); if (!__pyx_builtin_OverflowError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_TypeError = __Pyx_GetBuiltinName(__pyx_n_s_TypeError); if (!__pyx_builtin_TypeError) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 83; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_all = __Pyx_GetBuiltinName(__pyx_n_s_all); if (!__pyx_builtin_all) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 227; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 288; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_range = __Pyx_GetBuiltinName(__pyx_n_s_range); if (!__pyx_builtin_range) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 597; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_sum = __Pyx_GetBuiltinName(__pyx_n_s_sum); if (!__pyx_builtin_sum) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_builtin_Exception = __Pyx_GetBuiltinName(__pyx_n_s_Exception); if (!__pyx_builtin_Exception) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  return 0;
  __pyx_L1_error:;
  return -1;
}

static int __Pyx_InitCachedConstants(void) {
  __Pyx_RefNannyDeclarations
  __Pyx_RefNannySetupContext("__Pyx_InitCachedConstants", 0);

  /* "ecyglpki.pyx":49
 *     cdef bytes encoded_name = name.encode()
 *     if len(encoded_name) > 255:
 *         raise ValueError("Name must not exceed 255 bytes.")             # <<<<<<<<<<<<<<
 *     return encoded_name
 * 
 */
  __pyx_tuple_ = PyTuple_Pack(1, __pyx_kp_s_Name_must_not_exceed_255_bytes); if (unlikely(!__pyx_tuple_)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple_);
  __Pyx_GIVEREF(__pyx_tuple_);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":167
 *             value = int(value)
 *             if (value < 0) or (value > 256):
 *                 raise ValueError("'cb_size' must be an int between 0 and 256.")             # <<<<<<<<<<<<<<
 *             self._iocp.cb_size = value
 * 
 */
  __pyx_tuple__3 = PyTuple_Pack(1, __pyx_kp_s_cb_size_must_be_an_int_between); if (unlikely(!__pyx_tuple__3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__3);
  __Pyx_GIVEREF(__pyx_tuple__3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":228
 *                         type(coeffs).__name__)
 *     if not all([isinstance(value, numbers.Real) for value in coeffs.values()]):
 *         raise TypeError("Coefficient values must be 'Real'.")             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_tuple__6 = PyTuple_Pack(1, __pyx_kp_s_Coefficient_values_must_be_Real); if (unlikely(!__pyx_tuple__6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 228; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__6);
  __Pyx_GIVEREF(__pyx_tuple__6);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":744
 *         """Solve LP problem in exact arithmetic"""
 *         if controls.meth is not 'primal':
 *             raise ValueError("Only primal simplex with exact arithmetic.")             # <<<<<<<<<<<<<<
 *         cdef int retcode = glpk.exact(self._prob, &controls._smcp)
 *         if retcode is not 0:
 */
  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_Only_primal_simplex_with_exact_a); if (unlikely(!__pyx_tuple__9)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 744; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__9);
  __Pyx_GIVEREF(__pyx_tuple__9);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":904
 *             re_id = self.get_row_or_col_name_if(re_ind, names_preferred)
 *         else:
 *             raise ValueError("Condition is either 'equalities' or 'bounds'.")             # <<<<<<<<<<<<<<
 *         return {'abs': (ae_max, ae_id), 'rel': (re_max, re_id)}
 * 
 */
  __pyx_tuple__10 = PyTuple_Pack(1, __pyx_kp_s_Condition_is_either_equalities_o); if (unlikely(!__pyx_tuple__10)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 904; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__10);
  __Pyx_GIVEREF(__pyx_tuple__10);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":911
 *         retcode = glpk.print_sol(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing printable basic solution file")             # <<<<<<<<<<<<<<
 * 
 *     def read_sol(self, str fname):
 */
  __pyx_tuple__11 = PyTuple_Pack(1, __pyx_kp_s_Error_writing_printable_basic_so); if (unlikely(!__pyx_tuple__11)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 911; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__11);
  __Pyx_GIVEREF(__pyx_tuple__11);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":917
 *         retcode = glpk.read_sol(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading basic solution file")             # <<<<<<<<<<<<<<
 * 
 *     def write_sol(self, str fname):
 */
  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_Error_reading_basic_solution_fil); if (unlikely(!__pyx_tuple__12)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 917; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__12);
  __Pyx_GIVEREF(__pyx_tuple__12);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":923
 *         retcode = glpk.write_sol(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing basic solution file")             # <<<<<<<<<<<<<<
 * 
 *     def print_ranges(self, row_or_cols, str fname):
 */
  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_Error_writing_basic_solution_fil); if (unlikely(!__pyx_tuple__13)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 923; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__13);
  __Pyx_GIVEREF(__pyx_tuple__13);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":950
 *         retcode = glpk.read_ipt(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading interior point solution file")             # <<<<<<<<<<<<<<
 * 
 *     def write_ipt(self, str fname):
 */
  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_Error_reading_interior_point_sol); if (unlikely(!__pyx_tuple__14)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 950; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__14);
  __Pyx_GIVEREF(__pyx_tuple__14);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":956
 *         retcode = glpk.write_ipt(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing interior point solution file")             # <<<<<<<<<<<<<<
 * 
 *     def print_mip(self, str fname):
 */
  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Error_writing_interior_point_sol); if (unlikely(!__pyx_tuple__15)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 956; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__15);
  __Pyx_GIVEREF(__pyx_tuple__15);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1230
 *                                 str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading MPS file.")             # <<<<<<<<<<<<<<
 *         return problem
 * 
 */
  __pyx_tuple__16 = PyTuple_Pack(1, __pyx_kp_s_Error_reading_MPS_file); if (unlikely(!__pyx_tuple__16)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1230; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__16);
  __Pyx_GIVEREF(__pyx_tuple__16);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1238
 *                                  str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing MPS file.")             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_tuple__17 = PyTuple_Pack(1, __pyx_kp_s_Error_writing_MPS_file); if (unlikely(!__pyx_tuple__17)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1238; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__17);
  __Pyx_GIVEREF(__pyx_tuple__17);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1248
 *         retcode = glpk.read_lp(_prob, NULL, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading LP file.")             # <<<<<<<<<<<<<<
 *         return problem
 * 
 */
  __pyx_tuple__18 = PyTuple_Pack(1, __pyx_kp_s_Error_reading_LP_file); if (unlikely(!__pyx_tuple__18)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1248; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__18);
  __Pyx_GIVEREF(__pyx_tuple__18);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1255
 *         retcode = glpk.write_lp(self._prob, NULL, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing LP file.")             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_kp_s_Error_writing_LP_file); if (unlikely(!__pyx_tuple__19)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1255; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__19);
  __Pyx_GIVEREF(__pyx_tuple__19);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1265
 *         retcode = glpk.read_prob(_prob, 0, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading GLPK file.")             # <<<<<<<<<<<<<<
 *         return problem
 * 
 */
  __pyx_tuple__20 = PyTuple_Pack(1, __pyx_kp_s_Error_reading_GLPK_file); if (unlikely(!__pyx_tuple__20)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1265; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__20);
  __Pyx_GIVEREF(__pyx_tuple__20);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1272
 *         retcode = glpk.write_prob(self._prob, 0, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing GLPK file.")             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_tuple__21 = PyTuple_Pack(1, __pyx_kp_s_Error_writing_GLPK_file); if (unlikely(!__pyx_tuple__21)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__21);
  __Pyx_GIVEREF(__pyx_tuple__21);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1282
 *         retcode = glpk.read_cnfsat(_prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading CNF-SAT file.")             # <<<<<<<<<<<<<<
 *         return problem
 * 
 */
  __pyx_tuple__22 = PyTuple_Pack(1, __pyx_kp_s_Error_reading_CNF_SAT_file); if (unlikely(!__pyx_tuple__22)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1282; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__22);
  __Pyx_GIVEREF(__pyx_tuple__22);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1293
 *         retcode = glpk.write_cnfsat(self._prob, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing CNF-SAT file.")             # <<<<<<<<<<<<<<
 * 
 *     def minisat1(self):
 */
  __pyx_tuple__23 = PyTuple_Pack(1, __pyx_kp_s_Error_writing_CNF_SAT_file); if (unlikely(!__pyx_tuple__23)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1293; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__23);
  __Pyx_GIVEREF(__pyx_tuple__23);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":90
 *         node = glpk.ios_curr_node(self._tree)
 *         if node is 0:
 *             raise Exception("There is no current active subproblem.")             # <<<<<<<<<<<<<<
 *         return node
 * 
 */
  __pyx_tuple__24 = PyTuple_Pack(1, __pyx_kp_s_There_is_no_current_active_subpr); if (unlikely(!__pyx_tuple__24)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 90; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__24);
  __Pyx_GIVEREF(__pyx_tuple__24);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":100
 *             node = glpk.ios_next_node(self._tree, node)
 *             if node is 0:
 *                 raise Exception("There is no next active subproblem.")             # <<<<<<<<<<<<<<
 *             return node
 * 
 */
  __pyx_tuple__25 = PyTuple_Pack(1, __pyx_kp_s_There_is_no_next_active_subprobl); if (unlikely(!__pyx_tuple__25)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 100; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__25);
  __Pyx_GIVEREF(__pyx_tuple__25);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":107
 *         node = glpk.ios_next_node(self._tree, 0)
 *         if node is 0:
 *             raise Exception("The search tree is empty.")             # <<<<<<<<<<<<<<
 *         return node
 * 
 */
  __pyx_tuple__26 = PyTuple_Pack(1, __pyx_kp_s_The_search_tree_is_empty); if (unlikely(!__pyx_tuple__26)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__26);
  __Pyx_GIVEREF(__pyx_tuple__26);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":117
 *             node = glpk.ios_prev_node(self._tree, node)
 *             if node is 0:
 *                 raise Exception("There is no previous active subproblem.")             # <<<<<<<<<<<<<<
 *             return node
 * 
 */
  __pyx_tuple__27 = PyTuple_Pack(1, __pyx_kp_s_There_is_no_previous_active_subp); if (unlikely(!__pyx_tuple__27)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__27);
  __Pyx_GIVEREF(__pyx_tuple__27);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":124
 *         node = glpk.ios_next_node(self._tree, 0)
 *         if node is 0:
 *             raise Exception("The search tree is empty.")             # <<<<<<<<<<<<<<
 *         return node
 * 
 */
  __pyx_tuple__28 = PyTuple_Pack(1, __pyx_kp_s_The_search_tree_is_empty); if (unlikely(!__pyx_tuple__28)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 124; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__28);
  __Pyx_GIVEREF(__pyx_tuple__28);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":131
 *         node = glpk.ios_up_node(self._tree, node)
 *         if node is 0:
 *             raise Exception("This is the search tree root; it has no parent.")             # <<<<<<<<<<<<<<
 *         return node
 * 
 */
  __pyx_tuple__29 = PyTuple_Pack(1, __pyx_kp_s_This_is_the_search_tree_root_it); if (unlikely(!__pyx_tuple__29)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__29);
  __Pyx_GIVEREF(__pyx_tuple__29);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":146
 *         node = glpk.ios_best_node(self._tree)
 *         if node is 0:
 *             raise Exception("The search tree is empty.")             # <<<<<<<<<<<<<<
 *         return node
 * 
 */
  __pyx_tuple__30 = PyTuple_Pack(1, __pyx_kp_s_The_search_tree_is_empty); if (unlikely(!__pyx_tuple__30)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 146; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__30);
  __Pyx_GIVEREF(__pyx_tuple__30);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":225
 *                 heur_sol[self.problem.find_col_as_needed(col)] = val
 *             if glpk.ios_heur_sol(self._tree, heur_sol) is not 0:
 *                 raise ValueError("Solution rejected.")             # <<<<<<<<<<<<<<
 *         finally:
 *             glpk.free(heur_sol)
 */
  __pyx_tuple__31 = PyTuple_Pack(1, __pyx_kp_s_Solution_rejected); if (unlikely(!__pyx_tuple__31)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 225; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__31);
  __Pyx_GIVEREF(__pyx_tuple__31);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":267
 *         cdef int ind = self.find_vertex_as_needed(vertex)
 *         if (ind > self.nv) or (ind < 1):
 *             raise ValueError("Incorrect vertex index.")             # <<<<<<<<<<<<<<
 *         cdef glpk.Vertex* _vertex = self._graph.v[ind]
 *         return Vertex(PyCapsule_New(_vertex, NULL, NULL))
 */
  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_Incorrect_vertex_index); if (unlikely(!__pyx_tuple__32)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 267; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__32);
  __Pyx_GIVEREF(__pyx_tuple__32);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":279
 *         retcode = glpk.read_graph(_graph, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error reading graph from plain text file")             # <<<<<<<<<<<<<<
 *         return graph
 * 
 */
  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_Error_reading_graph_from_plain_t); if (unlikely(!__pyx_tuple__33)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 279; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__33);
  __Pyx_GIVEREF(__pyx_tuple__33);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":286
 *         retcode = glpk.write_graph(self._graph, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing graph plain text file")             # <<<<<<<<<<<<<<
 * 
 *     def mincost_lp(self, bint copy_names,
 */
  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_Error_writing_graph_plain_text_f); if (unlikely(!__pyx_tuple__34)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 286; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__34);
  __Pyx_GIVEREF(__pyx_tuple__34);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":369
 *         cardinality = glpk.asnprob_hall(self._graph, v_set, a_x)
 *         if cardinality < 0:
 *             raise ValueError("The specified graph is incorrect")             # <<<<<<<<<<<<<<
 *         return cardinality
 * 
 */
  __pyx_tuple__35 = PyTuple_Pack(1, __pyx_kp_s_The_specified_graph_is_incorrect); if (unlikely(!__pyx_tuple__35)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 369; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__35);
  __Pyx_GIVEREF(__pyx_tuple__35);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":434
 *         retcode = glpk.read_asnprob(_graph, v_set, a_cost, str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error assignment problem DIMACS file")             # <<<<<<<<<<<<<<
 *         return graph
 * 
 */
  __pyx_tuple__36 = PyTuple_Pack(1, __pyx_kp_s_Error_assignment_problem_DIMACS); if (unlikely(!__pyx_tuple__36)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 434; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__36);
  __Pyx_GIVEREF(__pyx_tuple__36);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":442
 *                                      str2chars(fname))
 *         if retcode is not 0:
 *             raise RuntimeError("Error writing assignment problem DIMACS file")             # <<<<<<<<<<<<<<
 * 
 *     @classmethod
 */
  __pyx_tuple__37 = PyTuple_Pack(1, __pyx_kp_s_Error_writing_assignment_problem); if (unlikely(!__pyx_tuple__37)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 442; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__37);
  __Pyx_GIVEREF(__pyx_tuple__37);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":511
 *         retval = glpk.netgen(_graph, v_rhs, a_cap, a_cost, params)
 *         if retval is not 0:
 *             raise ValueError("Network generator parameters are inconsistent")             # <<<<<<<<<<<<<<
 *         return graph
 * 
 */
  __pyx_tuple__38 = PyTuple_Pack(1, __pyx_kp_s_Network_generator_parameters_are); if (unlikely(!__pyx_tuple__38)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 511; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__38);
  __Pyx_GIVEREF(__pyx_tuple__38);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":564
 *         retval = glpk.gridgen(_graph, v_rhs, a_cap, a_cost, params)
 *         if retval is not 0:
 *             raise ValueError("Network generator parameters are inconsistent")             # <<<<<<<<<<<<<<
 *         return graph
 * 
 */
  __pyx_tuple__39 = PyTuple_Pack(1, __pyx_kp_s_Network_generator_parameters_are); if (unlikely(!__pyx_tuple__39)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 564; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__39);
  __Pyx_GIVEREF(__pyx_tuple__39);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":590
 *         retval = glpk.rmfgen(_graph, &source, &sink, a_cap, params)
 *         if retval is not 0:
 *             raise ValueError("Network generator parameters are inconsistent")             # <<<<<<<<<<<<<<
 *         return (graph, source, sink)
 * 
 */
  __pyx_tuple__40 = PyTuple_Pack(1, __pyx_kp_s_Network_generator_parameters_are); if (unlikely(!__pyx_tuple__40)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 590; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__40);
  __Pyx_GIVEREF(__pyx_tuple__40);

  /* "ecyglpki.pyx":31
 * 
 * 
 * def GLPK_version():             # <<<<<<<<<<<<<<
 *     return glpk.version().decode()
 * 
 */
  __pyx_codeobj__41 = (PyObject*)__Pyx_PyCode_New(0, 0, 0, 0, 0, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_home_equaeghe_werk_progs_ecyglp, __pyx_n_s_GLPK_version, 31, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__41)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":27
 * # basis factorization approach
 * cdef strpair2bftype = {
 *     ('LU', 'Forrest-Tomlin'): glpk.BF_LUF + glpk.BF_FT,             # <<<<<<<<<<<<<<
 *     ('LU', 'Bartels-Golub'): glpk.BF_LUF + glpk.BF_BG,
 *     ('LU', 'Givens'): glpk.BF_LUF + glpk.BF_GR,
 */
  __pyx_tuple__42 = PyTuple_Pack(2, __pyx_n_s_LU, __pyx_kp_s_Forrest_Tomlin); if (unlikely(!__pyx_tuple__42)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__42);
  __Pyx_GIVEREF(__pyx_tuple__42);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":28
 * cdef strpair2bftype = {
 *     ('LU', 'Forrest-Tomlin'): glpk.BF_LUF + glpk.BF_FT,
 *     ('LU', 'Bartels-Golub'): glpk.BF_LUF + glpk.BF_BG,             # <<<<<<<<<<<<<<
 *     ('LU', 'Givens'): glpk.BF_LUF + glpk.BF_GR,
 *     ('BTLU', 'Bartels-Golub'): glpk.BF_BTF + glpk.BF_BG,
 */
  __pyx_tuple__43 = PyTuple_Pack(2, __pyx_n_s_LU, __pyx_kp_s_Bartels_Golub); if (unlikely(!__pyx_tuple__43)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__43);
  __Pyx_GIVEREF(__pyx_tuple__43);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":29
 *     ('LU', 'Forrest-Tomlin'): glpk.BF_LUF + glpk.BF_FT,
 *     ('LU', 'Bartels-Golub'): glpk.BF_LUF + glpk.BF_BG,
 *     ('LU', 'Givens'): glpk.BF_LUF + glpk.BF_GR,             # <<<<<<<<<<<<<<
 *     ('BTLU', 'Bartels-Golub'): glpk.BF_BTF + glpk.BF_BG,
 *     ('BTLU', 'Givens'): glpk.BF_BTF + glpk.BF_GR
 */
  __pyx_tuple__44 = PyTuple_Pack(2, __pyx_n_s_LU, __pyx_n_s_Givens); if (unlikely(!__pyx_tuple__44)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__44);
  __Pyx_GIVEREF(__pyx_tuple__44);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":30
 *     ('LU', 'Bartels-Golub'): glpk.BF_LUF + glpk.BF_BG,
 *     ('LU', 'Givens'): glpk.BF_LUF + glpk.BF_GR,
 *     ('BTLU', 'Bartels-Golub'): glpk.BF_BTF + glpk.BF_BG,             # <<<<<<<<<<<<<<
 *     ('BTLU', 'Givens'): glpk.BF_BTF + glpk.BF_GR
 *     }
 */
  __pyx_tuple__45 = PyTuple_Pack(2, __pyx_n_s_BTLU, __pyx_kp_s_Bartels_Golub); if (unlikely(!__pyx_tuple__45)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__45);
  __Pyx_GIVEREF(__pyx_tuple__45);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":31
 *     ('LU', 'Givens'): glpk.BF_LUF + glpk.BF_GR,
 *     ('BTLU', 'Bartels-Golub'): glpk.BF_BTF + glpk.BF_BG,
 *     ('BTLU', 'Givens'): glpk.BF_BTF + glpk.BF_GR             # <<<<<<<<<<<<<<
 *     }
 * cdef bftype2strpair = {bftype: stringpair
 */
  __pyx_tuple__46 = PyTuple_Pack(2, __pyx_n_s_BTLU, __pyx_n_s_Givens); if (unlikely(!__pyx_tuple__46)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__46);
  __Pyx_GIVEREF(__pyx_tuple__46);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":60
 * # variable types
 * cdef pair2vartype = {
 *     (True, True): glpk.FR,             # <<<<<<<<<<<<<<
 *     (False, True): glpk.LO,
 *     (True, False): glpk.UP,
 */
  __pyx_tuple__47 = PyTuple_Pack(2, Py_True, Py_True); if (unlikely(!__pyx_tuple__47)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__47);
  __Pyx_GIVEREF(__pyx_tuple__47);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":61
 * cdef pair2vartype = {
 *     (True, True): glpk.FR,
 *     (False, True): glpk.LO,             # <<<<<<<<<<<<<<
 *     (True, False): glpk.UP,
 *     (False, False): glpk.DB
 */
  __pyx_tuple__48 = PyTuple_Pack(2, Py_False, Py_True); if (unlikely(!__pyx_tuple__48)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__48);
  __Pyx_GIVEREF(__pyx_tuple__48);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":62
 *     (True, True): glpk.FR,
 *     (False, True): glpk.LO,
 *     (True, False): glpk.UP,             # <<<<<<<<<<<<<<
 *     (False, False): glpk.DB
 *     }
 */
  __pyx_tuple__49 = PyTuple_Pack(2, Py_True, Py_False); if (unlikely(!__pyx_tuple__49)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__49);
  __Pyx_GIVEREF(__pyx_tuple__49);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":63
 *     (False, True): glpk.LO,
 *     (True, False): glpk.UP,
 *     (False, False): glpk.DB             # <<<<<<<<<<<<<<
 *     }
 * cdef vartype2str = {
 */
  __pyx_tuple__50 = PyTuple_Pack(2, Py_False, Py_False); if (unlikely(!__pyx_tuple__50)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__50);
  __Pyx_GIVEREF(__pyx_tuple__50);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":119
 *     'dominating': frozenset('lower'),
 *     'dominated': frozenset('upper'),
 *     'bounded': frozenset(['lower', 'upper']),             # <<<<<<<<<<<<<<
 *     'fixed': frozenset('fixed'),
 *     }
 */
  __pyx_tuple__51 = PyTuple_Pack(2, __pyx_n_s_lower, __pyx_n_s_upper); if (unlikely(!__pyx_tuple__51)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__51);
  __Pyx_GIVEREF(__pyx_tuple__51);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":162
 * # simplex return codes (errors)
 * cdef smretcode2error = {
 *     glpk.EBADB: ValueError("Basis is invalid."),             # <<<<<<<<<<<<<<
 *     glpk.ESING: ValueError("Basis matrix is singular."),
 *     glpk.ECOND: ValueError("Basis matrix is ill-conditioned."),
 */
  __pyx_tuple__52 = PyTuple_Pack(1, __pyx_kp_s_Basis_is_invalid); if (unlikely(!__pyx_tuple__52)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__52);
  __Pyx_GIVEREF(__pyx_tuple__52);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":163
 * cdef smretcode2error = {
 *     glpk.EBADB: ValueError("Basis is invalid."),
 *     glpk.ESING: ValueError("Basis matrix is singular."),             # <<<<<<<<<<<<<<
 *     glpk.ECOND: ValueError("Basis matrix is ill-conditioned."),
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),
 */
  __pyx_tuple__53 = PyTuple_Pack(1, __pyx_kp_s_Basis_matrix_is_singular); if (unlikely(!__pyx_tuple__53)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__53);
  __Pyx_GIVEREF(__pyx_tuple__53);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":164
 *     glpk.EBADB: ValueError("Basis is invalid."),
 *     glpk.ESING: ValueError("Basis matrix is singular."),
 *     glpk.ECOND: ValueError("Basis matrix is ill-conditioned."),             # <<<<<<<<<<<<<<
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 */
  __pyx_tuple__54 = PyTuple_Pack(1, __pyx_kp_s_Basis_matrix_is_ill_conditioned); if (unlikely(!__pyx_tuple__54)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__54);
  __Pyx_GIVEREF(__pyx_tuple__54);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":165
 *     glpk.ESING: ValueError("Basis matrix is singular."),
 *     glpk.ECOND: ValueError("Basis matrix is ill-conditioned."),
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),             # <<<<<<<<<<<<<<
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),
 */
  __pyx_tuple__55 = PyTuple_Pack(1, __pyx_kp_s_Incorrect_bounds_given); if (unlikely(!__pyx_tuple__55)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__55);
  __Pyx_GIVEREF(__pyx_tuple__55);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":166
 *     glpk.ECOND: ValueError("Basis matrix is ill-conditioned."),
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),
 *     glpk.EFAIL: RuntimeError("Solver failure."),             # <<<<<<<<<<<<<<
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 */
  __pyx_tuple__56 = PyTuple_Pack(1, __pyx_kp_s_Solver_failure); if (unlikely(!__pyx_tuple__56)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__56);
  __Pyx_GIVEREF(__pyx_tuple__56);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":167
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),             # <<<<<<<<<<<<<<
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 *     glpk.ENOPFS:
 */
  __pyx_tuple__57 = PyTuple_Pack(1, __pyx_kp_s_Iteration_limit_exceeded); if (unlikely(!__pyx_tuple__57)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__57);
  __Pyx_GIVEREF(__pyx_tuple__57);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":168
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),             # <<<<<<<<<<<<<<
 *     glpk.ENOPFS:
 *         StopIteration("Presolver: Problem has no primal feasible solution."),
 */
  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_kp_s_Time_limit_exceeded); if (unlikely(!__pyx_tuple__58)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__58);
  __Pyx_GIVEREF(__pyx_tuple__58);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":170
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 *     glpk.ENOPFS:
 *         StopIteration("Presolver: Problem has no primal feasible solution."),             # <<<<<<<<<<<<<<
 *     glpk.ENODFS:
 *         StopIteration("Presolver: Problem has no dual feasible solution.")
 */
  __pyx_tuple__59 = PyTuple_Pack(1, __pyx_kp_s_Presolver_Problem_has_no_primal); if (unlikely(!__pyx_tuple__59)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__59);
  __Pyx_GIVEREF(__pyx_tuple__59);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":172
 *         StopIteration("Presolver: Problem has no primal feasible solution."),
 *     glpk.ENODFS:
 *         StopIteration("Presolver: Problem has no dual feasible solution.")             # <<<<<<<<<<<<<<
 * }
 * 
 */
  __pyx_tuple__60 = PyTuple_Pack(1, __pyx_kp_s_Presolver_Problem_has_no_dual_fe); if (unlikely(!__pyx_tuple__60)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__60);
  __Pyx_GIVEREF(__pyx_tuple__60);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":183
 * # interior point return codes (errors)
 * cdef iptretcode2error = {
 *     glpk.EFAIL: ValueError("The problem has no rows/columns."),             # <<<<<<<<<<<<<<
 *     glpk.ENOCVG: ArithmeticError("Very slow convergence or divergence."),
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),
 */
  __pyx_tuple__61 = PyTuple_Pack(1, __pyx_kp_s_The_problem_has_no_rows_columns); if (unlikely(!__pyx_tuple__61)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__61);
  __Pyx_GIVEREF(__pyx_tuple__61);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":184
 * cdef iptretcode2error = {
 *     glpk.EFAIL: ValueError("The problem has no rows/columns."),
 *     glpk.ENOCVG: ArithmeticError("Very slow convergence or divergence."),             # <<<<<<<<<<<<<<
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),
 *     glpk.EINSTAB: ArithmeticError("Numerical instability " +
 */
  __pyx_tuple__62 = PyTuple_Pack(1, __pyx_kp_s_Very_slow_convergence_or_diverge); if (unlikely(!__pyx_tuple__62)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__62);
  __Pyx_GIVEREF(__pyx_tuple__62);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":185
 *     glpk.EFAIL: ValueError("The problem has no rows/columns."),
 *     glpk.ENOCVG: ArithmeticError("Very slow convergence or divergence."),
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),             # <<<<<<<<<<<<<<
 *     glpk.EINSTAB: ArithmeticError("Numerical instability " +
 *                                   "on solving Newtonian system.")
 */
  __pyx_tuple__63 = PyTuple_Pack(1, __pyx_kp_s_Iteration_limit_exceeded); if (unlikely(!__pyx_tuple__63)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__63);
  __Pyx_GIVEREF(__pyx_tuple__63);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":192
 * # integer optimization return codes (errors)
 * cdef ioretcode2error = {
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),             # <<<<<<<<<<<<<<
 *     glpk.EROOT: ValueError("No optimal LP relaxation basis provided."),
 *     glpk.ENOPFS: ValueError("LP relaxation is infeasible."),
 */
  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_kp_s_Incorrect_bounds_given); if (unlikely(!__pyx_tuple__64)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__64);
  __Pyx_GIVEREF(__pyx_tuple__64);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":193
 * cdef ioretcode2error = {
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),
 *     glpk.EROOT: ValueError("No optimal LP relaxation basis provided."),             # <<<<<<<<<<<<<<
 *     glpk.ENOPFS: ValueError("LP relaxation is infeasible."),
 *     glpk.ENODFS: ValueError("LP relaxation is unbounded."),
 */
  __pyx_tuple__65 = PyTuple_Pack(1, __pyx_kp_s_No_optimal_LP_relaxation_basis_p); if (unlikely(!__pyx_tuple__65)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__65);
  __Pyx_GIVEREF(__pyx_tuple__65);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":194
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),
 *     glpk.EROOT: ValueError("No optimal LP relaxation basis provided."),
 *     glpk.ENOPFS: ValueError("LP relaxation is infeasible."),             # <<<<<<<<<<<<<<
 *     glpk.ENODFS: ValueError("LP relaxation is unbounded."),
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 */
  __pyx_tuple__66 = PyTuple_Pack(1, __pyx_kp_s_LP_relaxation_is_infeasible); if (unlikely(!__pyx_tuple__66)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__66);
  __Pyx_GIVEREF(__pyx_tuple__66);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":195
 *     glpk.EROOT: ValueError("No optimal LP relaxation basis provided."),
 *     glpk.ENOPFS: ValueError("LP relaxation is infeasible."),
 *     glpk.ENODFS: ValueError("LP relaxation is unbounded."),             # <<<<<<<<<<<<<<
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 *     glpk.EMIPGAP: StopIteration("Relative mip gap tolerance has been reached"),
 */
  __pyx_tuple__67 = PyTuple_Pack(1, __pyx_kp_s_LP_relaxation_is_unbounded); if (unlikely(!__pyx_tuple__67)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__67);
  __Pyx_GIVEREF(__pyx_tuple__67);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":196
 *     glpk.ENOPFS: ValueError("LP relaxation is infeasible."),
 *     glpk.ENODFS: ValueError("LP relaxation is unbounded."),
 *     glpk.EFAIL: RuntimeError("Solver failure."),             # <<<<<<<<<<<<<<
 *     glpk.EMIPGAP: StopIteration("Relative mip gap tolerance has been reached"),
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 */
  __pyx_tuple__68 = PyTuple_Pack(1, __pyx_kp_s_Solver_failure); if (unlikely(!__pyx_tuple__68)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__68);
  __Pyx_GIVEREF(__pyx_tuple__68);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":197
 *     glpk.ENODFS: ValueError("LP relaxation is unbounded."),
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 *     glpk.EMIPGAP: StopIteration("Relative mip gap tolerance has been reached"),             # <<<<<<<<<<<<<<
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 *     glpk.ESTOP: StopIteration("Branch-and-cut callback terminated solver."),
 */
  __pyx_tuple__69 = PyTuple_Pack(1, __pyx_kp_s_Relative_mip_gap_tolerance_has_b); if (unlikely(!__pyx_tuple__69)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__69);
  __Pyx_GIVEREF(__pyx_tuple__69);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":198
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 *     glpk.EMIPGAP: StopIteration("Relative mip gap tolerance has been reached"),
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),             # <<<<<<<<<<<<<<
 *     glpk.ESTOP: StopIteration("Branch-and-cut callback terminated solver."),
 *     glpk.EDATA: ValueError("All problem parameters must be integer."),
 */
  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_kp_s_Time_limit_exceeded); if (unlikely(!__pyx_tuple__70)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__70);
  __Pyx_GIVEREF(__pyx_tuple__70);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":199
 *     glpk.EMIPGAP: StopIteration("Relative mip gap tolerance has been reached"),
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 *     glpk.ESTOP: StopIteration("Branch-and-cut callback terminated solver."),             # <<<<<<<<<<<<<<
 *     glpk.EDATA: ValueError("All problem parameters must be integer."),
 *     glpk.ERANGE: OverflowError("Integer overflow occurred when transforming " +
 */
  __pyx_tuple__71 = PyTuple_Pack(1, __pyx_kp_s_Branch_and_cut_callback_terminat); if (unlikely(!__pyx_tuple__71)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__71);
  __Pyx_GIVEREF(__pyx_tuple__71);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":200
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 *     glpk.ESTOP: StopIteration("Branch-and-cut callback terminated solver."),
 *     glpk.EDATA: ValueError("All problem parameters must be integer."),             # <<<<<<<<<<<<<<
 *     glpk.ERANGE: OverflowError("Integer overflow occurred when transforming " +
 *                                "to CNF SAT format.")
 */
  __pyx_tuple__72 = PyTuple_Pack(1, __pyx_kp_s_All_problem_parameters_must_be_i); if (unlikely(!__pyx_tuple__72)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__72);
  __Pyx_GIVEREF(__pyx_tuple__72);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":208
 * # condition indicator:
 * cdef pair2condind = {
 *     (False, 'equalities'): glpk.KKT_PE,             # <<<<<<<<<<<<<<
 *     (False, 'bounds'): glpk.KKT_PB,
 *     (True, 'equalities'): glpk.KKT_DE,
 */
  __pyx_tuple__73 = PyTuple_Pack(2, Py_False, __pyx_n_s_equalities); if (unlikely(!__pyx_tuple__73)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__73);
  __Pyx_GIVEREF(__pyx_tuple__73);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":209
 * cdef pair2condind = {
 *     (False, 'equalities'): glpk.KKT_PE,
 *     (False, 'bounds'): glpk.KKT_PB,             # <<<<<<<<<<<<<<
 *     (True, 'equalities'): glpk.KKT_DE,
 *     (True, 'bounds'): glpk.KKT_DB
 */
  __pyx_tuple__74 = PyTuple_Pack(2, Py_False, __pyx_n_s_bounds); if (unlikely(!__pyx_tuple__74)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__74);
  __Pyx_GIVEREF(__pyx_tuple__74);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":210
 *     (False, 'equalities'): glpk.KKT_PE,
 *     (False, 'bounds'): glpk.KKT_PB,
 *     (True, 'equalities'): glpk.KKT_DE,             # <<<<<<<<<<<<<<
 *     (True, 'bounds'): glpk.KKT_DB
 * }
 */
  __pyx_tuple__75 = PyTuple_Pack(2, Py_True, __pyx_n_s_equalities); if (unlikely(!__pyx_tuple__75)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__75);
  __Pyx_GIVEREF(__pyx_tuple__75);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":211
 *     (False, 'bounds'): glpk.KKT_PB,
 *     (True, 'equalities'): glpk.KKT_DE,
 *     (True, 'bounds'): glpk.KKT_DB             # <<<<<<<<<<<<<<
 * }
 * 
 */
  __pyx_tuple__76 = PyTuple_Pack(2, Py_True, __pyx_n_s_bounds); if (unlikely(!__pyx_tuple__76)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_tuple__76);
  __Pyx_GIVEREF(__pyx_tuple__76);
  __Pyx_RefNannyFinishContext();
  return 0;
  __pyx_L1_error:;
  __Pyx_RefNannyFinishContext();
  return -1;
}

static int __Pyx_InitGlobals(void) {
  if (__Pyx_InitStrings(__pyx_string_tab) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  __pyx_int_0 = PyInt_FromLong(0); if (unlikely(!__pyx_int_0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_int_1 = PyInt_FromLong(1); if (unlikely(!__pyx_int_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_int_256 = PyInt_FromLong(256); if (unlikely(!__pyx_int_256)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  return 0;
  __pyx_L1_error:;
  return -1;
}

#if PY_MAJOR_VERSION < 3
PyMODINIT_FUNC initecyglpki(void); /*proto*/
PyMODINIT_FUNC initecyglpki(void)
#else
PyMODINIT_FUNC PyInit_ecyglpki(void); /*proto*/
PyMODINIT_FUNC PyInit_ecyglpki(void)
#endif
{
  PyObject *__pyx_t_1 = NULL;
  PyObject *__pyx_t_2 = NULL;
  PyObject *__pyx_t_3 = NULL;
  Py_ssize_t __pyx_t_4;
  PyObject *(*__pyx_t_5)(PyObject *);
  PyObject *__pyx_t_6 = NULL;
  PyObject *__pyx_t_7 = NULL;
  PyObject *__pyx_t_8 = NULL;
  PyObject *(*__pyx_t_9)(PyObject *);
  int __pyx_lineno = 0;
  const char *__pyx_filename = NULL;
  int __pyx_clineno = 0;
  __Pyx_RefNannyDeclarations
  #if CYTHON_REFNANNY
  __Pyx_RefNanny = __Pyx_RefNannyImportAPI("refnanny");
  if (!__Pyx_RefNanny) {
      PyErr_Clear();
      __Pyx_RefNanny = __Pyx_RefNannyImportAPI("Cython.Runtime.refnanny");
      if (!__Pyx_RefNanny)
          Py_FatalError("failed to import 'refnanny' module");
  }
  #endif
  __Pyx_RefNannySetupContext("PyMODINIT_FUNC PyInit_ecyglpki(void)", 0);
  if ( __Pyx_check_binary_version() < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_empty_tuple = PyTuple_New(0); if (unlikely(!__pyx_empty_tuple)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_empty_bytes = PyBytes_FromStringAndSize("", 0); if (unlikely(!__pyx_empty_bytes)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #ifdef __Pyx_CyFunction_USED
  if (__Pyx_CyFunction_init() < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #endif
  #ifdef __Pyx_FusedFunction_USED
  if (__pyx_FusedFunction_init() < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #endif
  #ifdef __Pyx_Generator_USED
  if (__pyx_Generator_init() < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #endif
  /*--- Library function declarations ---*/
  /*--- Threads initialization code ---*/
  #if defined(__PYX_FORCE_INIT_THREADS) && __PYX_FORCE_INIT_THREADS
  #ifdef WITH_THREAD /* Python build with threading support? */
  PyEval_InitThreads();
  #endif
  #endif
  /*--- Module creation code ---*/
  #if PY_MAJOR_VERSION < 3
  __pyx_m = Py_InitModule4(__Pyx_NAMESTR("ecyglpki"), __pyx_methods, 0, 0, PYTHON_API_VERSION); Py_XINCREF(__pyx_m);
  #else
  __pyx_m = PyModule_Create(&__pyx_moduledef);
  #endif
  if (unlikely(!__pyx_m)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_d = PyModule_GetDict(__pyx_m); if (unlikely(!__pyx_d)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  Py_INCREF(__pyx_d);
  __pyx_b = PyImport_AddModule(__Pyx_NAMESTR(__Pyx_BUILTIN_MODULE_NAME)); if (unlikely(!__pyx_b)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #if CYTHON_COMPILING_IN_PYPY
  Py_INCREF(__pyx_b);
  #endif
  if (__Pyx_SetAttrString(__pyx_m, "__builtins__", __pyx_b) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  /*--- Initialize various global constants etc. ---*/
  if (unlikely(__Pyx_InitGlobals() < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #if PY_MAJOR_VERSION < 3 && (__PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT)
  if (__Pyx_init_sys_getdefaultencoding_params() < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  #endif
  if (__pyx_module_is_main_ecyglpki) {
    if (__Pyx_SetAttrString(__pyx_m, "__name__", __pyx_n_s_main) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;};
  }
  #if PY_MAJOR_VERSION >= 3
  {
    PyObject *modules = PyImport_GetModuleDict(); if (unlikely(!modules)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    if (!PyDict_GetItemString(modules, "ecyglpki")) {
      if (unlikely(PyDict_SetItemString(modules, "ecyglpki", __pyx_m) < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
    }
  }
  #endif
  /*--- Builtin init code ---*/
  if (unlikely(__Pyx_InitCachedBuiltins() < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Constants init code ---*/
  if (unlikely(__Pyx_InitCachedConstants() < 0)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  /*--- Global init code ---*/
  __pyx_v_8ecyglpki_str2meth = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_meth2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2pricing = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_pricing2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2rtest = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_rtest2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_strpair2bftype = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_bftype2strpair = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2ordalg = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_ordalg2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2brtech = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_brtech2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2bttech = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_bttech2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2pptech = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_pptech2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2msglev = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_msglev2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2optdir = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_optdir2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2varkind = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_varkind2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_pair2vartype = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_vartype2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2vartype = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2varstat = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_varstat2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_compatible_status = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2scalopt = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2solind = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_solstat2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_smretcode2error = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_smretcode2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_iptretcode2error = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_ioretcode2error = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_pair2condind = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2mpsfmt = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_reascode2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_origin2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_klass2str = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2klass = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2branchdir = Py_None; Py_INCREF(Py_None);
  __pyx_v_8ecyglpki_str2asnform = Py_None; Py_INCREF(Py_None);
  /*--- Variable export code ---*/
  /*--- Function export code ---*/
  /*--- Type init code ---*/
  if (PyType_Ready(&__pyx_type_8ecyglpki_SimplexControls) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki_SimplexControls.tp_print = 0;
  if (__Pyx_SetAttrString(__pyx_m, "SimplexControls", (PyObject *)&__pyx_type_8ecyglpki_SimplexControls) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8ecyglpki_SimplexControls = &__pyx_type_8ecyglpki_SimplexControls;
  if (PyType_Ready(&__pyx_type_8ecyglpki_FactorizationControls) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki_FactorizationControls.tp_print = 0;
  if (__Pyx_SetAttrString(__pyx_m, "FactorizationControls", (PyObject *)&__pyx_type_8ecyglpki_FactorizationControls) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8ecyglpki_FactorizationControls = &__pyx_type_8ecyglpki_FactorizationControls;
  if (PyType_Ready(&__pyx_type_8ecyglpki_IPointControls) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki_IPointControls.tp_print = 0;
  if (__Pyx_SetAttrString(__pyx_m, "IPointControls", (PyObject *)&__pyx_type_8ecyglpki_IPointControls) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8ecyglpki_IPointControls = &__pyx_type_8ecyglpki_IPointControls;
  if (PyType_Ready(&__pyx_type_8ecyglpki_CallbackFunction) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki_CallbackFunction.tp_print = 0;
  if (__Pyx_SetAttrString(__pyx_m, "CallbackFunction", (PyObject *)&__pyx_type_8ecyglpki_CallbackFunction) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8ecyglpki_CallbackFunction = &__pyx_type_8ecyglpki_CallbackFunction;
  if (PyType_Ready(&__pyx_type_8ecyglpki_CallbackInfo) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki_CallbackInfo.tp_print = 0;
  if (__Pyx_SetAttrString(__pyx_m, "CallbackInfo", (PyObject *)&__pyx_type_8ecyglpki_CallbackInfo) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8ecyglpki_CallbackInfo = &__pyx_type_8ecyglpki_CallbackInfo;
  if (PyType_Ready(&__pyx_type_8ecyglpki_IntOptControls) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki_IntOptControls.tp_print = 0;
  if (__Pyx_SetAttrString(__pyx_m, "IntOptControls", (PyObject *)&__pyx_type_8ecyglpki_IntOptControls) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8ecyglpki_IntOptControls = &__pyx_type_8ecyglpki_IntOptControls;
  if (PyType_Ready(&__pyx_type_8ecyglpki_Problem) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki_Problem.tp_print = 0;
  if (__Pyx_SetAttrString(__pyx_m, "Problem", (PyObject *)&__pyx_type_8ecyglpki_Problem) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 231; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8ecyglpki_Problem = &__pyx_type_8ecyglpki_Problem;
  if (PyType_Ready(&__pyx_type_8ecyglpki_Tree) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki_Tree.tp_print = 0;
  if (__Pyx_SetAttrString(__pyx_m, "Tree", (PyObject *)&__pyx_type_8ecyglpki_Tree) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8ecyglpki_Tree = &__pyx_type_8ecyglpki_Tree;
  if (PyType_Ready(&__pyx_type_8ecyglpki_Vertex) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki_Vertex.tp_print = 0;
  if (__Pyx_SetAttrString(__pyx_m, "Vertex", (PyObject *)&__pyx_type_8ecyglpki_Vertex) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 25; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8ecyglpki_Vertex = &__pyx_type_8ecyglpki_Vertex;
  if (PyType_Ready(&__pyx_type_8ecyglpki_Arc) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki_Arc.tp_print = 0;
  if (__Pyx_SetAttrString(__pyx_m, "Arc", (PyObject *)&__pyx_type_8ecyglpki_Arc) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8ecyglpki_Arc = &__pyx_type_8ecyglpki_Arc;
  if (PyType_Ready(&__pyx_type_8ecyglpki_Graph) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki_Graph.tp_print = 0;
  if (__Pyx_SetAttrString(__pyx_m, "Graph", (PyObject *)&__pyx_type_8ecyglpki_Graph) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_ptype_8ecyglpki_Graph = &__pyx_type_8ecyglpki_Graph;
  if (PyType_Ready(&__pyx_type_8ecyglpki___pyx_scope_struct__load_matrix) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 397; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki___pyx_scope_struct__load_matrix.tp_print = 0;
  __pyx_ptype_8ecyglpki___pyx_scope_struct__load_matrix = &__pyx_type_8ecyglpki___pyx_scope_struct__load_matrix;
  if (PyType_Ready(&__pyx_type_8ecyglpki___pyx_scope_struct_1_genexpr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 405; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki___pyx_scope_struct_1_genexpr.tp_print = 0;
  __pyx_ptype_8ecyglpki___pyx_scope_struct_1_genexpr = &__pyx_type_8ecyglpki___pyx_scope_struct_1_genexpr;
  if (PyType_Ready(&__pyx_type_8ecyglpki___pyx_scope_struct_2_scale_prob) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 687; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki___pyx_scope_struct_2_scale_prob.tp_print = 0;
  __pyx_ptype_8ecyglpki___pyx_scope_struct_2_scale_prob = &__pyx_type_8ecyglpki___pyx_scope_struct_2_scale_prob;
  if (PyType_Ready(&__pyx_type_8ecyglpki___pyx_scope_struct_3_genexpr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 695; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki___pyx_scope_struct_3_genexpr.tp_print = 0;
  __pyx_ptype_8ecyglpki___pyx_scope_struct_3_genexpr = &__pyx_type_8ecyglpki___pyx_scope_struct_3_genexpr;
  if (PyType_Ready(&__pyx_type_8ecyglpki___pyx_scope_struct_4_ftran) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1016; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki___pyx_scope_struct_4_ftran.tp_print = 0;
  __pyx_ptype_8ecyglpki___pyx_scope_struct_4_ftran = &__pyx_type_8ecyglpki___pyx_scope_struct_4_ftran;
  if (PyType_Ready(&__pyx_type_8ecyglpki___pyx_scope_struct_5_genexpr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1018; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki___pyx_scope_struct_5_genexpr.tp_print = 0;
  __pyx_ptype_8ecyglpki___pyx_scope_struct_5_genexpr = &__pyx_type_8ecyglpki___pyx_scope_struct_5_genexpr;
  if (PyType_Ready(&__pyx_type_8ecyglpki___pyx_scope_struct_6_genexpr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1030; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki___pyx_scope_struct_6_genexpr.tp_print = 0;
  __pyx_ptype_8ecyglpki___pyx_scope_struct_6_genexpr = &__pyx_type_8ecyglpki___pyx_scope_struct_6_genexpr;
  if (PyType_Ready(&__pyx_type_8ecyglpki___pyx_scope_struct_7_btran) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1032; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki___pyx_scope_struct_7_btran.tp_print = 0;
  __pyx_ptype_8ecyglpki___pyx_scope_struct_7_btran = &__pyx_type_8ecyglpki___pyx_scope_struct_7_btran;
  if (PyType_Ready(&__pyx_type_8ecyglpki___pyx_scope_struct_8_genexpr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1034; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki___pyx_scope_struct_8_genexpr.tp_print = 0;
  __pyx_ptype_8ecyglpki___pyx_scope_struct_8_genexpr = &__pyx_type_8ecyglpki___pyx_scope_struct_8_genexpr;
  if (PyType_Ready(&__pyx_type_8ecyglpki___pyx_scope_struct_9_genexpr) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1046; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __pyx_type_8ecyglpki___pyx_scope_struct_9_genexpr.tp_print = 0;
  __pyx_ptype_8ecyglpki___pyx_scope_struct_9_genexpr = &__pyx_type_8ecyglpki___pyx_scope_struct_9_genexpr;
  /*--- Type import code ---*/
  /*--- Variable import code ---*/
  /*--- Function import code ---*/
  /*--- Execution code ---*/

  /* "ecyglpki.pyx":27
 * cimport glpk
 * from cpython.pycapsule cimport PyCapsule_New, PyCapsule_GetPointer
 * import numbers             # <<<<<<<<<<<<<<
 * import collections.abc
 * 
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_numbers, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_numbers, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "ecyglpki.pyx":28
 * from cpython.pycapsule cimport PyCapsule_New, PyCapsule_GetPointer
 * import numbers
 * import collections.abc             # <<<<<<<<<<<<<<
 * 
 * 
 */
  __pyx_t_1 = __Pyx_Import(__pyx_n_s_collections_abc, 0, -1); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_collections, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "ecyglpki.pyx":31
 * 
 * 
 * def GLPK_version():             # <<<<<<<<<<<<<<
 *     return glpk.version().decode()
 * 
 */
  __pyx_t_1 = PyCFunction_NewEx(&__pyx_mdef_8ecyglpki_1GLPK_version, NULL, __pyx_n_s_ecyglpki); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_GLPK_version, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":26
 * 
 * # simplex method
 * cdef str2meth = {             # <<<<<<<<<<<<<<
 *     'primal': glpk.PRIMAL,
 *     'dual': glpk.DUAL,
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":27
 * # simplex method
 * cdef str2meth = {
 *     'primal': glpk.PRIMAL,             # <<<<<<<<<<<<<<
 *     'dual': glpk.DUAL,
 *     'dual_fail_primal': glpk.DUALP
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_PRIMAL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_primal, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":28
 * cdef str2meth = {
 *     'primal': glpk.PRIMAL,
 *     'dual': glpk.DUAL,             # <<<<<<<<<<<<<<
 *     'dual_fail_primal': glpk.DUALP
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_DUAL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dual, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":29
 *     'primal': glpk.PRIMAL,
 *     'dual': glpk.DUAL,
 *     'dual_fail_primal': glpk.DUALP             # <<<<<<<<<<<<<<
 *     }
 * cdef meth2str = {meth: string for string, meth in str2meth.items()}
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_DUALP); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dual_fail_primal, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2meth);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2meth, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":31
 *     'dual_fail_primal': glpk.DUALP
 *     }
 * cdef meth2str = {meth: string for string, meth in str2meth.items()}             # <<<<<<<<<<<<<<
 * 
 * # pricing strategy
 */
  { /* enter inner scope */
    PyObject *__pyx_7genexpr__pyx_v_8ecyglpki_string = NULL;
    PyObject *__pyx_7genexpr__pyx_v_8ecyglpki_meth = NULL;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_str2meth, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        #endif
      } else {
        __pyx_t_3 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L7_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L7_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L8_unpacking_done;
        __pyx_L7_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
        __pyx_L8_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_8ecyglpki_string, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_8ecyglpki_meth, __pyx_t_7);
      __pyx_t_7 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_7genexpr__pyx_v_8ecyglpki_meth, (PyObject*)__pyx_7genexpr__pyx_v_8ecyglpki_string))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L4_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_7genexpr__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_7genexpr__pyx_v_8ecyglpki_meth);
    goto __pyx_L9_exit_scope;
    __pyx_L4_error:;
    __Pyx_XDECREF(__pyx_7genexpr__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_7genexpr__pyx_v_8ecyglpki_meth);
    goto __pyx_L1_error;
    __pyx_L9_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_meth2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_meth2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":34
 * 
 * # pricing strategy
 * cdef str2pricing = {             # <<<<<<<<<<<<<<
 *     'Dantzig': glpk.PT_STD,
 *     'steepest': glpk.PT_PSE
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":35
 * # pricing strategy
 * cdef str2pricing = {
 *     'Dantzig': glpk.PT_STD,             # <<<<<<<<<<<<<<
 *     'steepest': glpk.PT_PSE
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_PT_STD); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_Dantzig, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":36
 * cdef str2pricing = {
 *     'Dantzig': glpk.PT_STD,
 *     'steepest': glpk.PT_PSE             # <<<<<<<<<<<<<<
 *     }
 * cdef pricing2str = {pricing: string for string, pricing in str2pricing.items()}
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_PT_PSE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_steepest, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2pricing);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2pricing, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":38
 *     'steepest': glpk.PT_PSE
 *     }
 * cdef pricing2str = {pricing: string for string, pricing in str2pricing.items()}             # <<<<<<<<<<<<<<
 * 
 * # ratio test type
 */
  { /* enter inner scope */
    PyObject *__pyx_8genexpr1__pyx_v_8ecyglpki_string = NULL;
    PyObject *__pyx_8genexpr1__pyx_v_8ecyglpki_pricing = NULL;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_str2pricing, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
        #endif
      } else {
        __pyx_t_3 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L15_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L15_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L16_unpacking_done;
        __pyx_L15_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
        __pyx_L16_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_8ecyglpki_string, __pyx_t_7);
      __pyx_t_7 = 0;
      __Pyx_XDECREF_SET(__pyx_8genexpr1__pyx_v_8ecyglpki_pricing, __pyx_t_6);
      __pyx_t_6 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr1__pyx_v_8ecyglpki_pricing, (PyObject*)__pyx_8genexpr1__pyx_v_8ecyglpki_string))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L12_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_8ecyglpki_pricing);
    goto __pyx_L17_exit_scope;
    __pyx_L12_error:;
    __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr1__pyx_v_8ecyglpki_pricing);
    goto __pyx_L1_error;
    __pyx_L17_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_pricing2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_pricing2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":41
 * 
 * # ratio test type
 * cdef str2rtest = {             # <<<<<<<<<<<<<<
 *     'standard': glpk.RT_STD,
 *     'Harris': glpk.RT_HAR
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":42
 * # ratio test type
 * cdef str2rtest = {
 *     'standard': glpk.RT_STD,             # <<<<<<<<<<<<<<
 *     'Harris': glpk.RT_HAR
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_RT_STD); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_standard, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":43
 * cdef str2rtest = {
 *     'standard': glpk.RT_STD,
 *     'Harris': glpk.RT_HAR             # <<<<<<<<<<<<<<
 *     }
 * cdef rtest2str = {r_test: string for string, r_test in str2rtest.items()}
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_RT_HAR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_Harris, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 41; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2rtest);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2rtest, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-smcp.pxi":45
 *     'Harris': glpk.RT_HAR
 *     }
 * cdef rtest2str = {r_test: string for string, r_test in str2rtest.items()}             # <<<<<<<<<<<<<<
 * 
 * 
 */
  { /* enter inner scope */
    PyObject *__pyx_8genexpr2__pyx_v_8ecyglpki_string = NULL;
    PyObject *__pyx_8genexpr2__pyx_v_8ecyglpki_r_test = NULL;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_str2rtest, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
        #endif
      } else {
        __pyx_t_3 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L23_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L23_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L24_unpacking_done;
        __pyx_L23_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
        __pyx_L24_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_8ecyglpki_string, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_8genexpr2__pyx_v_8ecyglpki_r_test, __pyx_t_7);
      __pyx_t_7 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr2__pyx_v_8ecyglpki_r_test, (PyObject*)__pyx_8genexpr2__pyx_v_8ecyglpki_string))) {__pyx_filename = __pyx_f[3]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L20_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_8ecyglpki_r_test);
    goto __pyx_L25_exit_scope;
    __pyx_L20_error:;
    __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr2__pyx_v_8ecyglpki_r_test);
    goto __pyx_L1_error;
    __pyx_L25_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_rtest2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_rtest2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":26
 * 
 * # basis factorization approach
 * cdef strpair2bftype = {             # <<<<<<<<<<<<<<
 *     ('LU', 'Forrest-Tomlin'): glpk.BF_LUF + glpk.BF_FT,
 *     ('LU', 'Bartels-Golub'): glpk.BF_LUF + glpk.BF_BG,
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":27
 * # basis factorization approach
 * cdef strpair2bftype = {
 *     ('LU', 'Forrest-Tomlin'): glpk.BF_LUF + glpk.BF_FT,             # <<<<<<<<<<<<<<
 *     ('LU', 'Bartels-Golub'): glpk.BF_LUF + glpk.BF_BG,
 *     ('LU', 'Givens'): glpk.BF_LUF + glpk.BF_GR,
 */
  __pyx_t_2 = __Pyx_PyInt_From_int((GLP_BF_LUF + GLP_BF_FT)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_tuple__42, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":28
 * cdef strpair2bftype = {
 *     ('LU', 'Forrest-Tomlin'): glpk.BF_LUF + glpk.BF_FT,
 *     ('LU', 'Bartels-Golub'): glpk.BF_LUF + glpk.BF_BG,             # <<<<<<<<<<<<<<
 *     ('LU', 'Givens'): glpk.BF_LUF + glpk.BF_GR,
 *     ('BTLU', 'Bartels-Golub'): glpk.BF_BTF + glpk.BF_BG,
 */
  __pyx_t_2 = __Pyx_PyInt_From_int((GLP_BF_LUF + GLP_BF_BG)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_tuple__43, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":29
 *     ('LU', 'Forrest-Tomlin'): glpk.BF_LUF + glpk.BF_FT,
 *     ('LU', 'Bartels-Golub'): glpk.BF_LUF + glpk.BF_BG,
 *     ('LU', 'Givens'): glpk.BF_LUF + glpk.BF_GR,             # <<<<<<<<<<<<<<
 *     ('BTLU', 'Bartels-Golub'): glpk.BF_BTF + glpk.BF_BG,
 *     ('BTLU', 'Givens'): glpk.BF_BTF + glpk.BF_GR
 */
  __pyx_t_2 = __Pyx_PyInt_From_int((GLP_BF_LUF + GLP_BF_GR)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_tuple__44, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":30
 *     ('LU', 'Bartels-Golub'): glpk.BF_LUF + glpk.BF_BG,
 *     ('LU', 'Givens'): glpk.BF_LUF + glpk.BF_GR,
 *     ('BTLU', 'Bartels-Golub'): glpk.BF_BTF + glpk.BF_BG,             # <<<<<<<<<<<<<<
 *     ('BTLU', 'Givens'): glpk.BF_BTF + glpk.BF_GR
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int((GLP_BF_BTF + GLP_BF_BG)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_tuple__45, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":31
 *     ('LU', 'Givens'): glpk.BF_LUF + glpk.BF_GR,
 *     ('BTLU', 'Bartels-Golub'): glpk.BF_BTF + glpk.BF_BG,
 *     ('BTLU', 'Givens'): glpk.BF_BTF + glpk.BF_GR             # <<<<<<<<<<<<<<
 *     }
 * cdef bftype2strpair = {bftype: stringpair
 */
  __pyx_t_2 = __Pyx_PyInt_From_int((GLP_BF_BTF + GLP_BF_GR)); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_tuple__46, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_strpair2bftype);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_strpair2bftype, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":33
 *     ('BTLU', 'Givens'): glpk.BF_BTF + glpk.BF_GR
 *     }
 * cdef bftype2strpair = {bftype: stringpair             # <<<<<<<<<<<<<<
 *                        for stringpair, bftype in strpair2bftype.items()}
 * 
 */
  { /* enter inner scope */
    PyObject *__pyx_8genexpr3__pyx_v_8ecyglpki_stringpair = NULL;
    PyObject *__pyx_8genexpr3__pyx_v_8ecyglpki_bftype = NULL;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
    __Pyx_GOTREF(__pyx_t_1);

    /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":34
 *     }
 * cdef bftype2strpair = {bftype: stringpair
 *                        for stringpair, bftype in strpair2bftype.items()}             # <<<<<<<<<<<<<<
 * 
 * 
 */
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_strpair2bftype, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
        #endif
      } else {
        __pyx_t_3 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L31_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L31_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L32_unpacking_done;
        __pyx_L31_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[4]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
        __pyx_L32_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_8genexpr3__pyx_v_8ecyglpki_stringpair, __pyx_t_7);
      __pyx_t_7 = 0;
      __Pyx_XDECREF_SET(__pyx_8genexpr3__pyx_v_8ecyglpki_bftype, __pyx_t_6);
      __pyx_t_6 = 0;

      /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-bfcp.pxi":33
 *     ('BTLU', 'Givens'): glpk.BF_BTF + glpk.BF_GR
 *     }
 * cdef bftype2strpair = {bftype: stringpair             # <<<<<<<<<<<<<<
 *                        for stringpair, bftype in strpair2bftype.items()}
 * 
 */
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr3__pyx_v_8ecyglpki_bftype, (PyObject*)__pyx_8genexpr3__pyx_v_8ecyglpki_stringpair))) {__pyx_filename = __pyx_f[4]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L28_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_8ecyglpki_stringpair);
    __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_8ecyglpki_bftype);
    goto __pyx_L33_exit_scope;
    __pyx_L28_error:;
    __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_8ecyglpki_stringpair);
    __Pyx_XDECREF(__pyx_8genexpr3__pyx_v_8ecyglpki_bftype);
    goto __pyx_L1_error;
    __pyx_L33_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_bftype2strpair);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_bftype2strpair, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":26
 * 
 * # ordering algorithm
 * cdef str2ordalg = {             # <<<<<<<<<<<<<<
 *     'orig': glpk.ORD_NONE,
 *     'qmd': glpk.ORD_QMD,
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":27
 * # ordering algorithm
 * cdef str2ordalg = {
 *     'orig': glpk.ORD_NONE,             # <<<<<<<<<<<<<<
 *     'qmd': glpk.ORD_QMD,
 *     'amd': glpk.ORD_AMD,
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_ORD_NONE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_orig, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":28
 * cdef str2ordalg = {
 *     'orig': glpk.ORD_NONE,
 *     'qmd': glpk.ORD_QMD,             # <<<<<<<<<<<<<<
 *     'amd': glpk.ORD_AMD,
 *     'symamd': glpk.ORD_SYMAMD
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_ORD_QMD); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_qmd, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":29
 *     'orig': glpk.ORD_NONE,
 *     'qmd': glpk.ORD_QMD,
 *     'amd': glpk.ORD_AMD,             # <<<<<<<<<<<<<<
 *     'symamd': glpk.ORD_SYMAMD
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_ORD_AMD); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_amd, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":30
 *     'qmd': glpk.ORD_QMD,
 *     'amd': glpk.ORD_AMD,
 *     'symamd': glpk.ORD_SYMAMD             # <<<<<<<<<<<<<<
 *     }
 * cdef ordalg2str = {ord_alg: string for string, ord_alg in str2ordalg.items()}
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_ORD_SYMAMD); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_symamd, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2ordalg);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2ordalg, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iptcp.pxi":32
 *     'symamd': glpk.ORD_SYMAMD
 *     }
 * cdef ordalg2str = {ord_alg: string for string, ord_alg in str2ordalg.items()}             # <<<<<<<<<<<<<<
 * 
 * 
 */
  { /* enter inner scope */
    PyObject *__pyx_8genexpr4__pyx_v_8ecyglpki_string = NULL;
    PyObject *__pyx_8genexpr4__pyx_v_8ecyglpki_ord_alg = NULL;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_str2ordalg, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
        #endif
      } else {
        __pyx_t_3 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L39_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L39_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L40_unpacking_done;
        __pyx_L39_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
        __pyx_L40_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_8genexpr4__pyx_v_8ecyglpki_string, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_8genexpr4__pyx_v_8ecyglpki_ord_alg, __pyx_t_7);
      __pyx_t_7 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr4__pyx_v_8ecyglpki_ord_alg, (PyObject*)__pyx_8genexpr4__pyx_v_8ecyglpki_string))) {__pyx_filename = __pyx_f[5]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L36_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_8ecyglpki_ord_alg);
    goto __pyx_L41_exit_scope;
    __pyx_L36_error:;
    __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr4__pyx_v_8ecyglpki_ord_alg);
    goto __pyx_L1_error;
    __pyx_L41_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_ordalg2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_ordalg2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":45
 * 
 * # branching technique
 * cdef str2brtech = {             # <<<<<<<<<<<<<<
 *     'first_fracvar': glpk.BR_FFV,
 *     'last_fracvar': glpk.BR_LFV,
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":46
 * # branching technique
 * cdef str2brtech = {
 *     'first_fracvar': glpk.BR_FFV,             # <<<<<<<<<<<<<<
 *     'last_fracvar': glpk.BR_LFV,
 *     'most_fracvar': glpk.BR_MFV,
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_BR_FFV); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_first_fracvar, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":47
 * cdef str2brtech = {
 *     'first_fracvar': glpk.BR_FFV,
 *     'last_fracvar': glpk.BR_LFV,             # <<<<<<<<<<<<<<
 *     'most_fracvar': glpk.BR_MFV,
 *     'Driebeek-Tomlin': glpk.BR_DTH,
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_BR_LFV); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_last_fracvar, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":48
 *     'first_fracvar': glpk.BR_FFV,
 *     'last_fracvar': glpk.BR_LFV,
 *     'most_fracvar': glpk.BR_MFV,             # <<<<<<<<<<<<<<
 *     'Driebeek-Tomlin': glpk.BR_DTH,
 *     'hybrid_peudocost': glpk.BR_PCH
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_BR_MFV); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 48; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_most_fracvar, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":49
 *     'last_fracvar': glpk.BR_LFV,
 *     'most_fracvar': glpk.BR_MFV,
 *     'Driebeek-Tomlin': glpk.BR_DTH,             # <<<<<<<<<<<<<<
 *     'hybrid_peudocost': glpk.BR_PCH
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_BR_DTH); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_kp_s_Driebeek_Tomlin, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":50
 *     'most_fracvar': glpk.BR_MFV,
 *     'Driebeek-Tomlin': glpk.BR_DTH,
 *     'hybrid_peudocost': glpk.BR_PCH             # <<<<<<<<<<<<<<
 *     }
 * cdef brtech2str = {br_tech: string for string, br_tech in str2brtech.items()}
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_BR_PCH); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_hybrid_peudocost, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2brtech);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2brtech, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":52
 *     'hybrid_peudocost': glpk.BR_PCH
 *     }
 * cdef brtech2str = {br_tech: string for string, br_tech in str2brtech.items()}             # <<<<<<<<<<<<<<
 * 
 * # backtracking technique
 */
  { /* enter inner scope */
    PyObject *__pyx_8genexpr5__pyx_v_8ecyglpki_string = NULL;
    PyObject *__pyx_8genexpr5__pyx_v_8ecyglpki_br_tech = NULL;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_str2brtech, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
        #endif
      } else {
        __pyx_t_3 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L47_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L47_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L48_unpacking_done;
        __pyx_L47_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
        __pyx_L48_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_8genexpr5__pyx_v_8ecyglpki_string, __pyx_t_7);
      __pyx_t_7 = 0;
      __Pyx_XDECREF_SET(__pyx_8genexpr5__pyx_v_8ecyglpki_br_tech, __pyx_t_6);
      __pyx_t_6 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr5__pyx_v_8ecyglpki_br_tech, (PyObject*)__pyx_8genexpr5__pyx_v_8ecyglpki_string))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L44_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_8ecyglpki_br_tech);
    goto __pyx_L49_exit_scope;
    __pyx_L44_error:;
    __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr5__pyx_v_8ecyglpki_br_tech);
    goto __pyx_L1_error;
    __pyx_L49_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_brtech2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_brtech2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":55
 * 
 * # backtracking technique
 * cdef str2bttech = {             # <<<<<<<<<<<<<<
 *     'depth': glpk.BT_DFS,
 *     'breadth': glpk.BT_BFS,
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":56
 * # backtracking technique
 * cdef str2bttech = {
 *     'depth': glpk.BT_DFS,             # <<<<<<<<<<<<<<
 *     'breadth': glpk.BT_BFS,
 *     'bound': glpk.BT_BLB,
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_BT_DFS); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_depth, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":57
 * cdef str2bttech = {
 *     'depth': glpk.BT_DFS,
 *     'breadth': glpk.BT_BFS,             # <<<<<<<<<<<<<<
 *     'bound': glpk.BT_BLB,
 *     'projection': glpk.BT_BPH
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_BT_BFS); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 57; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_breadth, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":58
 *     'depth': glpk.BT_DFS,
 *     'breadth': glpk.BT_BFS,
 *     'bound': glpk.BT_BLB,             # <<<<<<<<<<<<<<
 *     'projection': glpk.BT_BPH
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_BT_BLB); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 58; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_bound, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":59
 *     'breadth': glpk.BT_BFS,
 *     'bound': glpk.BT_BLB,
 *     'projection': glpk.BT_BPH             # <<<<<<<<<<<<<<
 *     }
 * cdef bttech2str = {bt_tech: string for string, bt_tech in str2bttech.items()}
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_BT_BPH); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_projection, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2bttech);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2bttech, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":61
 *     'projection': glpk.BT_BPH
 *     }
 * cdef bttech2str = {bt_tech: string for string, bt_tech in str2bttech.items()}             # <<<<<<<<<<<<<<
 * 
 * # preprocessing technique
 */
  { /* enter inner scope */
    PyObject *__pyx_8genexpr6__pyx_v_8ecyglpki_string = NULL;
    PyObject *__pyx_8genexpr6__pyx_v_8ecyglpki_bt_tech = NULL;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_str2bttech, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
        #endif
      } else {
        __pyx_t_3 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L55_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L55_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L56_unpacking_done;
        __pyx_L55_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
        __pyx_L56_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_8genexpr6__pyx_v_8ecyglpki_string, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_8genexpr6__pyx_v_8ecyglpki_bt_tech, __pyx_t_7);
      __pyx_t_7 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr6__pyx_v_8ecyglpki_bt_tech, (PyObject*)__pyx_8genexpr6__pyx_v_8ecyglpki_string))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L52_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_8ecyglpki_bt_tech);
    goto __pyx_L57_exit_scope;
    __pyx_L52_error:;
    __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr6__pyx_v_8ecyglpki_bt_tech);
    goto __pyx_L1_error;
    __pyx_L57_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_bttech2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_bttech2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":64
 * 
 * # preprocessing technique
 * cdef str2pptech = {             # <<<<<<<<<<<<<<
 *     'none': glpk.PP_NONE,
 *     'root': glpk.PP_ROOT,
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":65
 * # preprocessing technique
 * cdef str2pptech = {
 *     'none': glpk.PP_NONE,             # <<<<<<<<<<<<<<
 *     'root': glpk.PP_ROOT,
 *     'all': glpk.PP_ALL
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_PP_NONE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_none, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":66
 * cdef str2pptech = {
 *     'none': glpk.PP_NONE,
 *     'root': glpk.PP_ROOT,             # <<<<<<<<<<<<<<
 *     'all': glpk.PP_ALL
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_PP_ROOT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_root, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":67
 *     'none': glpk.PP_NONE,
 *     'root': glpk.PP_ROOT,
 *     'all': glpk.PP_ALL             # <<<<<<<<<<<<<<
 *     }
 * cdef pptech2str = {pp_tech: string for string, pp_tech in str2pptech.items()}
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_PP_ALL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_all, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 64; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2pptech);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2pptech, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-iocp.pxi":69
 *     'all': glpk.PP_ALL
 *     }
 * cdef pptech2str = {pp_tech: string for string, pp_tech in str2pptech.items()}             # <<<<<<<<<<<<<<
 * 
 * 
 */
  { /* enter inner scope */
    PyObject *__pyx_8genexpr7__pyx_v_8ecyglpki_string = NULL;
    PyObject *__pyx_8genexpr7__pyx_v_8ecyglpki_pp_tech = NULL;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_str2pptech, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
        #endif
      } else {
        __pyx_t_3 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L63_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L63_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L64_unpacking_done;
        __pyx_L63_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
        __pyx_L64_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_8genexpr7__pyx_v_8ecyglpki_string, __pyx_t_7);
      __pyx_t_7 = 0;
      __Pyx_XDECREF_SET(__pyx_8genexpr7__pyx_v_8ecyglpki_pp_tech, __pyx_t_6);
      __pyx_t_6 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr7__pyx_v_8ecyglpki_pp_tech, (PyObject*)__pyx_8genexpr7__pyx_v_8ecyglpki_string))) {__pyx_filename = __pyx_f[6]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L60_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_8ecyglpki_pp_tech);
    goto __pyx_L65_exit_scope;
    __pyx_L60_error:;
    __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr7__pyx_v_8ecyglpki_pp_tech);
    goto __pyx_L1_error;
    __pyx_L65_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_pptech2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_pptech2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":26
 * 
 * from libc.limits cimport INT_MAX
 * cdef int int_MAX = int(INT_MAX)             # <<<<<<<<<<<<<<
 * 
 * from libc.float cimport DBL_MAX
 */
  __pyx_v_8ecyglpki_int_MAX = ((int)INT_MAX);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":29
 * 
 * from libc.float cimport DBL_MAX
 * cdef double double_MAX = DBL_MAX             # <<<<<<<<<<<<<<
 * 
 * # message levels
 */
  __pyx_v_8ecyglpki_double_MAX = DBL_MAX;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":32
 * 
 * # message levels
 * cdef str2msglev = {             # <<<<<<<<<<<<<<
 *     'no': glpk.MSG_OFF,
 *     'warnerror': glpk.MSG_ERR,
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":33
 * # message levels
 * cdef str2msglev = {
 *     'no': glpk.MSG_OFF,             # <<<<<<<<<<<<<<
 *     'warnerror': glpk.MSG_ERR,
 *     'normal': glpk.MSG_ON,
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_MSG_OFF); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_no, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":34
 * cdef str2msglev = {
 *     'no': glpk.MSG_OFF,
 *     'warnerror': glpk.MSG_ERR,             # <<<<<<<<<<<<<<
 *     'normal': glpk.MSG_ON,
 *     'full': glpk.MSG_ALL
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_MSG_ERR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 34; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_warnerror, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":35
 *     'no': glpk.MSG_OFF,
 *     'warnerror': glpk.MSG_ERR,
 *     'normal': glpk.MSG_ON,             # <<<<<<<<<<<<<<
 *     'full': glpk.MSG_ALL
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_MSG_ON); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 35; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_normal, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":36
 *     'warnerror': glpk.MSG_ERR,
 *     'normal': glpk.MSG_ON,
 *     'full': glpk.MSG_ALL             # <<<<<<<<<<<<<<
 *     }
 * cdef msglev2str = {msg_lev: string for string, msg_lev in str2msglev.items()}
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_MSG_ALL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 36; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_full, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2msglev);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2msglev, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":38
 *     'full': glpk.MSG_ALL
 *     }
 * cdef msglev2str = {msg_lev: string for string, msg_lev in str2msglev.items()}             # <<<<<<<<<<<<<<
 * 
 * 
 */
  { /* enter inner scope */
    PyObject *__pyx_8genexpr8__pyx_v_8ecyglpki_string = NULL;
    PyObject *__pyx_8genexpr8__pyx_v_8ecyglpki_msg_lev = NULL;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_str2msglev, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
        #endif
      } else {
        __pyx_t_3 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L71_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L71_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L72_unpacking_done;
        __pyx_L71_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
        __pyx_L72_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_8genexpr8__pyx_v_8ecyglpki_string, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_8genexpr8__pyx_v_8ecyglpki_msg_lev, __pyx_t_7);
      __pyx_t_7 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr8__pyx_v_8ecyglpki_msg_lev, (PyObject*)__pyx_8genexpr8__pyx_v_8ecyglpki_string))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L68_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_8genexpr8__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr8__pyx_v_8ecyglpki_msg_lev);
    goto __pyx_L73_exit_scope;
    __pyx_L68_error:;
    __Pyx_XDECREF(__pyx_8genexpr8__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr8__pyx_v_8ecyglpki_msg_lev);
    goto __pyx_L1_error;
    __pyx_L73_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_msglev2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_msglev2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":42
 * 
 * # optimization directions
 * cdef str2optdir = {             # <<<<<<<<<<<<<<
 *     'minimize': glpk.MIN,
 *     'maximize': glpk.MAX
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":43
 * # optimization directions
 * cdef str2optdir = {
 *     'minimize': glpk.MIN,             # <<<<<<<<<<<<<<
 *     'maximize': glpk.MAX
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_MIN); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_minimize, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":44
 * cdef str2optdir = {
 *     'minimize': glpk.MIN,
 *     'maximize': glpk.MAX             # <<<<<<<<<<<<<<
 *     }
 * cdef optdir2str = {optdir: string for string, optdir in str2optdir.items()}
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_MAX); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_maximize, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 42; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2optdir);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2optdir, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":46
 *     'maximize': glpk.MAX
 *     }
 * cdef optdir2str = {optdir: string for string, optdir in str2optdir.items()}             # <<<<<<<<<<<<<<
 * 
 * 
 */
  { /* enter inner scope */
    PyObject *__pyx_8genexpr9__pyx_v_8ecyglpki_string = NULL;
    PyObject *__pyx_8genexpr9__pyx_v_8ecyglpki_optdir = NULL;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_str2optdir, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
        #endif
      } else {
        __pyx_t_3 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L79_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L79_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L80_unpacking_done;
        __pyx_L79_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
        __pyx_L80_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_8genexpr9__pyx_v_8ecyglpki_string, __pyx_t_7);
      __pyx_t_7 = 0;
      __Pyx_XDECREF_SET(__pyx_8genexpr9__pyx_v_8ecyglpki_optdir, __pyx_t_6);
      __pyx_t_6 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_8genexpr9__pyx_v_8ecyglpki_optdir, (PyObject*)__pyx_8genexpr9__pyx_v_8ecyglpki_string))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L76_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_8genexpr9__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr9__pyx_v_8ecyglpki_optdir);
    goto __pyx_L81_exit_scope;
    __pyx_L76_error:;
    __Pyx_XDECREF(__pyx_8genexpr9__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_8genexpr9__pyx_v_8ecyglpki_optdir);
    goto __pyx_L1_error;
    __pyx_L81_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_optdir2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_optdir2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":50
 * 
 * # variable kinds
 * cdef str2varkind = {             # <<<<<<<<<<<<<<
 *     'continuous': glpk.CV,
 *     'integer': glpk.IV,
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":51
 * # variable kinds
 * cdef str2varkind = {
 *     'continuous': glpk.CV,             # <<<<<<<<<<<<<<
 *     'integer': glpk.IV,
 *     'binary': glpk.BV
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_CV); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 51; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_continuous, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":52
 * cdef str2varkind = {
 *     'continuous': glpk.CV,
 *     'integer': glpk.IV,             # <<<<<<<<<<<<<<
 *     'binary': glpk.BV
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_IV); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 52; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_integer, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":53
 *     'continuous': glpk.CV,
 *     'integer': glpk.IV,
 *     'binary': glpk.BV             # <<<<<<<<<<<<<<
 *     }
 * cdef varkind2str = {varkind: string for string, varkind in str2varkind.items()}
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_BV); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_binary, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 50; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2varkind);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2varkind, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":55
 *     'binary': glpk.BV
 *     }
 * cdef varkind2str = {varkind: string for string, varkind in str2varkind.items()}             # <<<<<<<<<<<<<<
 * 
 * 
 */
  { /* enter inner scope */
    PyObject *__pyx_9genexpr10__pyx_v_8ecyglpki_string = NULL;
    PyObject *__pyx_9genexpr10__pyx_v_8ecyglpki_varkind = NULL;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_str2varkind, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
        #endif
      } else {
        __pyx_t_3 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L87_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L87_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L88_unpacking_done;
        __pyx_L87_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
        __pyx_L88_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_9genexpr10__pyx_v_8ecyglpki_string, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_9genexpr10__pyx_v_8ecyglpki_varkind, __pyx_t_7);
      __pyx_t_7 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_9genexpr10__pyx_v_8ecyglpki_varkind, (PyObject*)__pyx_9genexpr10__pyx_v_8ecyglpki_string))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L84_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_9genexpr10__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_9genexpr10__pyx_v_8ecyglpki_varkind);
    goto __pyx_L89_exit_scope;
    __pyx_L84_error:;
    __Pyx_XDECREF(__pyx_9genexpr10__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_9genexpr10__pyx_v_8ecyglpki_varkind);
    goto __pyx_L1_error;
    __pyx_L89_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_varkind2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_varkind2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":59
 * 
 * # variable types
 * cdef pair2vartype = {             # <<<<<<<<<<<<<<
 *     (True, True): glpk.FR,
 *     (False, True): glpk.LO,
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":60
 * # variable types
 * cdef pair2vartype = {
 *     (True, True): glpk.FR,             # <<<<<<<<<<<<<<
 *     (False, True): glpk.LO,
 *     (True, False): glpk.UP,
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_FR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 60; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_tuple__47, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":61
 * cdef pair2vartype = {
 *     (True, True): glpk.FR,
 *     (False, True): glpk.LO,             # <<<<<<<<<<<<<<
 *     (True, False): glpk.UP,
 *     (False, False): glpk.DB
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_LO); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 61; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_tuple__48, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":62
 *     (True, True): glpk.FR,
 *     (False, True): glpk.LO,
 *     (True, False): glpk.UP,             # <<<<<<<<<<<<<<
 *     (False, False): glpk.DB
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_UP); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 62; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_tuple__49, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":63
 *     (False, True): glpk.LO,
 *     (True, False): glpk.UP,
 *     (False, False): glpk.DB             # <<<<<<<<<<<<<<
 *     }
 * cdef vartype2str = {
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_DB); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 63; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_tuple__50, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 59; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_pair2vartype);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_pair2vartype, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":65
 *     (False, False): glpk.DB
 *     }
 * cdef vartype2str = {             # <<<<<<<<<<<<<<
 *     glpk.FR: 'free',
 *     glpk.LO: 'dominating',
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":66
 *     }
 * cdef vartype2str = {
 *     glpk.FR: 'free',             # <<<<<<<<<<<<<<
 *     glpk.LO: 'dominating',
 *     glpk.UP: 'dominated',
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_FR); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 66; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_n_s_free) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":67
 * cdef vartype2str = {
 *     glpk.FR: 'free',
 *     glpk.LO: 'dominating',             # <<<<<<<<<<<<<<
 *     glpk.UP: 'dominated',
 *     glpk.DB: 'bounded',
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_LO); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 67; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_n_s_dominating) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":68
 *     glpk.FR: 'free',
 *     glpk.LO: 'dominating',
 *     glpk.UP: 'dominated',             # <<<<<<<<<<<<<<
 *     glpk.DB: 'bounded',
 *     glpk.FX: 'fixed'
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_UP); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 68; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_n_s_dominated) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":69
 *     glpk.LO: 'dominating',
 *     glpk.UP: 'dominated',
 *     glpk.DB: 'bounded',             # <<<<<<<<<<<<<<
 *     glpk.FX: 'fixed'
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_DB); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 69; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_n_s_bounded) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":70
 *     glpk.UP: 'dominated',
 *     glpk.DB: 'bounded',
 *     glpk.FX: 'fixed'             # <<<<<<<<<<<<<<
 *     }
 * cdef str2vartype = {string: vartype for vartype, string in vartype2str.items()}
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_FX); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 70; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_n_s_fixed) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 65; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_vartype2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_vartype2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":72
 *     glpk.FX: 'fixed'
 *     }
 * cdef str2vartype = {string: vartype for vartype, string in vartype2str.items()}             # <<<<<<<<<<<<<<
 * 
 * cdef _bounds(lower, upper):
 */
  { /* enter inner scope */
    PyObject *__pyx_9genexpr11__pyx_v_8ecyglpki_vartype = NULL;
    PyObject *__pyx_9genexpr11__pyx_v_8ecyglpki_string = NULL;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_vartype2str, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
        #endif
      } else {
        __pyx_t_3 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L95_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L95_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L96_unpacking_done;
        __pyx_L95_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
        __pyx_L96_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_9genexpr11__pyx_v_8ecyglpki_vartype, __pyx_t_7);
      __pyx_t_7 = 0;
      __Pyx_XDECREF_SET(__pyx_9genexpr11__pyx_v_8ecyglpki_string, __pyx_t_6);
      __pyx_t_6 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_9genexpr11__pyx_v_8ecyglpki_string, (PyObject*)__pyx_9genexpr11__pyx_v_8ecyglpki_vartype))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 72; __pyx_clineno = __LINE__; goto __pyx_L92_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_8ecyglpki_vartype);
    __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_8ecyglpki_string);
    goto __pyx_L97_exit_scope;
    __pyx_L92_error:;
    __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_8ecyglpki_vartype);
    __Pyx_XDECREF(__pyx_9genexpr11__pyx_v_8ecyglpki_string);
    goto __pyx_L1_error;
    __pyx_L97_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2vartype);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2vartype, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":106
 * 
 * # variable status
 * cdef str2varstat = {             # <<<<<<<<<<<<<<
 *     'basic': glpk.BS,
 *     'lower': glpk.NL,
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":107
 * # variable status
 * cdef str2varstat = {
 *     'basic': glpk.BS,             # <<<<<<<<<<<<<<
 *     'lower': glpk.NL,
 *     'upper': glpk.NU,
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_BS); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 107; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_basic, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":108
 * cdef str2varstat = {
 *     'basic': glpk.BS,
 *     'lower': glpk.NL,             # <<<<<<<<<<<<<<
 *     'upper': glpk.NU,
 *     'free': glpk.NF,
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_NL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 108; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_lower, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":109
 *     'basic': glpk.BS,
 *     'lower': glpk.NL,
 *     'upper': glpk.NU,             # <<<<<<<<<<<<<<
 *     'free': glpk.NF,
 *     'fixed': glpk.NS
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_NU); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 109; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_upper, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":110
 *     'lower': glpk.NL,
 *     'upper': glpk.NU,
 *     'free': glpk.NF,             # <<<<<<<<<<<<<<
 *     'fixed': glpk.NS
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_NF); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 110; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_free, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":111
 *     'upper': glpk.NU,
 *     'free': glpk.NF,
 *     'fixed': glpk.NS             # <<<<<<<<<<<<<<
 *     }
 * cdef varstat2str = {varstat: string for string, varstat in str2varstat.items()}
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_NS); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 111; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_fixed, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 106; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2varstat);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2varstat, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":113
 *     'fixed': glpk.NS
 *     }
 * cdef varstat2str = {varstat: string for string, varstat in str2varstat.items()}             # <<<<<<<<<<<<<<
 * 
 * cdef compatible_status = {
 */
  { /* enter inner scope */
    PyObject *__pyx_9genexpr12__pyx_v_8ecyglpki_string = NULL;
    PyObject *__pyx_9genexpr12__pyx_v_8ecyglpki_varstat = NULL;
    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_str2varstat, __pyx_n_s_items); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    if (PyList_CheckExact(__pyx_t_3) || PyTuple_CheckExact(__pyx_t_3)) {
      __pyx_t_2 = __pyx_t_3; __Pyx_INCREF(__pyx_t_2); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
      __Pyx_GOTREF(__pyx_t_2);
      __pyx_t_5 = Py_TYPE(__pyx_t_2)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_2)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_3 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_4); __Pyx_INCREF(__pyx_t_3); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
        #else
        __pyx_t_3 = PySequence_ITEM(__pyx_t_2, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
        #endif
      } else {
        __pyx_t_3 = __pyx_t_5(__pyx_t_2);
        if (unlikely(!__pyx_t_3)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_3);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
        PyObject* sequence = __pyx_t_3;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_6 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_7 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_6);
        __Pyx_INCREF(__pyx_t_7);
        #else
        __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
        __Pyx_GOTREF(__pyx_t_6);
        __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
        __Pyx_GOTREF(__pyx_t_7);
        #endif
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L103_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L103_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L104_unpacking_done;
        __pyx_L103_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
        __pyx_L104_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_9genexpr12__pyx_v_8ecyglpki_string, __pyx_t_6);
      __pyx_t_6 = 0;
      __Pyx_XDECREF_SET(__pyx_9genexpr12__pyx_v_8ecyglpki_varstat, __pyx_t_7);
      __pyx_t_7 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_9genexpr12__pyx_v_8ecyglpki_varstat, (PyObject*)__pyx_9genexpr12__pyx_v_8ecyglpki_string))) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 113; __pyx_clineno = __LINE__; goto __pyx_L100_error;}
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    __Pyx_XDECREF(__pyx_9genexpr12__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_9genexpr12__pyx_v_8ecyglpki_varstat);
    goto __pyx_L105_exit_scope;
    __pyx_L100_error:;
    __Pyx_XDECREF(__pyx_9genexpr12__pyx_v_8ecyglpki_string);
    __Pyx_XDECREF(__pyx_9genexpr12__pyx_v_8ecyglpki_varstat);
    goto __pyx_L1_error;
    __pyx_L105_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_varstat2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_varstat2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":115
 * cdef varstat2str = {varstat: string for string, varstat in str2varstat.items()}
 * 
 * cdef compatible_status = {             # <<<<<<<<<<<<<<
 *     'free': frozenset('free'),
 *     'dominating': frozenset('lower'),
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":116
 * 
 * cdef compatible_status = {
 *     'free': frozenset('free'),             # <<<<<<<<<<<<<<
 *     'dominating': frozenset('lower'),
 *     'dominated': frozenset('upper'),
 */
  __pyx_t_2 = __Pyx_PyFrozenSet_New(__pyx_n_s_free); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 116; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_free, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":117
 * cdef compatible_status = {
 *     'free': frozenset('free'),
 *     'dominating': frozenset('lower'),             # <<<<<<<<<<<<<<
 *     'dominated': frozenset('upper'),
 *     'bounded': frozenset(['lower', 'upper']),
 */
  __pyx_t_2 = __Pyx_PyFrozenSet_New(__pyx_n_s_lower); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 117; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dominating, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":118
 *     'free': frozenset('free'),
 *     'dominating': frozenset('lower'),
 *     'dominated': frozenset('upper'),             # <<<<<<<<<<<<<<
 *     'bounded': frozenset(['lower', 'upper']),
 *     'fixed': frozenset('fixed'),
 */
  __pyx_t_2 = __Pyx_PyFrozenSet_New(__pyx_n_s_upper); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 118; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_dominated, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":119
 *     'dominating': frozenset('lower'),
 *     'dominated': frozenset('upper'),
 *     'bounded': frozenset(['lower', 'upper']),             # <<<<<<<<<<<<<<
 *     'fixed': frozenset('fixed'),
 *     }
 */
  __pyx_t_2 = __Pyx_PyFrozenSet_New(__pyx_tuple__51); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 119; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_bounded, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":120
 *     'dominated': frozenset('upper'),
 *     'bounded': frozenset(['lower', 'upper']),
 *     'fixed': frozenset('fixed'),             # <<<<<<<<<<<<<<
 *     }
 * 
 */
  __pyx_t_2 = __Pyx_PyFrozenSet_New(__pyx_n_s_fixed); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 120; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_fixed, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 115; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_compatible_status);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_compatible_status, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":132
 * 
 * # scaling options
 * cdef str2scalopt = {             # <<<<<<<<<<<<<<
 *     'geometric': glpk.SF_GM,
 *     'equilibration': glpk.SF_EQ,
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":133
 * # scaling options
 * cdef str2scalopt = {
 *     'geometric': glpk.SF_GM,             # <<<<<<<<<<<<<<
 *     'equilibration': glpk.SF_EQ,
 *     'round': glpk.SF_2N,
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_SF_GM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 133; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_geometric, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":134
 * cdef str2scalopt = {
 *     'geometric': glpk.SF_GM,
 *     'equilibration': glpk.SF_EQ,             # <<<<<<<<<<<<<<
 *     'round': glpk.SF_2N,
 *     'skip': glpk.SF_SKIP,
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_SF_EQ); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 134; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_equilibration, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":135
 *     'geometric': glpk.SF_GM,
 *     'equilibration': glpk.SF_EQ,
 *     'round': glpk.SF_2N,             # <<<<<<<<<<<<<<
 *     'skip': glpk.SF_SKIP,
 *     'auto': glpk.SF_AUTO
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_SF_2N); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 135; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_round, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":136
 *     'equilibration': glpk.SF_EQ,
 *     'round': glpk.SF_2N,
 *     'skip': glpk.SF_SKIP,             # <<<<<<<<<<<<<<
 *     'auto': glpk.SF_AUTO
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_SF_SKIP); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 136; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_skip, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":137
 *     'round': glpk.SF_2N,
 *     'skip': glpk.SF_SKIP,
 *     'auto': glpk.SF_AUTO             # <<<<<<<<<<<<<<
 *     }
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_SF_AUTO); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 137; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_auto, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 132; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2scalopt);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2scalopt, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":142
 * 
 * # solution indicators
 * cdef str2solind = {             # <<<<<<<<<<<<<<
 *     'simplex': glpk.SOL,
 *     'ipoint': glpk.IPT,
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":143
 * # solution indicators
 * cdef str2solind = {
 *     'simplex': glpk.SOL,             # <<<<<<<<<<<<<<
 *     'ipoint': glpk.IPT,
 *     'intopt': glpk.MIP
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_SOL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 143; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_simplex_2, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":144
 * cdef str2solind = {
 *     'simplex': glpk.SOL,
 *     'ipoint': glpk.IPT,             # <<<<<<<<<<<<<<
 *     'intopt': glpk.MIP
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_IPT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 144; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ipoint, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":145
 *     'simplex': glpk.SOL,
 *     'ipoint': glpk.IPT,
 *     'intopt': glpk.MIP             # <<<<<<<<<<<<<<
 *     }
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_MIP); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 145; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_intopt, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 142; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2solind);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2solind, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":150
 * 
 * # solution statuses
 * cdef solstat2str = {             # <<<<<<<<<<<<<<
 *     glpk.UNDEF: 'undefined',
 *     glpk.OPT: 'optimal',
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":151
 * # solution statuses
 * cdef solstat2str = {
 *     glpk.UNDEF: 'undefined',             # <<<<<<<<<<<<<<
 *     glpk.OPT: 'optimal',
 *     glpk.INFEAS: 'infeasible',
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_UNDEF); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 151; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_n_s_undefined) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":152
 * cdef solstat2str = {
 *     glpk.UNDEF: 'undefined',
 *     glpk.OPT: 'optimal',             # <<<<<<<<<<<<<<
 *     glpk.INFEAS: 'infeasible',
 *     glpk.NOFEAS: 'no feasible',
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_OPT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 152; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_n_s_optimal) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":153
 *     glpk.UNDEF: 'undefined',
 *     glpk.OPT: 'optimal',
 *     glpk.INFEAS: 'infeasible',             # <<<<<<<<<<<<<<
 *     glpk.NOFEAS: 'no feasible',
 *     glpk.FEAS: 'feasible',
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_INFEAS); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 153; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_n_s_infeasible) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":154
 *     glpk.OPT: 'optimal',
 *     glpk.INFEAS: 'infeasible',
 *     glpk.NOFEAS: 'no feasible',             # <<<<<<<<<<<<<<
 *     glpk.FEAS: 'feasible',
 *     glpk.UNBND: 'unbounded',
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_NOFEAS); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 154; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_kp_s_no_feasible) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":155
 *     glpk.INFEAS: 'infeasible',
 *     glpk.NOFEAS: 'no feasible',
 *     glpk.FEAS: 'feasible',             # <<<<<<<<<<<<<<
 *     glpk.UNBND: 'unbounded',
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_FEAS); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 155; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_n_s_feasible) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":156
 *     glpk.NOFEAS: 'no feasible',
 *     glpk.FEAS: 'feasible',
 *     glpk.UNBND: 'unbounded',             # <<<<<<<<<<<<<<
 *     }
 * 
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_UNBND); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 156; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_n_s_unbounded) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 150; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_solstat2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_solstat2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":161
 * 
 * # simplex return codes (errors)
 * cdef smretcode2error = {             # <<<<<<<<<<<<<<
 *     glpk.EBADB: ValueError("Basis is invalid."),
 *     glpk.ESING: ValueError("Basis matrix is singular."),
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":162
 * # simplex return codes (errors)
 * cdef smretcode2error = {
 *     glpk.EBADB: ValueError("Basis is invalid."),             # <<<<<<<<<<<<<<
 *     glpk.ESING: ValueError("Basis matrix is singular."),
 *     glpk.ECOND: ValueError("Basis matrix is ill-conditioned."),
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_EBADB); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__52, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 162; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":163
 * cdef smretcode2error = {
 *     glpk.EBADB: ValueError("Basis is invalid."),
 *     glpk.ESING: ValueError("Basis matrix is singular."),             # <<<<<<<<<<<<<<
 *     glpk.ECOND: ValueError("Basis matrix is ill-conditioned."),
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_ESING); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__53, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 163; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":164
 *     glpk.EBADB: ValueError("Basis is invalid."),
 *     glpk.ESING: ValueError("Basis matrix is singular."),
 *     glpk.ECOND: ValueError("Basis matrix is ill-conditioned."),             # <<<<<<<<<<<<<<
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_ECOND); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__54, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 164; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":165
 *     glpk.ESING: ValueError("Basis matrix is singular."),
 *     glpk.ECOND: ValueError("Basis matrix is ill-conditioned."),
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),             # <<<<<<<<<<<<<<
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_EBOUND); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__55, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 165; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":166
 *     glpk.ECOND: ValueError("Basis matrix is ill-conditioned."),
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),
 *     glpk.EFAIL: RuntimeError("Solver failure."),             # <<<<<<<<<<<<<<
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_EFAIL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__56, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 166; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":167
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),             # <<<<<<<<<<<<<<
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 *     glpk.ENOPFS:
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_EITLIM); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_StopIteration, __pyx_tuple__57, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 167; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":168
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),             # <<<<<<<<<<<<<<
 *     glpk.ENOPFS:
 *         StopIteration("Presolver: Problem has no primal feasible solution."),
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_ETMLIM); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_StopIteration, __pyx_tuple__58, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 168; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":169
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 *     glpk.ENOPFS:             # <<<<<<<<<<<<<<
 *         StopIteration("Presolver: Problem has no primal feasible solution."),
 *     glpk.ENODFS:
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_ENOPFS); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 169; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":170
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 *     glpk.ENOPFS:
 *         StopIteration("Presolver: Problem has no primal feasible solution."),             # <<<<<<<<<<<<<<
 *     glpk.ENODFS:
 *         StopIteration("Presolver: Problem has no dual feasible solution.")
 */
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_StopIteration, __pyx_tuple__59, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 170; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":171
 *     glpk.ENOPFS:
 *         StopIteration("Presolver: Problem has no primal feasible solution."),
 *     glpk.ENODFS:             # <<<<<<<<<<<<<<
 *         StopIteration("Presolver: Problem has no dual feasible solution.")
 * }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_ENODFS); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 171; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":172
 *         StopIteration("Presolver: Problem has no primal feasible solution."),
 *     glpk.ENODFS:
 *         StopIteration("Presolver: Problem has no dual feasible solution.")             # <<<<<<<<<<<<<<
 * }
 * 
 */
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_StopIteration, __pyx_tuple__60, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 172; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 161; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_smretcode2error);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_smretcode2error, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":176
 * 
 * # simplex return codes (message)
 * cdef smretcode2str = {             # <<<<<<<<<<<<<<
 *     glpk.EOBJLL: "obj_ll reached",
 *     glpk.EOBJUL: "obj_ul reached",
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":177
 * # simplex return codes (message)
 * cdef smretcode2str = {
 *     glpk.EOBJLL: "obj_ll reached",             # <<<<<<<<<<<<<<
 *     glpk.EOBJUL: "obj_ul reached",
 *     }
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_EOBJLL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 177; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_kp_s_obj_ll_reached) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":178
 * cdef smretcode2str = {
 *     glpk.EOBJLL: "obj_ll reached",
 *     glpk.EOBJUL: "obj_ul reached",             # <<<<<<<<<<<<<<
 *     }
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_EOBJUL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 178; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_kp_s_obj_ul_reached) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 176; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_smretcode2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_smretcode2str, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":182
 * 
 * # interior point return codes (errors)
 * cdef iptretcode2error = {             # <<<<<<<<<<<<<<
 *     glpk.EFAIL: ValueError("The problem has no rows/columns."),
 *     glpk.ENOCVG: ArithmeticError("Very slow convergence or divergence."),
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":183
 * # interior point return codes (errors)
 * cdef iptretcode2error = {
 *     glpk.EFAIL: ValueError("The problem has no rows/columns."),             # <<<<<<<<<<<<<<
 *     glpk.ENOCVG: ArithmeticError("Very slow convergence or divergence."),
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_EFAIL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__61, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 183; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":184
 * cdef iptretcode2error = {
 *     glpk.EFAIL: ValueError("The problem has no rows/columns."),
 *     glpk.ENOCVG: ArithmeticError("Very slow convergence or divergence."),             # <<<<<<<<<<<<<<
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),
 *     glpk.EINSTAB: ArithmeticError("Numerical instability " +
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_ENOCVG); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ArithmeticError, __pyx_tuple__62, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 184; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":185
 *     glpk.EFAIL: ValueError("The problem has no rows/columns."),
 *     glpk.ENOCVG: ArithmeticError("Very slow convergence or divergence."),
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),             # <<<<<<<<<<<<<<
 *     glpk.EINSTAB: ArithmeticError("Numerical instability " +
 *                                   "on solving Newtonian system.")
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_EITLIM); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_StopIteration, __pyx_tuple__63, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 185; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":186
 *     glpk.ENOCVG: ArithmeticError("Very slow convergence or divergence."),
 *     glpk.EITLIM: StopIteration("Iteration limit exceeded."),
 *     glpk.EINSTAB: ArithmeticError("Numerical instability " +             # <<<<<<<<<<<<<<
 *                                   "on solving Newtonian system.")
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_EINSTAB); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Numerical_instability, __pyx_kp_s_on_solving_Newtonian_system); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ArithmeticError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 186; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 182; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_iptretcode2error);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_iptretcode2error, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":191
 * 
 * # integer optimization return codes (errors)
 * cdef ioretcode2error = {             # <<<<<<<<<<<<<<
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),
 *     glpk.EROOT: ValueError("No optimal LP relaxation basis provided."),
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":192
 * # integer optimization return codes (errors)
 * cdef ioretcode2error = {
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),             # <<<<<<<<<<<<<<
 *     glpk.EROOT: ValueError("No optimal LP relaxation basis provided."),
 *     glpk.ENOPFS: ValueError("LP relaxation is infeasible."),
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_EBOUND); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__64, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 192; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":193
 * cdef ioretcode2error = {
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),
 *     glpk.EROOT: ValueError("No optimal LP relaxation basis provided."),             # <<<<<<<<<<<<<<
 *     glpk.ENOPFS: ValueError("LP relaxation is infeasible."),
 *     glpk.ENODFS: ValueError("LP relaxation is unbounded."),
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_EROOT); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__65, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 193; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":194
 *     glpk.EBOUND: ValueError("Incorrect bounds given."),
 *     glpk.EROOT: ValueError("No optimal LP relaxation basis provided."),
 *     glpk.ENOPFS: ValueError("LP relaxation is infeasible."),             # <<<<<<<<<<<<<<
 *     glpk.ENODFS: ValueError("LP relaxation is unbounded."),
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_ENOPFS); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__66, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 194; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":195
 *     glpk.EROOT: ValueError("No optimal LP relaxation basis provided."),
 *     glpk.ENOPFS: ValueError("LP relaxation is infeasible."),
 *     glpk.ENODFS: ValueError("LP relaxation is unbounded."),             # <<<<<<<<<<<<<<
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 *     glpk.EMIPGAP: StopIteration("Relative mip gap tolerance has been reached"),
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_ENODFS); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__67, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 195; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":196
 *     glpk.ENOPFS: ValueError("LP relaxation is infeasible."),
 *     glpk.ENODFS: ValueError("LP relaxation is unbounded."),
 *     glpk.EFAIL: RuntimeError("Solver failure."),             # <<<<<<<<<<<<<<
 *     glpk.EMIPGAP: StopIteration("Relative mip gap tolerance has been reached"),
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_EFAIL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_RuntimeError, __pyx_tuple__68, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 196; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":197
 *     glpk.ENODFS: ValueError("LP relaxation is unbounded."),
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 *     glpk.EMIPGAP: StopIteration("Relative mip gap tolerance has been reached"),             # <<<<<<<<<<<<<<
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 *     glpk.ESTOP: StopIteration("Branch-and-cut callback terminated solver."),
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_EMIPGAP); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_StopIteration, __pyx_tuple__69, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 197; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":198
 *     glpk.EFAIL: RuntimeError("Solver failure."),
 *     glpk.EMIPGAP: StopIteration("Relative mip gap tolerance has been reached"),
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),             # <<<<<<<<<<<<<<
 *     glpk.ESTOP: StopIteration("Branch-and-cut callback terminated solver."),
 *     glpk.EDATA: ValueError("All problem parameters must be integer."),
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_ETMLIM); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_StopIteration, __pyx_tuple__70, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 198; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":199
 *     glpk.EMIPGAP: StopIteration("Relative mip gap tolerance has been reached"),
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 *     glpk.ESTOP: StopIteration("Branch-and-cut callback terminated solver."),             # <<<<<<<<<<<<<<
 *     glpk.EDATA: ValueError("All problem parameters must be integer."),
 *     glpk.ERANGE: OverflowError("Integer overflow occurred when transforming " +
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_ESTOP); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_StopIteration, __pyx_tuple__71, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 199; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":200
 *     glpk.ETMLIM: StopIteration("Time limit exceeded."),
 *     glpk.ESTOP: StopIteration("Branch-and-cut callback terminated solver."),
 *     glpk.EDATA: ValueError("All problem parameters must be integer."),             # <<<<<<<<<<<<<<
 *     glpk.ERANGE: OverflowError("Integer overflow occurred when transforming " +
 *                                "to CNF SAT format.")
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_EDATA); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__72, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 200; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_3, __pyx_t_2) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":201
 *     glpk.ESTOP: StopIteration("Branch-and-cut callback terminated solver."),
 *     glpk.EDATA: ValueError("All problem parameters must be integer."),
 *     glpk.ERANGE: OverflowError("Integer overflow occurred when transforming " +             # <<<<<<<<<<<<<<
 *                                "to CNF SAT format.")
 *     }
 */
  __pyx_t_2 = __Pyx_PyInt_From_int(GLP_ERANGE); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_2);
  __pyx_t_3 = PyNumber_Add(__pyx_kp_s_Integer_overflow_occurred_when_t, __pyx_kp_s_to_CNF_SAT_format); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __pyx_t_7 = PyTuple_New(1); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_7);
  PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;
  __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_OverflowError, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 201; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
  if (PyDict_SetItem(__pyx_t_1, __pyx_t_2, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 191; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_ioretcode2error);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_ioretcode2error, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":207
 * 
 * # condition indicator:
 * cdef pair2condind = {             # <<<<<<<<<<<<<<
 *     (False, 'equalities'): glpk.KKT_PE,
 *     (False, 'bounds'): glpk.KKT_PB,
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":208
 * # condition indicator:
 * cdef pair2condind = {
 *     (False, 'equalities'): glpk.KKT_PE,             # <<<<<<<<<<<<<<
 *     (False, 'bounds'): glpk.KKT_PB,
 *     (True, 'equalities'): glpk.KKT_DE,
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_KKT_PE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 208; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_tuple__73, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":209
 * cdef pair2condind = {
 *     (False, 'equalities'): glpk.KKT_PE,
 *     (False, 'bounds'): glpk.KKT_PB,             # <<<<<<<<<<<<<<
 *     (True, 'equalities'): glpk.KKT_DE,
 *     (True, 'bounds'): glpk.KKT_DB
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_KKT_PB); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 209; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_tuple__74, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":210
 *     (False, 'equalities'): glpk.KKT_PE,
 *     (False, 'bounds'): glpk.KKT_PB,
 *     (True, 'equalities'): glpk.KKT_DE,             # <<<<<<<<<<<<<<
 *     (True, 'bounds'): glpk.KKT_DB
 * }
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_KKT_DE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 210; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_tuple__75, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":211
 *     (False, 'bounds'): glpk.KKT_PB,
 *     (True, 'equalities'): glpk.KKT_DE,
 *     (True, 'bounds'): glpk.KKT_DB             # <<<<<<<<<<<<<<
 * }
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_KKT_DB); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 211; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_tuple__76, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 207; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_pair2condind);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_pair2condind, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":216
 * 
 * # MPS file format
 * cdef str2mpsfmt = {             # <<<<<<<<<<<<<<
 *     'fixed': glpk.MPS_DECK,
 *     'free': glpk.MPS_FILE
 */
  __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":217
 * # MPS file format
 * cdef str2mpsfmt = {
 *     'fixed': glpk.MPS_DECK,             # <<<<<<<<<<<<<<
 *     'free': glpk.MPS_FILE
 *     }
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_MPS_DECK); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 217; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_fixed, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":218
 * cdef str2mpsfmt = {
 *     'fixed': glpk.MPS_DECK,
 *     'free': glpk.MPS_FILE             # <<<<<<<<<<<<<<
 *     }
 * 
 */
  __pyx_t_3 = __Pyx_PyInt_From_int(GLP_MPS_FILE); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 218; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_free, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 216; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2mpsfmt);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2mpsfmt, __pyx_t_1);
  __Pyx_GIVEREF(__pyx_t_1);
  __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":467
 * 
 *     @classmethod
 *     def copy_prob(cls, Problem source, bint copy_names):             # <<<<<<<<<<<<<<
 *         """Copy problem object content"""
 *         problem = cls()
 */
  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8ecyglpki_Problem, __pyx_n_s_copy_prob); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":466
 *             glpk.free(colinds)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def copy_prob(cls, Problem source, bint copy_names):
 *         """Copy problem object content"""
 */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 466; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_8ecyglpki_Problem->tp_dict, __pyx_n_s_copy_prob, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 467; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8ecyglpki_Problem);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1222
 * 
 *     @classmethod
 *     def read_mps(cls, str format, str fname):             # <<<<<<<<<<<<<<
 *         """Read problem data in MPS format"""
 *         problem = cls()
 */
  __pyx_t_3 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8ecyglpki_Problem, __pyx_n_s_read_mps); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1221
 *         return {'minimal': minimal, 'maximal': maximal}
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def read_mps(cls, str format, str fname):
 *         """Read problem data in MPS format"""
 */
  __pyx_t_1 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1221; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_8ecyglpki_Problem->tp_dict, __pyx_n_s_read_mps, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1222; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  PyType_Modified(__pyx_ptype_8ecyglpki_Problem);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1241
 * 
 *     @classmethod
 *     def read_lp(cls, str fname):             # <<<<<<<<<<<<<<
 *         """Read problem data in CPLEX LP format"""
 *         problem = cls()
 */
  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8ecyglpki_Problem, __pyx_n_s_read_lp); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1240
 *             raise RuntimeError("Error writing MPS file.")
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def read_lp(cls, str fname):
 *         """Read problem data in CPLEX LP format"""
 */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1240; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_8ecyglpki_Problem->tp_dict, __pyx_n_s_read_lp, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1241; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8ecyglpki_Problem);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1258
 * 
 *     @classmethod
 *     def read_prob(cls, str fname):             # <<<<<<<<<<<<<<
 *         """Read problem data in GLPK format"""
 *         problem = cls()
 */
  __pyx_t_3 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8ecyglpki_Problem, __pyx_n_s_read_prob); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1257
 *             raise RuntimeError("Error writing LP file.")
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def read_prob(cls, str fname):
 *         """Read problem data in GLPK format"""
 */
  __pyx_t_1 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1257; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_8ecyglpki_Problem->tp_dict, __pyx_n_s_read_prob, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1258; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  PyType_Modified(__pyx_ptype_8ecyglpki_Problem);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1275
 * 
 *     @classmethod
 *     def read_cnfsat(cls, str fname):             # <<<<<<<<<<<<<<
 *         """Read CNF-SAT problem data in DIMACS format"""
 *         problem = cls()
 */
  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8ecyglpki_Problem, __pyx_n_s_read_cnfsat); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-problem.pxi":1274
 *             raise RuntimeError("Error writing GLPK file.")
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def read_cnfsat(cls, str fname):
 *         """Read CNF-SAT problem data in DIMACS format"""
 */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1274; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_8ecyglpki_Problem->tp_dict, __pyx_n_s_read_cnfsat, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[0]; __pyx_lineno = 1275; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8ecyglpki_Problem);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":26
 * 
 * # reason codes
 * cdef reascode2str = {             # <<<<<<<<<<<<<<
 *     glpk.IROWGEN: 'rowgen',
 *     glpk.IBINGO: 'improved',
 */
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":27
 * # reason codes
 * cdef reascode2str = {
 *     glpk.IROWGEN: 'rowgen',             # <<<<<<<<<<<<<<
 *     glpk.IBINGO: 'improved',
 *     glpk.IHEUR: 'heur_sol',
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_IROWGEN); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 27; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_rowgen) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":28
 * cdef reascode2str = {
 *     glpk.IROWGEN: 'rowgen',
 *     glpk.IBINGO: 'improved',             # <<<<<<<<<<<<<<
 *     glpk.IHEUR: 'heur_sol',
 *     glpk.ICUTGEN: 'cutgen',
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_IBINGO); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 28; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_improved) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":29
 *     glpk.IROWGEN: 'rowgen',
 *     glpk.IBINGO: 'improved',
 *     glpk.IHEUR: 'heur_sol',             # <<<<<<<<<<<<<<
 *     glpk.ICUTGEN: 'cutgen',
 *     glpk.IBRANCH: 'branch',
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_IHEUR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 29; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_heur_sol) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":30
 *     glpk.IBINGO: 'improved',
 *     glpk.IHEUR: 'heur_sol',
 *     glpk.ICUTGEN: 'cutgen',             # <<<<<<<<<<<<<<
 *     glpk.IBRANCH: 'branch',
 *     glpk.ISELECT: 'subproblem',
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_ICUTGEN); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 30; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_cutgen) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":31
 *     glpk.IHEUR: 'heur_sol',
 *     glpk.ICUTGEN: 'cutgen',
 *     glpk.IBRANCH: 'branch',             # <<<<<<<<<<<<<<
 *     glpk.ISELECT: 'subproblem',
 *     glpk.IPREPRO: 'preprocess'
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_IBRANCH); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 31; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_branch) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":32
 *     glpk.ICUTGEN: 'cutgen',
 *     glpk.IBRANCH: 'branch',
 *     glpk.ISELECT: 'subproblem',             # <<<<<<<<<<<<<<
 *     glpk.IPREPRO: 'preprocess'
 * }
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_ISELECT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 32; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_subproblem) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":33
 *     glpk.IBRANCH: 'branch',
 *     glpk.ISELECT: 'subproblem',
 *     glpk.IPREPRO: 'preprocess'             # <<<<<<<<<<<<<<
 * }
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_IPREPRO); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 33; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_preprocess) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 26; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_reascode2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_reascode2str, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":37
 * 
 * # row origin flag
 * cdef origin2str = {             # <<<<<<<<<<<<<<
 *     glpk.RF_REG: 'regular',
 *     glpk.RF_LAZY: 'lazy',
 */
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":38
 * # row origin flag
 * cdef origin2str = {
 *     glpk.RF_REG: 'regular',             # <<<<<<<<<<<<<<
 *     glpk.RF_LAZY: 'lazy',
 *     glpk.RF_CUT: 'cut'
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_RF_REG); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 38; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_regular) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":39
 * cdef origin2str = {
 *     glpk.RF_REG: 'regular',
 *     glpk.RF_LAZY: 'lazy',             # <<<<<<<<<<<<<<
 *     glpk.RF_CUT: 'cut'
 * }
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_RF_LAZY); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 39; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_lazy) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":40
 *     glpk.RF_REG: 'regular',
 *     glpk.RF_LAZY: 'lazy',
 *     glpk.RF_CUT: 'cut'             # <<<<<<<<<<<<<<
 * }
 * # row class descriptor
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_RF_CUT); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 40; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_cut) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 37; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_origin2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_origin2str, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":43
 * }
 * # row class descriptor
 * cdef klass2str = {             # <<<<<<<<<<<<<<
 *     glpk.RF_GMI: 'Gomory',
 *     glpk.RF_MIR: 'rounding',
 */
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":44
 * # row class descriptor
 * cdef klass2str = {
 *     glpk.RF_GMI: 'Gomory',             # <<<<<<<<<<<<<<
 *     glpk.RF_MIR: 'rounding',
 *     glpk.RF_COV: 'cover',
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_RF_GMI); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 44; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_Gomory) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":45
 * cdef klass2str = {
 *     glpk.RF_GMI: 'Gomory',
 *     glpk.RF_MIR: 'rounding',             # <<<<<<<<<<<<<<
 *     glpk.RF_COV: 'cover',
 *     glpk.RF_CLQ: 'clique'
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_RF_MIR); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 45; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_rounding) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":46
 *     glpk.RF_GMI: 'Gomory',
 *     glpk.RF_MIR: 'rounding',
 *     glpk.RF_COV: 'cover',             # <<<<<<<<<<<<<<
 *     glpk.RF_CLQ: 'clique'
 * }
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_RF_COV); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 46; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_cover) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":47
 *     glpk.RF_MIR: 'rounding',
 *     glpk.RF_COV: 'cover',
 *     glpk.RF_CLQ: 'clique'             # <<<<<<<<<<<<<<
 * }
 * cdef str2klass = {string: klass for klass, string in klass2str.items()}
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_RF_CLQ); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 47; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_clique) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 43; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_klass2str);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_klass2str, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":49
 *     glpk.RF_CLQ: 'clique'
 * }
 * cdef str2klass = {string: klass for klass, string in klass2str.items()}             # <<<<<<<<<<<<<<
 * 
 * 
 */
  { /* enter inner scope */
    PyObject *__pyx_9genexpr19__pyx_v_8ecyglpki_klass = NULL;
    PyObject *__pyx_9genexpr19__pyx_v_8ecyglpki_string = NULL;
    __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
    __Pyx_GOTREF(__pyx_t_3);
    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_8ecyglpki_klass2str, __pyx_n_s_items); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
    __Pyx_GOTREF(__pyx_t_1);
    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, NULL); if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
    __Pyx_GOTREF(__pyx_t_2);
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    if (PyList_CheckExact(__pyx_t_2) || PyTuple_CheckExact(__pyx_t_2)) {
      __pyx_t_1 = __pyx_t_2; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
      __pyx_t_5 = NULL;
    } else {
      __pyx_t_4 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
      __Pyx_GOTREF(__pyx_t_1);
      __pyx_t_5 = Py_TYPE(__pyx_t_1)->tp_iternext;
    }
    __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
    for (;;) {
      if (!__pyx_t_5 && PyList_CheckExact(__pyx_t_1)) {
        if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
        #endif
      } else if (!__pyx_t_5 && PyTuple_CheckExact(__pyx_t_1)) {
        if (__pyx_t_4 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
        #if CYTHON_COMPILING_IN_CPYTHON
        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_2); __pyx_t_4++; if (unlikely(0 < 0)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
        #else
        __pyx_t_2 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_2)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
        #endif
      } else {
        __pyx_t_2 = __pyx_t_5(__pyx_t_1);
        if (unlikely(!__pyx_t_2)) {
          PyObject* exc_type = PyErr_Occurred();
          if (exc_type) {
            if (likely(exc_type == PyExc_StopIteration || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
            else {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
          }
          break;
        }
        __Pyx_GOTREF(__pyx_t_2);
      }
      if ((likely(PyTuple_CheckExact(__pyx_t_2))) || (PyList_CheckExact(__pyx_t_2))) {
        PyObject* sequence = __pyx_t_2;
        #if CYTHON_COMPILING_IN_CPYTHON
        Py_ssize_t size = Py_SIZE(sequence);
        #else
        Py_ssize_t size = PySequence_Size(sequence);
        #endif
        if (unlikely(size != 2)) {
          if (size > 2) __Pyx_RaiseTooManyValuesError(2);
          else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
          {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
        }
        #if CYTHON_COMPILING_IN_CPYTHON
        if (likely(PyTuple_CheckExact(sequence))) {
          __pyx_t_7 = PyTuple_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyTuple_GET_ITEM(sequence, 1); 
        } else {
          __pyx_t_7 = PyList_GET_ITEM(sequence, 0); 
          __pyx_t_6 = PyList_GET_ITEM(sequence, 1); 
        }
        __Pyx_INCREF(__pyx_t_7);
        __Pyx_INCREF(__pyx_t_6);
        #else
        __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
        __Pyx_GOTREF(__pyx_t_7);
        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
        __Pyx_GOTREF(__pyx_t_6);
        #endif
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
      } else {
        Py_ssize_t index = -1;
        __pyx_t_8 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_8)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
        __Pyx_GOTREF(__pyx_t_8);
        __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
        __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
        index = 0; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L111_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_7);
        index = 1; __pyx_t_6 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_6)) goto __pyx_L111_unpacking_failed;
        __Pyx_GOTREF(__pyx_t_6);
        if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
        __pyx_t_9 = NULL;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        goto __pyx_L112_unpacking_done;
        __pyx_L111_unpacking_failed:;
        __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
        __pyx_t_9 = NULL;
        if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
        {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
        __pyx_L112_unpacking_done:;
      }
      __Pyx_XDECREF_SET(__pyx_9genexpr19__pyx_v_8ecyglpki_klass, __pyx_t_7);
      __pyx_t_7 = 0;
      __Pyx_XDECREF_SET(__pyx_9genexpr19__pyx_v_8ecyglpki_string, __pyx_t_6);
      __pyx_t_6 = 0;
      if (unlikely(PyDict_SetItem(__pyx_t_3, (PyObject*)__pyx_9genexpr19__pyx_v_8ecyglpki_string, (PyObject*)__pyx_9genexpr19__pyx_v_8ecyglpki_klass))) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 49; __pyx_clineno = __LINE__; goto __pyx_L108_error;}
    }
    __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
    __Pyx_XDECREF(__pyx_9genexpr19__pyx_v_8ecyglpki_klass);
    __Pyx_XDECREF(__pyx_9genexpr19__pyx_v_8ecyglpki_string);
    goto __pyx_L113_exit_scope;
    __pyx_L108_error:;
    __Pyx_XDECREF(__pyx_9genexpr19__pyx_v_8ecyglpki_klass);
    __Pyx_XDECREF(__pyx_9genexpr19__pyx_v_8ecyglpki_string);
    goto __pyx_L1_error;
    __pyx_L113_exit_scope:;
  } /* exit inner scope */
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2klass);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2klass, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":53
 * 
 * #  branch selection indicator
 * cdef str2branchdir = {             # <<<<<<<<<<<<<<
 *     glpk.NO_BRNCH: 'no',
 *     glpk.DN_BRNCH: 'down',
 */
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":54
 * #  branch selection indicator
 * cdef str2branchdir = {
 *     glpk.NO_BRNCH: 'no',             # <<<<<<<<<<<<<<
 *     glpk.DN_BRNCH: 'down',
 *     glpk.UP_BRNCH: 'up'
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_NO_BRNCH); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 54; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_no) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":55
 * cdef str2branchdir = {
 *     glpk.NO_BRNCH: 'no',
 *     glpk.DN_BRNCH: 'down',             # <<<<<<<<<<<<<<
 *     glpk.UP_BRNCH: 'up'
 * }
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_DN_BRNCH); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 55; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_down) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-tree.pxi":56
 *     glpk.NO_BRNCH: 'no',
 *     glpk.DN_BRNCH: 'down',
 *     glpk.UP_BRNCH: 'up'             # <<<<<<<<<<<<<<
 * }
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_UP_BRNCH); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 56; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_t_1, __pyx_n_s_up) < 0) {__pyx_filename = __pyx_f[1]; __pyx_lineno = 53; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2branchdir);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2branchdir, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":128
 * 
 * #  assignment problem formulation
 * cdef str2asnform = {             # <<<<<<<<<<<<<<
 *     'perfect_maximize': glpk.ASN_MIN,
 *     'perfect_minimize': glpk.ASN_MAX,
 */
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":129
 * #  assignment problem formulation
 * cdef str2asnform = {
 *     'perfect_maximize': glpk.ASN_MIN,             # <<<<<<<<<<<<<<
 *     'perfect_minimize': glpk.ASN_MAX,
 *     'maximum': glpk.ASN_MMP
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_ASN_MIN); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 129; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_perfect_maximize, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":130
 * cdef str2asnform = {
 *     'perfect_maximize': glpk.ASN_MIN,
 *     'perfect_minimize': glpk.ASN_MAX,             # <<<<<<<<<<<<<<
 *     'maximum': glpk.ASN_MMP
 *     }
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_ASN_MAX); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 130; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_perfect_minimize, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":131
 *     'perfect_maximize': glpk.ASN_MIN,
 *     'perfect_minimize': glpk.ASN_MAX,
 *     'maximum': glpk.ASN_MMP             # <<<<<<<<<<<<<<
 *     }
 * 
 */
  __pyx_t_1 = __Pyx_PyInt_From_int(GLP_ASN_MMP); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 131; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_maximum, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 128; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  __Pyx_XGOTREF(__pyx_v_8ecyglpki_str2asnform);
  __Pyx_DECREF_SET(__pyx_v_8ecyglpki_str2asnform, __pyx_t_3);
  __Pyx_GIVEREF(__pyx_t_3);
  __pyx_t_3 = 0;

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":272
 * 
 *     @classmethod
 *     def read_graph(cls, int vertex_data_size, int arc_data_size, str fname):             # <<<<<<<<<<<<<<
 *         """Read graph from plain text file"""
 *         graph = cls(vertex_data_size, arc_data_size)
 */
  __pyx_t_3 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8ecyglpki_Graph, __pyx_n_s_read_graph); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":271
 *         return Vertex(PyCapsule_New(_vertex, NULL, NULL))
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def read_graph(cls, int vertex_data_size, int arc_data_size, str fname):
 *         """Read graph from plain text file"""
 */
  __pyx_t_1 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 271; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_8ecyglpki_Graph->tp_dict, __pyx_n_s_read_graph, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 272; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  PyType_Modified(__pyx_ptype_8ecyglpki_Graph);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":377
 * 
 *     @classmethod
 *     def read_mincost(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                      int v_rhs, int a_low, int a_cap, int a_cost, str fname):
 *         """Read min-cost flow problem data in DIMACS format"""
 */
  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8ecyglpki_Graph, __pyx_n_s_read_mincost); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":376
 *         return glpk.cpp(self._graph, v_t, v_es, v_ls)
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def read_mincost(cls, int vertex_data_size, int arc_data_size,
 *                      int v_rhs, int a_low, int a_cap, int a_cost, str fname):
 */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 376; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_8ecyglpki_Graph->tp_dict, __pyx_n_s_read_mincost, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 377; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8ecyglpki_Graph);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":400
 * 
 *     @classmethod
 *     def read_maxflow(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                      int a_cap, str fname):
 *         """Read maximum flow problem data in DIMACS format"""
 */
  __pyx_t_3 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8ecyglpki_Graph, __pyx_n_s_read_maxflow); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":399
 *                                "file")
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def read_maxflow(cls, int vertex_data_size, int arc_data_size,
 *                      int a_cap, str fname):
 */
  __pyx_t_1 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 399; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_8ecyglpki_Graph->tp_dict, __pyx_n_s_read_maxflow, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 400; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  PyType_Modified(__pyx_ptype_8ecyglpki_Graph);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":426
 * 
 *     @classmethod
 *     def read_asnprob(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                      int v_set, int a_cost, str fname):
 *         """Read assignment problem data in DIMACS format"""
 */
  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8ecyglpki_Graph, __pyx_n_s_read_asnprob); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":425
 *                                "file")
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def read_asnprob(cls, int vertex_data_size, int arc_data_size,
 *                      int v_set, int a_cost, str fname):
 */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 425; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_8ecyglpki_Graph->tp_dict, __pyx_n_s_read_asnprob, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 426; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8ecyglpki_Graph);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":445
 * 
 *     @classmethod
 *     def read_ccdata(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                     int v_wgt, str fname):
 *         """Read graph in DIMACS clique/coloring format"""
 */
  __pyx_t_3 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8ecyglpki_Graph, __pyx_n_s_read_ccdata); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":444
 *             raise RuntimeError("Error writing assignment problem DIMACS file")
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def read_ccdata(cls, int vertex_data_size, int arc_data_size,
 *                     int v_wgt, str fname):
 */
  __pyx_t_1 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 444; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_8ecyglpki_Graph->tp_dict, __pyx_n_s_read_ccdata, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 445; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  PyType_Modified(__pyx_ptype_8ecyglpki_Graph);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":465
 * 
 *     @classmethod
 *     def netgen(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                int v_rhs, int a_cap, int a_cost, **parameters):
 *         """Klingman's network problem generator"""
 */
  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8ecyglpki_Graph, __pyx_n_s_netgen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":464
 *                                "file")
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def netgen(cls, int vertex_data_size, int arc_data_size,
 *                int v_rhs, int a_cap, int a_cost, **parameters):
 */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 464; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_8ecyglpki_Graph->tp_dict, __pyx_n_s_netgen, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 465; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8ecyglpki_Graph);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":515
 * 
 *     @classmethod
 *     def gridgen(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                 int v_rhs, int a_cap, int a_cost, **parameters):
 *         """Grid-like network problem generator"""
 */
  __pyx_t_3 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8ecyglpki_Graph, __pyx_n_s_gridgen); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":514
 *         return graph
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def gridgen(cls, int vertex_data_size, int arc_data_size,
 *                 int v_rhs, int a_cap, int a_cost, **parameters):
 */
  __pyx_t_1 = __Pyx_Method_ClassMethod(__pyx_t_3); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 514; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_8ecyglpki_Graph->tp_dict, __pyx_n_s_gridgen, __pyx_t_1) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 515; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  PyType_Modified(__pyx_ptype_8ecyglpki_Graph);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":568
 * 
 *     @classmethod
 *     def rmfgen(cls, int vertex_data_size, int arc_data_size,             # <<<<<<<<<<<<<<
 *                int a_cap, parameters):
 *         """Goldfarb's maximum flow problem generator"""
 */
  __pyx_t_1 = __Pyx_GetNameInClass((PyObject *)__pyx_ptype_8ecyglpki_Graph, __pyx_n_s_rmfgen); if (unlikely(!__pyx_t_1)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_1);

  /* "/home/equaeghe/werk/progs/ecyglpki.equaeghe-github/ecyglpki-graph.pxi":567
 *         return graph
 * 
 *     @classmethod             # <<<<<<<<<<<<<<
 *     def rmfgen(cls, int vertex_data_size, int arc_data_size,
 *                int a_cap, parameters):
 */
  __pyx_t_3 = __Pyx_Method_ClassMethod(__pyx_t_1); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 567; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
  if (PyDict_SetItem((PyObject *)__pyx_ptype_8ecyglpki_Graph->tp_dict, __pyx_n_s_rmfgen, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[7]; __pyx_lineno = 568; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  PyType_Modified(__pyx_ptype_8ecyglpki_Graph);

  /* "ecyglpki.pyx":1
 * # ecyglpki.pyx: Cython interface for GLPK             # <<<<<<<<<<<<<<
 * 
 * ###############################################################################
 */
  __pyx_t_3 = PyDict_New(); if (unlikely(!__pyx_t_3)) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_GOTREF(__pyx_t_3);
  if (PyDict_SetItem(__pyx_d, __pyx_n_s_test, __pyx_t_3) < 0) {__pyx_filename = __pyx_f[2]; __pyx_lineno = 1; __pyx_clineno = __LINE__; goto __pyx_L1_error;}
  __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
  goto __pyx_L0;
  __pyx_L1_error:;
  __Pyx_XDECREF(__pyx_t_1);
  __Pyx_XDECREF(__pyx_t_2);
  __Pyx_XDECREF(__pyx_t_3);
  __Pyx_XDECREF(__pyx_t_6);
  __Pyx_XDECREF(__pyx_t_7);
  __Pyx_XDECREF(__pyx_t_8);
  if (__pyx_m) {
    __Pyx_AddTraceback("init ecyglpki", __pyx_clineno, __pyx_lineno, __pyx_filename);
    Py_DECREF(__pyx_m); __pyx_m = 0;
  } else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_ImportError, "init ecyglpki");
  }
  __pyx_L0:;
  __Pyx_RefNannyFinishContext();
  #if PY_MAJOR_VERSION < 3
  return;
  #else
  return __pyx_m;
  #endif
}

/* Runtime support code */
#if CYTHON_REFNANNY
static __Pyx_RefNannyAPIStruct *__Pyx_RefNannyImportAPI(const char *modname) {
    PyObject *m = NULL, *p = NULL;
    void *r = NULL;
    m = PyImport_ImportModule((char *)modname);
    if (!m) goto end;
    p = PyObject_GetAttrString(m, (char *)"RefNannyAPI");
    if (!p) goto end;
    r = PyLong_AsVoidPtr(p);
end:
    Py_XDECREF(p);
    Py_XDECREF(m);
    return (__Pyx_RefNannyAPIStruct *)r;
}
#endif /* CYTHON_REFNANNY */

static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
    PyObject* result = __Pyx_PyObject_GetAttrStr(__pyx_b, name);
    if (unlikely(!result)) {
        PyErr_Format(PyExc_NameError,
#if PY_MAJOR_VERSION >= 3
            "name '%U' is not defined", name);
#else
            "name '%.200s' is not defined", PyString_AS_STRING(name));
#endif
    }
    return result;
}

static CYTHON_INLINE PyObject* __Pyx_decode_c_string(
         const char* cstring, Py_ssize_t start, Py_ssize_t stop,
         const char* encoding, const char* errors,
         PyObject* (*decode_func)(const char *s, Py_ssize_t size, const char *errors)) {
    Py_ssize_t length;
    if (unlikely((start < 0) | (stop < 0))) {
        length = strlen(cstring);
        if (start < 0) {
            start += length;
            if (start < 0)
                start = 0;
        }
        if (stop < 0)
            stop += length;
    }
    length = stop - start;
    if (unlikely(length <= 0))
        return PyUnicode_FromUnicode(NULL, 0);
    cstring += start;
    if (decode_func) {
        return decode_func(cstring, length, errors);
    } else {
        return PyUnicode_Decode(cstring, length, encoding, errors);
    }
}

#if CYTHON_COMPILING_IN_CPYTHON
static CYTHON_INLINE PyObject* __Pyx_PyObject_Call(PyObject *func, PyObject *arg, PyObject *kw) {
    PyObject *result;
    ternaryfunc call = func->ob_type->tp_call;
    if (unlikely(!call))
        return PyObject_Call(func, arg, kw);
#if PY_VERSION_HEX >= 0x02060000
    if (unlikely(Py_EnterRecursiveCall((char*)" while calling a Python object")))
        return NULL;
#endif
    result = (*call)(func, arg, kw);
#if PY_VERSION_HEX >= 0x02060000
    Py_LeaveRecursiveCall();
#endif
    if (unlikely(!result) && unlikely(!PyErr_Occurred())) {
        PyErr_SetString(
            PyExc_SystemError,
            "NULL result without error in PyObject_Call");
    }
    return result;
}
#endif

static CYTHON_INLINE void __Pyx_ErrRestore(PyObject *type, PyObject *value, PyObject *tb) {
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyThreadState *tstate = PyThreadState_GET();
    tmp_type = tstate->curexc_type;
    tmp_value = tstate->curexc_value;
    tmp_tb = tstate->curexc_traceback;
    tstate->curexc_type = type;
    tstate->curexc_value = value;
    tstate->curexc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#else
    PyErr_Restore(type, value, tb);
#endif
}
static CYTHON_INLINE void __Pyx_ErrFetch(PyObject **type, PyObject **value, PyObject **tb) {
#if CYTHON_COMPILING_IN_CPYTHON
    PyThreadState *tstate = PyThreadState_GET();
    *type = tstate->curexc_type;
    *value = tstate->curexc_value;
    *tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
#else
    PyErr_Fetch(type, value, tb);
#endif
}

#if PY_MAJOR_VERSION < 3
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb,
                        CYTHON_UNUSED PyObject *cause) {
    Py_XINCREF(type);
    if (!value || value == Py_None)
        value = NULL;
    else
        Py_INCREF(value);
    if (!tb || tb == Py_None)
        tb = NULL;
    else {
        Py_INCREF(tb);
        if (!PyTraceBack_Check(tb)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: arg 3 must be a traceback or None");
            goto raise_error;
        }
    }
    #if PY_VERSION_HEX < 0x02050000
    if (PyClass_Check(type)) {
    #else
    if (PyType_Check(type)) {
    #endif
#if CYTHON_COMPILING_IN_PYPY
        if (!value) {
            Py_INCREF(Py_None);
            value = Py_None;
        }
#endif
        PyErr_NormalizeException(&type, &value, &tb);
    } else {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto raise_error;
        }
        value = type;
        #if PY_VERSION_HEX < 0x02050000
        if (PyInstance_Check(type)) {
            type = (PyObject*) ((PyInstanceObject*)type)->in_class;
            Py_INCREF(type);
        } else {
            type = 0;
            PyErr_SetString(PyExc_TypeError,
                "raise: exception must be an old-style class or instance");
            goto raise_error;
        }
        #else
        type = (PyObject*) Py_TYPE(type);
        Py_INCREF(type);
        if (!PyType_IsSubtype((PyTypeObject *)type, (PyTypeObject *)PyExc_BaseException)) {
            PyErr_SetString(PyExc_TypeError,
                "raise: exception class must be a subclass of BaseException");
            goto raise_error;
        }
        #endif
    }
    __Pyx_ErrRestore(type, value, tb);
    return;
raise_error:
    Py_XDECREF(value);
    Py_XDECREF(type);
    Py_XDECREF(tb);
    return;
}
#else /* Python 3+ */
static void __Pyx_Raise(PyObject *type, PyObject *value, PyObject *tb, PyObject *cause) {
    PyObject* owned_instance = NULL;
    if (tb == Py_None) {
        tb = 0;
    } else if (tb && !PyTraceBack_Check(tb)) {
        PyErr_SetString(PyExc_TypeError,
            "raise: arg 3 must be a traceback or None");
        goto bad;
    }
    if (value == Py_None)
        value = 0;
    if (PyExceptionInstance_Check(type)) {
        if (value) {
            PyErr_SetString(PyExc_TypeError,
                "instance exception may not have a separate value");
            goto bad;
        }
        value = type;
        type = (PyObject*) Py_TYPE(value);
    } else if (PyExceptionClass_Check(type)) {
        PyObject *instance_class = NULL;
        if (value && PyExceptionInstance_Check(value)) {
            instance_class = (PyObject*) Py_TYPE(value);
            if (instance_class != type) {
                if (PyObject_IsSubclass(instance_class, type)) {
                    type = instance_class;
                } else {
                    instance_class = NULL;
                }
            }
        }
        if (!instance_class) {
            PyObject *args;
            if (!value)
                args = PyTuple_New(0);
            else if (PyTuple_Check(value)) {
                Py_INCREF(value);
                args = value;
            } else
                args = PyTuple_Pack(1, value);
            if (!args)
                goto bad;
            owned_instance = PyObject_Call(type, args, NULL);
            Py_DECREF(args);
            if (!owned_instance)
                goto bad;
            value = owned_instance;
            if (!PyExceptionInstance_Check(value)) {
                PyErr_Format(PyExc_TypeError,
                             "calling %R should have returned an instance of "
                             "BaseException, not %R",
                             type, Py_TYPE(value));
                goto bad;
            }
        }
    } else {
        PyErr_SetString(PyExc_TypeError,
            "raise: exception class must be a subclass of BaseException");
        goto bad;
    }
#if PY_VERSION_HEX >= 0x03030000
    if (cause) {
#else
    if (cause && cause != Py_None) {
#endif
        PyObject *fixed_cause;
        if (cause == Py_None) {
            fixed_cause = NULL;
        } else if (PyExceptionClass_Check(cause)) {
            fixed_cause = PyObject_CallObject(cause, NULL);
            if (fixed_cause == NULL)
                goto bad;
        } else if (PyExceptionInstance_Check(cause)) {
            fixed_cause = cause;
            Py_INCREF(fixed_cause);
        } else {
            PyErr_SetString(PyExc_TypeError,
                            "exception causes must derive from "
                            "BaseException");
            goto bad;
        }
        PyException_SetCause(value, fixed_cause);
    }
    PyErr_SetObject(type, value);
    if (tb) {
        PyThreadState *tstate = PyThreadState_GET();
        PyObject* tmp_tb = tstate->curexc_traceback;
        if (tb != tmp_tb) {
            Py_INCREF(tb);
            tstate->curexc_traceback = tb;
            Py_XDECREF(tmp_tb);
        }
    }
bad:
    Py_XDECREF(owned_instance);
    return;
}
#endif

static void __Pyx_RaiseArgtupleInvalid(
    const char* func_name,
    int exact,
    Py_ssize_t num_min,
    Py_ssize_t num_max,
    Py_ssize_t num_found)
{
    Py_ssize_t num_expected;
    const char *more_or_less;
    if (num_found < num_min) {
        num_expected = num_min;
        more_or_less = "at least";
    } else {
        num_expected = num_max;
        more_or_less = "at most";
    }
    if (exact) {
        more_or_less = "exactly";
    }
    PyErr_Format(PyExc_TypeError,
                 "%.200s() takes %.8s %" CYTHON_FORMAT_SSIZE_T "d positional argument%.1s (%" CYTHON_FORMAT_SSIZE_T "d given)",
                 func_name, more_or_less, num_expected,
                 (num_expected == 1) ? "" : "s", num_found);
}

static CYTHON_INLINE int __Pyx_CheckKeywordStrings(
    PyObject *kwdict,
    const char* function_name,
    int kw_allowed)
{
    PyObject* key = 0;
    Py_ssize_t pos = 0;
#if CYTHON_COMPILING_IN_PYPY
    if (!kw_allowed && PyDict_Next(kwdict, &pos, &key, 0))
        goto invalid_keyword;
    return 1;
#else
    while (PyDict_Next(kwdict, &pos, &key, 0)) {
        #if PY_MAJOR_VERSION < 3
        if (unlikely(!PyString_CheckExact(key)) && unlikely(!PyString_Check(key)))
        #endif
            if (unlikely(!PyUnicode_Check(key)))
                goto invalid_keyword_type;
    }
    if ((!kw_allowed) && unlikely(key))
        goto invalid_keyword;
    return 1;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    return 0;
#endif
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
    return 0;
}

static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Generic(PyObject *o, PyObject* j) {
    PyObject *r;
    if (!j) return NULL;
    r = PyObject_GetItem(o, j);
    Py_DECREF(j);
    return r;
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_List_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck) {
#if CYTHON_COMPILING_IN_CPYTHON
    if (wraparound & unlikely(i < 0)) i += PyList_GET_SIZE(o);
    if ((!boundscheck) || likely((0 <= i) & (i < PyList_GET_SIZE(o)))) {
        PyObject *r = PyList_GET_ITEM(o, i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Tuple_Fast(PyObject *o, Py_ssize_t i,
                                                              int wraparound, int boundscheck) {
#if CYTHON_COMPILING_IN_CPYTHON
    if (wraparound & unlikely(i < 0)) i += PyTuple_GET_SIZE(o);
    if ((!boundscheck) || likely((0 <= i) & (i < PyTuple_GET_SIZE(o)))) {
        PyObject *r = PyTuple_GET_ITEM(o, i);
        Py_INCREF(r);
        return r;
    }
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
#else
    return PySequence_GetItem(o, i);
#endif
}
static CYTHON_INLINE PyObject *__Pyx_GetItemInt_Fast(PyObject *o, Py_ssize_t i,
                                                     int is_list, int wraparound, int boundscheck) {
#if CYTHON_COMPILING_IN_CPYTHON
    if (is_list || PyList_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyList_GET_SIZE(o);
        if ((!boundscheck) || (likely((n >= 0) & (n < PyList_GET_SIZE(o))))) {
            PyObject *r = PyList_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    }
    else if (PyTuple_CheckExact(o)) {
        Py_ssize_t n = ((!wraparound) | likely(i >= 0)) ? i : i + PyTuple_GET_SIZE(o);
        if ((!boundscheck) || likely((n >= 0) & (n < PyTuple_GET_SIZE(o)))) {
            PyObject *r = PyTuple_GET_ITEM(o, n);
            Py_INCREF(r);
            return r;
        }
    } else {
        PySequenceMethods *m = Py_TYPE(o)->tp_as_sequence;
        if (likely(m && m->sq_item)) {
            if (wraparound && unlikely(i < 0) && likely(m->sq_length)) {
                Py_ssize_t l = m->sq_length(o);
                if (likely(l >= 0)) {
                    i += l;
                } else {
                    if (PyErr_ExceptionMatches(PyExc_OverflowError))
                        PyErr_Clear();
                    else
                        return NULL;
                }
            }
            return m->sq_item(o, i);
        }
    }
#else
    if (is_list || PySequence_Check(o)) {
        return PySequence_GetItem(o, i);
    }
#endif
    return __Pyx_GetItemInt_Generic(o, PyInt_FromSsize_t(i));
}

static double __Pyx__PyObject_AsDouble(PyObject* obj) {
    PyObject* float_value;
#if CYTHON_COMPILING_IN_PYPY
    float_value = PyNumber_Float(obj);
#else
    PyNumberMethods *nb = Py_TYPE(obj)->tp_as_number;
    if (likely(nb) && likely(nb->nb_float)) {
        float_value = nb->nb_float(obj);
        if (likely(float_value) && unlikely(!PyFloat_Check(float_value))) {
            PyErr_Format(PyExc_TypeError,
                "__float__ returned non-float (type %.200s)",
                Py_TYPE(float_value)->tp_name);
            Py_DECREF(float_value);
            goto bad;
        }
    } else if (PyUnicode_CheckExact(obj) || PyBytes_CheckExact(obj)) {
#if PY_MAJOR_VERSION >= 3
        float_value = PyFloat_FromString(obj);
#else
        float_value = PyFloat_FromString(obj, 0);
#endif
    } else {
        PyObject* args = PyTuple_New(1);
        if (unlikely(!args)) goto bad;
        PyTuple_SET_ITEM(args, 0, obj);
        float_value = PyObject_Call((PyObject*)&PyFloat_Type, args, 0);
        PyTuple_SET_ITEM(args, 0, 0);
        Py_DECREF(args);
    }
#endif
    if (likely(float_value)) {
        double value = PyFloat_AS_DOUBLE(float_value);
        Py_DECREF(float_value);
        return value;
    }
bad:
    return (double)-1;
}

static void __Pyx_RaiseDoubleKeywordsError(
    const char* func_name,
    PyObject* kw_name)
{
    PyErr_Format(PyExc_TypeError,
        #if PY_MAJOR_VERSION >= 3
        "%s() got multiple values for keyword argument '%U'", func_name, kw_name);
        #else
        "%s() got multiple values for keyword argument '%s'", func_name,
        PyString_AsString(kw_name));
        #endif
}

static int __Pyx_ParseOptionalKeywords(
    PyObject *kwds,
    PyObject **argnames[],
    PyObject *kwds2,
    PyObject *values[],
    Py_ssize_t num_pos_args,
    const char* function_name)
{
    PyObject *key = 0, *value = 0;
    Py_ssize_t pos = 0;
    PyObject*** name;
    PyObject*** first_kw_arg = argnames + num_pos_args;
    while (PyDict_Next(kwds, &pos, &key, &value)) {
        name = first_kw_arg;
        while (*name && (**name != key)) name++;
        if (*name) {
            values[name-argnames] = value;
            continue;
        }
        name = first_kw_arg;
        #if PY_MAJOR_VERSION < 3
        if (likely(PyString_CheckExact(key)) || likely(PyString_Check(key))) {
            while (*name) {
                if ((CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**name) == PyString_GET_SIZE(key))
                        && _PyString_Eq(**name, key)) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    if ((**argname == key) || (
                            (CYTHON_COMPILING_IN_PYPY || PyString_GET_SIZE(**argname) == PyString_GET_SIZE(key))
                             && _PyString_Eq(**argname, key))) {
                        goto arg_passed_twice;
                    }
                    argname++;
                }
            }
        } else
        #endif
        if (likely(PyUnicode_Check(key))) {
            while (*name) {
                int cmp = (**name == key) ? 0 :
                #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                    (PyUnicode_GET_SIZE(**name) != PyUnicode_GET_SIZE(key)) ? 1 :
                #endif
                    PyUnicode_Compare(**name, key);
                if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                if (cmp == 0) {
                    values[name-argnames] = value;
                    break;
                }
                name++;
            }
            if (*name) continue;
            else {
                PyObject*** argname = argnames;
                while (argname != first_kw_arg) {
                    int cmp = (**argname == key) ? 0 :
                    #if !CYTHON_COMPILING_IN_PYPY && PY_MAJOR_VERSION >= 3
                        (PyUnicode_GET_SIZE(**argname) != PyUnicode_GET_SIZE(key)) ? 1 :
                    #endif
                        PyUnicode_Compare(**argname, key);
                    if (cmp < 0 && unlikely(PyErr_Occurred())) goto bad;
                    if (cmp == 0) goto arg_passed_twice;
                    argname++;
                }
            }
        } else
            goto invalid_keyword_type;
        if (kwds2) {
            if (unlikely(PyDict_SetItem(kwds2, key, value))) goto bad;
        } else {
            goto invalid_keyword;
        }
    }
    return 0;
arg_passed_twice:
    __Pyx_RaiseDoubleKeywordsError(function_name, key);
    goto bad;
invalid_keyword_type:
    PyErr_Format(PyExc_TypeError,
        "%.200s() keywords must be strings", function_name);
    goto bad;
invalid_keyword:
    PyErr_Format(PyExc_TypeError,
    #if PY_MAJOR_VERSION < 3
        "%.200s() got an unexpected keyword argument '%.200s'",
        function_name, PyString_AsString(key));
    #else
        "%s() got an unexpected keyword argument '%U'",
        function_name, key);
    #endif
bad:
    return -1;
}

static void __Pyx_RaiseArgumentTypeInvalid(const char* name, PyObject *obj, PyTypeObject *type) {
    PyErr_Format(PyExc_TypeError,
        "Argument '%.200s' has incorrect type (expected %.200s, got %.200s)",
        name, type->tp_name, Py_TYPE(obj)->tp_name);
}
static CYTHON_INLINE int __Pyx_ArgTypeTest(PyObject *obj, PyTypeObject *type, int none_allowed,
    const char *name, int exact)
{
    if (unlikely(!type)) {
        PyErr_SetString(PyExc_SystemError, "Missing type object");
        return 0;
    }
    if (none_allowed && obj == Py_None) return 1;
    else if (exact) {
        if (likely(Py_TYPE(obj) == type)) return 1;
        #if PY_MAJOR_VERSION == 2
        else if ((type == &PyBaseString_Type) && likely(__Pyx_PyBaseString_CheckExact(obj))) return 1;
        #endif
    }
    else {
        if (likely(PyObject_TypeCheck(obj, type))) return 1;
    }
    __Pyx_RaiseArgumentTypeInvalid(name, obj, type);
    return 0;
}

static CYTHON_INLINE PyObject *__Pyx_GetModuleGlobalName(PyObject *name) {
    PyObject *result;
#if CYTHON_COMPILING_IN_CPYTHON
    result = PyDict_GetItem(__pyx_d, name);
    if (result) {
        Py_INCREF(result);
    } else {
#else
    result = PyObject_GetItem(__pyx_d, name);
    if (!result) {
        PyErr_Clear();
#endif
        result = __Pyx_GetBuiltinName(name);
    }
    return result;
}

static CYTHON_INLINE void __Pyx_RaiseTooManyValuesError(Py_ssize_t expected) {
    PyErr_Format(PyExc_ValueError,
                 "too many values to unpack (expected %" CYTHON_FORMAT_SSIZE_T "d)", expected);
}

static CYTHON_INLINE void __Pyx_RaiseNeedMoreValuesError(Py_ssize_t index) {
    PyErr_Format(PyExc_ValueError,
                 "need more than %" CYTHON_FORMAT_SSIZE_T "d value%.1s to unpack",
                 index, (index == 1) ? "" : "s");
}

static CYTHON_INLINE int __Pyx_IterFinish(void) {
#if CYTHON_COMPILING_IN_CPYTHON
    PyThreadState *tstate = PyThreadState_GET();
    PyObject* exc_type = tstate->curexc_type;
    if (unlikely(exc_type)) {
        if (likely(exc_type == PyExc_StopIteration) || PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration)) {
            PyObject *exc_value, *exc_tb;
            exc_value = tstate->curexc_value;
            exc_tb = tstate->curexc_traceback;
            tstate->curexc_type = 0;
            tstate->curexc_value = 0;
            tstate->curexc_traceback = 0;
            Py_DECREF(exc_type);
            Py_XDECREF(exc_value);
            Py_XDECREF(exc_tb);
            return 0;
        } else {
            return -1;
        }
    }
    return 0;
#else
    if (unlikely(PyErr_Occurred())) {
        if (likely(PyErr_ExceptionMatches(PyExc_StopIteration))) {
            PyErr_Clear();
            return 0;
        } else {
            return -1;
        }
    }
    return 0;
#endif
}

static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
    if (unlikely(retval)) {
        Py_DECREF(retval);
        __Pyx_RaiseTooManyValuesError(expected);
        return -1;
    } else {
        return __Pyx_IterFinish();
    }
    return 0;
}

static int __Pyx_GetException(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *local_type, *local_value, *local_tb;
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyThreadState *tstate = PyThreadState_GET();
    local_type = tstate->curexc_type;
    local_value = tstate->curexc_value;
    local_tb = tstate->curexc_traceback;
    tstate->curexc_type = 0;
    tstate->curexc_value = 0;
    tstate->curexc_traceback = 0;
#else
    PyErr_Fetch(&local_type, &local_value, &local_tb);
#endif
    PyErr_NormalizeException(&local_type, &local_value, &local_tb);
#if CYTHON_COMPILING_IN_CPYTHON
    if (unlikely(tstate->curexc_type))
#else
    if (unlikely(PyErr_Occurred()))
#endif
        goto bad;
    #if PY_MAJOR_VERSION >= 3
    if (local_tb) {
        if (unlikely(PyException_SetTraceback(local_value, local_tb) < 0))
            goto bad;
    }
    #endif
    Py_XINCREF(local_tb);
    Py_XINCREF(local_type);
    Py_XINCREF(local_value);
    *type = local_type;
    *value = local_value;
    *tb = local_tb;
#if CYTHON_COMPILING_IN_CPYTHON
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = local_type;
    tstate->exc_value = local_value;
    tstate->exc_traceback = local_tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#else
    PyErr_SetExcInfo(local_type, local_value, local_tb);
#endif
    return 0;
bad:
    *type = 0;
    *value = 0;
    *tb = 0;
    Py_XDECREF(local_type);
    Py_XDECREF(local_value);
    Py_XDECREF(local_tb);
    return -1;
}

static CYTHON_INLINE void __Pyx_ExceptionSwap(PyObject **type, PyObject **value, PyObject **tb) {
    PyObject *tmp_type, *tmp_value, *tmp_tb;
#if CYTHON_COMPILING_IN_CPYTHON
    PyThreadState *tstate = PyThreadState_GET();
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = *type;
    tstate->exc_value = *value;
    tstate->exc_traceback = *tb;
#else
    PyErr_GetExcInfo(&tmp_type, &tmp_value, &tmp_tb);
    PyErr_SetExcInfo(*type, *value, *tb);
#endif
    *type = tmp_type;
    *value = tmp_value;
    *tb = tmp_tb;
}

static CYTHON_INLINE void __Pyx_ExceptionSave(PyObject **type, PyObject **value, PyObject **tb) {
#if CYTHON_COMPILING_IN_CPYTHON
    PyThreadState *tstate = PyThreadState_GET();
    *type = tstate->exc_type;
    *value = tstate->exc_value;
    *tb = tstate->exc_traceback;
    Py_XINCREF(*type);
    Py_XINCREF(*value);
    Py_XINCREF(*tb);
#else
    PyErr_GetExcInfo(type, value, tb);
#endif
}
static void __Pyx_ExceptionReset(PyObject *type, PyObject *value, PyObject *tb) {
#if CYTHON_COMPILING_IN_CPYTHON
    PyObject *tmp_type, *tmp_value, *tmp_tb;
    PyThreadState *tstate = PyThreadState_GET();
    tmp_type = tstate->exc_type;
    tmp_value = tstate->exc_value;
    tmp_tb = tstate->exc_traceback;
    tstate->exc_type = type;
    tstate->exc_value = value;
    tstate->exc_traceback = tb;
    Py_XDECREF(tmp_type);
    Py_XDECREF(tmp_value);
    Py_XDECREF(tmp_tb);
#else
    PyErr_SetExcInfo(type, value, tb);
#endif
}

static CYTHON_INLINE void __Pyx_RaiseClosureNameError(const char *varname) {
    PyErr_Format(PyExc_NameError, "free variable '%s' referenced before assignment in enclosing scope", varname);
}

static CYTHON_INLINE PyObject* __Pyx_PyDict_Items(PyObject* d) {
    if (PY_MAJOR_VERSION >= 3)
        return __Pyx_PyObject_CallMethod1((PyObject*)&PyDict_Type, __pyx_n_s_items, d);
    else
        return PyDict_Items(d);
}

static PyObject *__Pyx_GetNameInClass(PyObject *nmspace, PyObject *name) {
    PyObject *result;
    result = __Pyx_PyObject_GetAttrStr(nmspace, name);
    if (!result)
        result = __Pyx_GetModuleGlobalName(name);
    return result;
}

static PyObject *__Pyx_Import(PyObject *name, PyObject *from_list, int level) {
    PyObject *empty_list = 0;
    PyObject *module = 0;
    PyObject *global_dict = 0;
    PyObject *empty_dict = 0;
    PyObject *list;
    #if PY_VERSION_HEX < 0x03030000
    PyObject *py_import;
    py_import = __Pyx_PyObject_GetAttrStr(__pyx_b, __pyx_n_s_import);
    if (!py_import)
        goto bad;
    #endif
    if (from_list)
        list = from_list;
    else {
        empty_list = PyList_New(0);
        if (!empty_list)
            goto bad;
        list = empty_list;
    }
    global_dict = PyModule_GetDict(__pyx_m);
    if (!global_dict)
        goto bad;
    empty_dict = PyDict_New();
    if (!empty_dict)
        goto bad;
    #if PY_VERSION_HEX >= 0x02050000
    {
        #if PY_MAJOR_VERSION >= 3
        if (level == -1) {
            if (strchr(__Pyx_MODULE_NAME, '.')) {
                #if PY_VERSION_HEX < 0x03030000
                PyObject *py_level = PyInt_FromLong(1);
                if (!py_level)
                    goto bad;
                module = PyObject_CallFunctionObjArgs(py_import,
                    name, global_dict, empty_dict, list, py_level, NULL);
                Py_DECREF(py_level);
                #else
                module = PyImport_ImportModuleLevelObject(
                    name, global_dict, empty_dict, list, 1);
                #endif
                if (!module) {
                    if (!PyErr_ExceptionMatches(PyExc_ImportError))
                        goto bad;
                    PyErr_Clear();
                }
            }
            level = 0; /* try absolute import on failure */
        }
        #endif
        if (!module) {
            #if PY_VERSION_HEX < 0x03030000
            PyObject *py_level = PyInt_FromLong(level);
            if (!py_level)
                goto bad;
            module = PyObject_CallFunctionObjArgs(py_import,
                name, global_dict, empty_dict, list, py_level, NULL);
            Py_DECREF(py_level);
            #else
            module = PyImport_ImportModuleLevelObject(
                name, global_dict, empty_dict, list, level);
            #endif
        }
    }
    #else
    if (level>0) {
        PyErr_SetString(PyExc_RuntimeError, "Relative import is not supported for Python <=2.4.");
        goto bad;
    }
    module = PyObject_CallFunctionObjArgs(py_import,
        name, global_dict, empty_dict, list, NULL);
    #endif
bad:
    #if PY_VERSION_HEX < 0x03030000
    Py_XDECREF(py_import);
    #endif
    Py_XDECREF(empty_list);
    Py_XDECREF(empty_dict);
    return module;
}

static CYTHON_INLINE PyObject* __Pyx_PyInt_From_int(int value) {
    const int neg_one = (int) -1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(int) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
        } else if (sizeof(int) <= sizeof(unsigned long long)) {
            return PyLong_FromUnsignedLongLong((unsigned long long) value);
        }
    } else {
        if (sizeof(int) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(int) <= sizeof(long long)) {
            return PyLong_FromLongLong((long long) value);
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(int),
                                     little, !is_unsigned);
    }
}

#define __PYX_VERIFY_RETURN_INT(target_type, func_type, func)             \
    {                                                                     \
        func_type value = func(x);                                        \
        if (sizeof(target_type) < sizeof(func_type)) {                    \
            if (unlikely(value != (func_type) (target_type) value)) {     \
                func_type zero = 0;                                       \
                PyErr_SetString(PyExc_OverflowError,                      \
                    (is_unsigned && unlikely(value < zero)) ?             \
                    "can't convert negative value to " #target_type :     \
                    "value too large to convert to " #target_type);       \
                return (target_type) -1;                                  \
            }                                                             \
        }                                                                 \
        return (target_type) value;                                       \
    }

#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
 #if CYTHON_USE_PYLONG_INTERNALS
  #include "longintrepr.h"
 #endif
#endif
static CYTHON_INLINE int __Pyx_PyInt_As_int(PyObject *x) {
    const int neg_one = (int) -1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(int) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(int, long, PyInt_AS_LONG)
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to int");
                return (int) -1;
            }
            return (int) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
 #if CYTHON_USE_PYLONG_INTERNALS
            if (sizeof(digit) <= sizeof(int)) {
                switch (Py_SIZE(x)) {
                    case  0: return 0;
                    case  1: return (int) ((PyLongObject*)x)->ob_digit[0];
                }
            }
 #endif
#endif
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to int");
                return (int) -1;
            }
            if (sizeof(int) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT(int, unsigned long, PyLong_AsUnsignedLong)
            } else if (sizeof(int) <= sizeof(unsigned long long)) {
                __PYX_VERIFY_RETURN_INT(int, unsigned long long, PyLong_AsUnsignedLongLong)
            }
        } else {
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
 #if CYTHON_USE_PYLONG_INTERNALS
            if (sizeof(digit) <= sizeof(int)) {
                switch (Py_SIZE(x)) {
                    case  0: return 0;
                    case  1: return +(int) ((PyLongObject*)x)->ob_digit[0];
                    case -1: return -(int) ((PyLongObject*)x)->ob_digit[0];
                }
            }
 #endif
#endif
            if (sizeof(int) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT(int, long, PyLong_AsLong)
            } else if (sizeof(int) <= sizeof(long long)) {
                __PYX_VERIFY_RETURN_INT(int, long long, PyLong_AsLongLong)
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            int val;
            PyObject *v = __Pyx_PyNumber_Int(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (int) -1;
        }
    } else {
        int val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (int) -1;
        val = __Pyx_PyInt_As_int(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static CYTHON_INLINE PyObject* __Pyx_PyInt_From_long(long value) {
    const long neg_one = (long) -1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
    if (is_unsigned) {
        if (sizeof(long) < sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(unsigned long)) {
            return PyLong_FromUnsignedLong((unsigned long) value);
        } else if (sizeof(long) <= sizeof(unsigned long long)) {
            return PyLong_FromUnsignedLongLong((unsigned long long) value);
        }
    } else {
        if (sizeof(long) <= sizeof(long)) {
            return PyInt_FromLong((long) value);
        } else if (sizeof(long) <= sizeof(long long)) {
            return PyLong_FromLongLong((long long) value);
        }
    }
    {
        int one = 1; int little = (int)*(unsigned char *)&one;
        unsigned char *bytes = (unsigned char *)&value;
        return _PyLong_FromByteArray(bytes, sizeof(long),
                                     little, !is_unsigned);
    }
}

#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
 #if CYTHON_USE_PYLONG_INTERNALS
  #include "longintrepr.h"
 #endif
#endif
static CYTHON_INLINE long __Pyx_PyInt_As_long(PyObject *x) {
    const long neg_one = (long) -1, const_zero = 0;
    const int is_unsigned = neg_one > const_zero;
#if PY_MAJOR_VERSION < 3
    if (likely(PyInt_Check(x))) {
        if (sizeof(long) < sizeof(long)) {
            __PYX_VERIFY_RETURN_INT(long, long, PyInt_AS_LONG)
        } else {
            long val = PyInt_AS_LONG(x);
            if (is_unsigned && unlikely(val < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to long");
                return (long) -1;
            }
            return (long) val;
        }
    } else
#endif
    if (likely(PyLong_Check(x))) {
        if (is_unsigned) {
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
 #if CYTHON_USE_PYLONG_INTERNALS
            if (sizeof(digit) <= sizeof(long)) {
                switch (Py_SIZE(x)) {
                    case  0: return 0;
                    case  1: return (long) ((PyLongObject*)x)->ob_digit[0];
                }
            }
 #endif
#endif
            if (unlikely(Py_SIZE(x) < 0)) {
                PyErr_SetString(PyExc_OverflowError,
                                "can't convert negative value to long");
                return (long) -1;
            }
            if (sizeof(long) <= sizeof(unsigned long)) {
                __PYX_VERIFY_RETURN_INT(long, unsigned long, PyLong_AsUnsignedLong)
            } else if (sizeof(long) <= sizeof(unsigned long long)) {
                __PYX_VERIFY_RETURN_INT(long, unsigned long long, PyLong_AsUnsignedLongLong)
            }
        } else {
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
 #if CYTHON_USE_PYLONG_INTERNALS
            if (sizeof(digit) <= sizeof(long)) {
                switch (Py_SIZE(x)) {
                    case  0: return 0;
                    case  1: return +(long) ((PyLongObject*)x)->ob_digit[0];
                    case -1: return -(long) ((PyLongObject*)x)->ob_digit[0];
                }
            }
 #endif
#endif
            if (sizeof(long) <= sizeof(long)) {
                __PYX_VERIFY_RETURN_INT(long, long, PyLong_AsLong)
            } else if (sizeof(long) <= sizeof(long long)) {
                __PYX_VERIFY_RETURN_INT(long, long long, PyLong_AsLongLong)
            }
        }
        {
#if CYTHON_COMPILING_IN_PYPY && !defined(_PyLong_AsByteArray)
            PyErr_SetString(PyExc_RuntimeError,
                            "_PyLong_AsByteArray() not available in PyPy, cannot convert large numbers");
#else
            long val;
            PyObject *v = __Pyx_PyNumber_Int(x);
 #if PY_MAJOR_VERSION < 3
            if (likely(v) && !PyLong_Check(v)) {
                PyObject *tmp = v;
                v = PyNumber_Long(tmp);
                Py_DECREF(tmp);
            }
 #endif
            if (likely(v)) {
                int one = 1; int is_little = (int)*(unsigned char *)&one;
                unsigned char *bytes = (unsigned char *)&val;
                int ret = _PyLong_AsByteArray((PyLongObject *)v,
                                              bytes, sizeof(val),
                                              is_little, !is_unsigned);
                Py_DECREF(v);
                if (likely(!ret))
                    return val;
            }
#endif
            return (long) -1;
        }
    } else {
        long val;
        PyObject *tmp = __Pyx_PyNumber_Int(x);
        if (!tmp) return (long) -1;
        val = __Pyx_PyInt_As_long(tmp);
        Py_DECREF(tmp);
        return val;
    }
}

static PyObject* __Pyx_Method_ClassMethod(PyObject *method) {
#if CYTHON_COMPILING_IN_PYPY
    if (PyObject_TypeCheck(method, &PyWrapperDescr_Type)) { /* cdef classes */
        return PyClassMethod_New(method);
    }
#else
    static PyTypeObject *methoddescr_type = NULL;
    if (methoddescr_type == NULL) {
       PyObject *meth = __Pyx_GetAttrString((PyObject*)&PyList_Type, "append");
       if (!meth) return NULL;
       methoddescr_type = Py_TYPE(meth);
       Py_DECREF(meth);
    }
    if (PyObject_TypeCheck(method, methoddescr_type)) { /* cdef classes */
        PyMethodDescrObject *descr = (PyMethodDescrObject *)method;
        #if PY_VERSION_HEX < 0x03020000
        PyTypeObject *d_type = descr->d_type;
        #else
        PyTypeObject *d_type = descr->d_common.d_type;
        #endif
        return PyDescr_NewClassMethod(d_type, descr->d_method);
    }
#endif
    else if (PyMethod_Check(method)) { /* python classes */
        return PyClassMethod_New(PyMethod_GET_FUNCTION(method));
    }
    else if (PyCFunction_Check(method)) {
        return PyClassMethod_New(method);
    }
#ifdef __Pyx_CyFunction_USED
    else if (PyObject_TypeCheck(method, __pyx_CyFunctionType)) {
        return PyClassMethod_New(method);
    }
#endif
    PyErr_SetString(PyExc_TypeError,
                   "Class-level classmethod() can only be called on "
                   "a method_descriptor or instance method.");
    return NULL;
}

static PyTypeObject* __Pyx_FetchCommonType(PyTypeObject* type) {
    PyObject* fake_module;
    PyTypeObject* cached_type = NULL;
    fake_module = PyImport_AddModule((char*) "_cython_" CYTHON_ABI);
    if (!fake_module) return NULL;
    Py_INCREF(fake_module);
    cached_type = (PyTypeObject*) PyObject_GetAttrString(fake_module, type->tp_name);
    if (cached_type) {
        if (!PyType_Check((PyObject*)cached_type)) {
            PyErr_Format(PyExc_TypeError,
                "Shared Cython type %.200s is not a type object",
                type->tp_name);
            goto bad;
        }
        if (cached_type->tp_basicsize != type->tp_basicsize) {
            PyErr_Format(PyExc_TypeError,
                "Shared Cython type %.200s has the wrong size, try recompiling",
                type->tp_name);
            goto bad;
        }
    } else {
        if (!PyErr_ExceptionMatches(PyExc_AttributeError)) goto bad;
        PyErr_Clear();
        if (PyType_Ready(type) < 0) goto bad;
        if (PyObject_SetAttrString(fake_module, type->tp_name, (PyObject*) type) < 0)
            goto bad;
        Py_INCREF(type);
        cached_type = type;
    }
done:
    Py_DECREF(fake_module);
    return cached_type;
bad:
    Py_XDECREF(cached_type);
    cached_type = NULL;
    goto done;
}

static PyObject *__Pyx_Generator_Next(PyObject *self);
static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value);
static PyObject *__Pyx_Generator_Close(PyObject *self);
static PyObject *__Pyx_Generator_Throw(PyObject *gen, PyObject *args);
static PyTypeObject *__pyx_GeneratorType = 0;
#define __Pyx_Generator_CheckExact(obj) (Py_TYPE(obj) == __pyx_GeneratorType)
#define __Pyx_Generator_Undelegate(gen) Py_CLEAR((gen)->yieldfrom)
#if 1 || PY_VERSION_HEX < 0x030300B0
static int __Pyx_PyGen_FetchStopIterationValue(PyObject **pvalue) {
    PyObject *et, *ev, *tb;
    PyObject *value = NULL;
    __Pyx_ErrFetch(&et, &ev, &tb);
    if (!et) {
        Py_XDECREF(tb);
        Py_XDECREF(ev);
        Py_INCREF(Py_None);
        *pvalue = Py_None;
        return 0;
    }
    if (unlikely(et != PyExc_StopIteration) &&
            unlikely(!PyErr_GivenExceptionMatches(et, PyExc_StopIteration))) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    if (likely(et == PyExc_StopIteration)) {
        if (likely(!ev) || !PyObject_IsInstance(ev, PyExc_StopIteration)) {
            if (!ev) {
                Py_INCREF(Py_None);
                ev = Py_None;
            }
            Py_XDECREF(tb);
            Py_DECREF(et);
            *pvalue = ev;
            return 0;
        }
    }
    PyErr_NormalizeException(&et, &ev, &tb);
    if (unlikely(!PyObject_IsInstance(ev, PyExc_StopIteration))) {
        __Pyx_ErrRestore(et, ev, tb);
        return -1;
    }
    Py_XDECREF(tb);
    Py_DECREF(et);
#if PY_VERSION_HEX >= 0x030300A0
    value = ((PyStopIterationObject *)ev)->value;
    Py_INCREF(value);
    Py_DECREF(ev);
#else
    {
        PyObject* args = PyObject_GetAttr(ev, __pyx_n_s_args);
        Py_DECREF(ev);
        if (likely(args)) {
            value = PyObject_GetItem(args, 0);
            Py_DECREF(args);
        }
        if (unlikely(!value)) {
            __Pyx_ErrRestore(NULL, NULL, NULL);
            Py_INCREF(Py_None);
            value = Py_None;
        }
    }
#endif
    *pvalue = value;
    return 0;
}
#endif
static CYTHON_INLINE
void __Pyx_Generator_ExceptionClear(__pyx_GeneratorObject *self) {
    PyObject *exc_type = self->exc_type;
    PyObject *exc_value = self->exc_value;
    PyObject *exc_traceback = self->exc_traceback;
    self->exc_type = NULL;
    self->exc_value = NULL;
    self->exc_traceback = NULL;
    Py_XDECREF(exc_type);
    Py_XDECREF(exc_value);
    Py_XDECREF(exc_traceback);
}
static CYTHON_INLINE
int __Pyx_Generator_CheckRunning(__pyx_GeneratorObject *gen) {
    if (unlikely(gen->is_running)) {
        PyErr_SetString(PyExc_ValueError,
                        "generator already executing");
        return 1;
    }
    return 0;
}
static CYTHON_INLINE
PyObject *__Pyx_Generator_SendEx(__pyx_GeneratorObject *self, PyObject *value) {
    PyObject *retval;
    assert(!self->is_running);
    if (unlikely(self->resume_label == 0)) {
        if (unlikely(value && value != Py_None)) {
            PyErr_SetString(PyExc_TypeError,
                            "can't send non-None value to a "
                            "just-started generator");
            return NULL;
        }
    }
    if (unlikely(self->resume_label == -1)) {
        PyErr_SetNone(PyExc_StopIteration);
        return NULL;
    }
    if (value) {
#if CYTHON_COMPILING_IN_PYPY
#else
        /* Generators always return to their most recent caller, not
         * necessarily their creator. */
        if (self->exc_traceback) {
            PyThreadState *tstate = PyThreadState_GET();
            PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
            PyFrameObject *f = tb->tb_frame;
            Py_XINCREF(tstate->frame);
            assert(f->f_back == NULL);
            f->f_back = tstate->frame;
        }
#endif
        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
                            &self->exc_traceback);
    } else {
        __Pyx_Generator_ExceptionClear(self);
    }
    self->is_running = 1;
    retval = self->body((PyObject *) self, value);
    self->is_running = 0;
    if (retval) {
        __Pyx_ExceptionSwap(&self->exc_type, &self->exc_value,
                            &self->exc_traceback);
#if CYTHON_COMPILING_IN_PYPY
#else
        /* Don't keep the reference to f_back any longer than necessary.  It
         * may keep a chain of frames alive or it could create a reference
         * cycle. */
        if (self->exc_traceback) {
            PyTracebackObject *tb = (PyTracebackObject *) self->exc_traceback;
            PyFrameObject *f = tb->tb_frame;
            Py_CLEAR(f->f_back);
        }
#endif
    } else {
        __Pyx_Generator_ExceptionClear(self);
    }
    return retval;
}
static CYTHON_INLINE
PyObject *__Pyx_Generator_FinishDelegation(__pyx_GeneratorObject *gen) {
    PyObject *ret;
    PyObject *val = NULL;
    __Pyx_Generator_Undelegate(gen);
    __Pyx_PyGen_FetchStopIterationValue(&val);
    ret = __Pyx_Generator_SendEx(gen, val);
    Py_XDECREF(val);
    return ret;
}
static PyObject *__Pyx_Generator_Next(PyObject *self) {
    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(__Pyx_Generator_CheckRunning(gen)))
        return NULL;
    if (yf) {
        PyObject *ret;
        gen->is_running = 1;
        ret = Py_TYPE(yf)->tp_iternext(yf);
        gen->is_running = 0;
        if (likely(ret)) {
            return ret;
        }
        return __Pyx_Generator_FinishDelegation(gen);
    }
    return __Pyx_Generator_SendEx(gen, Py_None);
}
static PyObject *__Pyx_Generator_Send(PyObject *self, PyObject *value) {
    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject*) self;
    PyObject *yf = gen->yieldfrom;
    if (unlikely(__Pyx_Generator_CheckRunning(gen)))
        return NULL;
    if (yf) {
        PyObject *ret;
        gen->is_running = 1;
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Generator_Send(yf, value);
        } else {
            if (value == Py_None)
                ret = PyIter_Next(yf);
            else
                ret = __Pyx_PyObject_CallMethod1(yf, __pyx_n_s_send, value);
        }
        gen->is_running = 0;
        if (likely(ret)) {
            return ret;
        }
        return __Pyx_Generator_FinishDelegation(gen);
    }
    return __Pyx_Generator_SendEx(gen, value);
}
static int __Pyx_Generator_CloseIter(__pyx_GeneratorObject *gen, PyObject *yf) {
    PyObject *retval = NULL;
    int err = 0;
    if (__Pyx_Generator_CheckExact(yf)) {
        retval = __Pyx_Generator_Close(yf);
        if (!retval)
            return -1;
    } else {
        PyObject *meth;
        gen->is_running = 1;
        meth = PyObject_GetAttr(yf, __pyx_n_s_close);
        if (unlikely(!meth)) {
            if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
                PyErr_WriteUnraisable(yf);
            }
            PyErr_Clear();
        } else {
            retval = PyObject_CallFunction(meth, NULL);
            Py_DECREF(meth);
            if (!retval)
                err = -1;
        }
        gen->is_running = 0;
    }
    Py_XDECREF(retval);
    return err;
}
static PyObject *__Pyx_Generator_Close(PyObject *self) {
    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
    PyObject *retval, *raised_exception;
    PyObject *yf = gen->yieldfrom;
    int err = 0;
    if (unlikely(__Pyx_Generator_CheckRunning(gen)))
        return NULL;
    if (yf) {
        Py_INCREF(yf);
        err = __Pyx_Generator_CloseIter(gen, yf);
        __Pyx_Generator_Undelegate(gen);
        Py_DECREF(yf);
    }
    if (err == 0)
#if PY_VERSION_HEX < 0x02050000
        PyErr_SetNone(PyExc_StopIteration);
#else
        PyErr_SetNone(PyExc_GeneratorExit);
#endif
    retval = __Pyx_Generator_SendEx(gen, NULL);
    if (retval) {
        Py_DECREF(retval);
        PyErr_SetString(PyExc_RuntimeError,
                        "generator ignored GeneratorExit");
        return NULL;
    }
    raised_exception = PyErr_Occurred();
    if (!raised_exception
        || raised_exception == PyExc_StopIteration
#if PY_VERSION_HEX >= 0x02050000
        || raised_exception == PyExc_GeneratorExit
        || PyErr_GivenExceptionMatches(raised_exception, PyExc_GeneratorExit)
#endif
        || PyErr_GivenExceptionMatches(raised_exception, PyExc_StopIteration))
    {
        if (raised_exception) PyErr_Clear();      /* ignore these errors */
        Py_INCREF(Py_None);
        return Py_None;
    }
    return NULL;
}
static PyObject *__Pyx_Generator_Throw(PyObject *self, PyObject *args) {
    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
    PyObject *typ;
    PyObject *tb = NULL;
    PyObject *val = NULL;
    PyObject *yf = gen->yieldfrom;
    if (!PyArg_UnpackTuple(args, (char *)"throw", 1, 3, &typ, &val, &tb))
        return NULL;
    if (unlikely(__Pyx_Generator_CheckRunning(gen)))
        return NULL;
    if (yf) {
        PyObject *ret;
        Py_INCREF(yf);
#if PY_VERSION_HEX >= 0x02050000
        if (PyErr_GivenExceptionMatches(typ, PyExc_GeneratorExit)) {
            int err = __Pyx_Generator_CloseIter(gen, yf);
            Py_DECREF(yf);
            __Pyx_Generator_Undelegate(gen);
            if (err < 0)
                return __Pyx_Generator_SendEx(gen, NULL);
            goto throw_here;
        }
#endif
        gen->is_running = 1;
        if (__Pyx_Generator_CheckExact(yf)) {
            ret = __Pyx_Generator_Throw(yf, args);
        } else {
            PyObject *meth = PyObject_GetAttr(yf, __pyx_n_s_throw);
            if (unlikely(!meth)) {
                Py_DECREF(yf);
                if (!PyErr_ExceptionMatches(PyExc_AttributeError)) {
                    gen->is_running = 0;
                    return NULL;
                }
                PyErr_Clear();
                __Pyx_Generator_Undelegate(gen);
                gen->is_running = 0;
                goto throw_here;
            }
            ret = PyObject_CallObject(meth, args);
            Py_DECREF(meth);
        }
        gen->is_running = 0;
        Py_DECREF(yf);
        if (!ret) {
            ret = __Pyx_Generator_FinishDelegation(gen);
        }
        return ret;
    }
throw_here:
    __Pyx_Raise(typ, val, tb, NULL);
    return __Pyx_Generator_SendEx(gen, NULL);
}
static int __Pyx_Generator_traverse(PyObject *self, visitproc visit, void *arg) {
    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
    Py_VISIT(gen->closure);
    Py_VISIT(gen->classobj);
    Py_VISIT(gen->yieldfrom);
    Py_VISIT(gen->exc_type);
    Py_VISIT(gen->exc_value);
    Py_VISIT(gen->exc_traceback);
    return 0;
}
static int __Pyx_Generator_clear(PyObject *self) {
    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
    Py_CLEAR(gen->closure);
    Py_CLEAR(gen->classobj);
    Py_CLEAR(gen->yieldfrom);
    Py_CLEAR(gen->exc_type);
    Py_CLEAR(gen->exc_value);
    Py_CLEAR(gen->exc_traceback);
    return 0;
}
static void __Pyx_Generator_dealloc(PyObject *self) {
    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
    PyObject_GC_UnTrack(gen);
    if (gen->gi_weakreflist != NULL)
        PyObject_ClearWeakRefs(self);
    if (gen->resume_label > 0) {
        PyObject_GC_Track(self);
#if PY_VERSION_HEX >= 0x030400a1
        if (PyObject_CallFinalizerFromDealloc(self))
#else
        Py_TYPE(gen)->tp_del(self);
        if (self->ob_refcnt > 0)
#endif
            return;                     /* resurrected.  :( */
        PyObject_GC_UnTrack(self);
    }
    __Pyx_Generator_clear(self);
    PyObject_GC_Del(gen);
}
static void __Pyx_Generator_del(PyObject *self) {
    PyObject *res;
    PyObject *error_type, *error_value, *error_traceback;
    __pyx_GeneratorObject *gen = (__pyx_GeneratorObject *) self;
    if (gen->resume_label <= 0)
        return ;
#if PY_VERSION_HEX < 0x030400a1
    assert(self->ob_refcnt == 0);
    self->ob_refcnt = 1;
#endif
    __Pyx_ErrFetch(&error_type, &error_value, &error_traceback);
    res = __Pyx_Generator_Close(self);
    if (res == NULL)
        PyErr_WriteUnraisable(self);
    else
        Py_DECREF(res);
    __Pyx_ErrRestore(error_type, error_value, error_traceback);
#if PY_VERSION_HEX < 0x030400a1
    /* Undo the temporary resurrection; can't use DECREF here, it would
     * cause a recursive call.
     */
    assert(self->ob_refcnt > 0);
    if (--self->ob_refcnt == 0)
        return; /* this is the normal path out */
    /* close() resurrected it!  Make it look like the original Py_DECREF
     * never happened.
     */
    {
        Py_ssize_t refcnt = self->ob_refcnt;
        _Py_NewReference(self);
        self->ob_refcnt = refcnt;
    }
#if CYTHON_COMPILING_IN_CPYTHON
    assert(PyType_IS_GC(self->ob_type) &&
           _Py_AS_GC(self)->gc.gc_refs != _PyGC_REFS_UNTRACKED);
    /* If Py_REF_DEBUG, _Py_NewReference bumped _Py_RefTotal, so
     * we need to undo that. */
    _Py_DEC_REFTOTAL;
#endif
    /* If Py_TRACE_REFS, _Py_NewReference re-added self to the object
     * chain, so no more to do there.
     * If COUNT_ALLOCS, the original decref bumped tp_frees, and
     * _Py_NewReference bumped tp_allocs:  both of those need to be
     * undone.
     */
#ifdef COUNT_ALLOCS
    --Py_TYPE(self)->tp_frees;
    --Py_TYPE(self)->tp_allocs;
#endif
#endif
}
static PyMemberDef __pyx_Generator_memberlist[] = {
    {(char *) "gi_running",
#if PY_VERSION_HEX >= 0x02060000
     T_BOOL,
#else
     T_BYTE,
#endif
     offsetof(__pyx_GeneratorObject, is_running),
     READONLY,
     NULL},
    {0, 0, 0, 0, 0}
};
static PyMethodDef __pyx_Generator_methods[] = {
    {__Pyx_NAMESTR("send"), (PyCFunction) __Pyx_Generator_Send, METH_O, 0},
    {__Pyx_NAMESTR("throw"), (PyCFunction) __Pyx_Generator_Throw, METH_VARARGS, 0},
    {__Pyx_NAMESTR("close"), (PyCFunction) __Pyx_Generator_Close, METH_NOARGS, 0},
    {0, 0, 0, 0}
};
static PyTypeObject __pyx_GeneratorType_type = {
    PyVarObject_HEAD_INIT(0, 0)
    __Pyx_NAMESTR("generator"),         /*tp_name*/
    sizeof(__pyx_GeneratorObject),      /*tp_basicsize*/
    0,                                  /*tp_itemsize*/
    (destructor) __Pyx_Generator_dealloc,/*tp_dealloc*/
    0,                                  /*tp_print*/
    0,                                  /*tp_getattr*/
    0,                                  /*tp_setattr*/
#if PY_MAJOR_VERSION < 3
    0,                                  /*tp_compare*/
#else
    0,                                  /*reserved*/
#endif
    0,                                   /*tp_repr*/
    0,                                  /*tp_as_number*/
    0,                                  /*tp_as_sequence*/
    0,                                  /*tp_as_mapping*/
    0,                                  /*tp_hash*/
    0,                                  /*tp_call*/
    0,                                  /*tp_str*/
    0,                                  /*tp_getattro*/
    0,                                  /*tp_setattro*/
    0,                                  /*tp_as_buffer*/
    Py_TPFLAGS_DEFAULT | Py_TPFLAGS_HAVE_GC | Py_TPFLAGS_HAVE_FINALIZE, /* tp_flags*/
    0,                                  /*tp_doc*/
    (traverseproc) __Pyx_Generator_traverse,   /*tp_traverse*/
    0,                                  /*tp_clear*/
    0,                                  /*tp_richcompare*/
    offsetof(__pyx_GeneratorObject, gi_weakreflist), /* tp_weaklistoffse */
    0,                                  /*tp_iter*/
    (iternextfunc) __Pyx_Generator_Next, /*tp_iternext*/
    __pyx_Generator_methods,            /*tp_methods*/
    __pyx_Generator_memberlist,         /*tp_members*/
    0,                                  /*tp_getset*/
    0,                                  /*tp_base*/
    0,                                  /*tp_dict*/
    0,                                  /*tp_descr_get*/
    0,                                  /*tp_descr_set*/
    0,                                  /*tp_dictoffset*/
    0,                                  /*tp_init*/
    0,                                  /*tp_alloc*/
    0,                                  /*tp_new*/
    0,                                  /*tp_free*/
    0,                                  /*tp_is_gc*/
    0,                                  /*tp_bases*/
    0,                                  /*tp_mro*/
    0,                                  /*tp_cache*/
    0,                                  /*tp_subclasses*/
    0,                                  /*tp_weaklist*/
#if PY_VERSION_HEX >= 0x030400a1
    0,                                  /*tp_del*/
#else
    __Pyx_Generator_del,                /*tp_del*/
#endif
#if PY_VERSION_HEX >= 0x02060000
    0,                                  /*tp_version_tag*/
#endif
#if PY_VERSION_HEX >= 0x030400a1
    __Pyx_Generator_del,                /*tp_finalize*/
#endif
};
static __pyx_GeneratorObject *__Pyx_Generator_New(__pyx_generator_body_t body,
                                                  PyObject *closure) {
    __pyx_GeneratorObject *gen =
        PyObject_GC_New(__pyx_GeneratorObject, &__pyx_GeneratorType_type);
    if (gen == NULL)
        return NULL;
    gen->body = body;
    gen->closure = closure;
    Py_XINCREF(closure);
    gen->is_running = 0;
    gen->resume_label = 0;
    gen->classobj = NULL;
    gen->yieldfrom = NULL;
    gen->exc_type = NULL;
    gen->exc_value = NULL;
    gen->exc_traceback = NULL;
    gen->gi_weakreflist = NULL;
    PyObject_GC_Track(gen);
    return gen;
}
static int __pyx_Generator_init(void) {
    __pyx_GeneratorType_type.tp_getattro = PyObject_GenericGetAttr;
    __pyx_GeneratorType_type.tp_iter = PyObject_SelfIter;
    __pyx_GeneratorType = __Pyx_FetchCommonType(&__pyx_GeneratorType_type);
    if (__pyx_GeneratorType == NULL) {
        return -1;
    }
    return 0;
}

static int __Pyx_check_binary_version(void) {
    char ctversion[4], rtversion[4];
    PyOS_snprintf(ctversion, 4, "%d.%d", PY_MAJOR_VERSION, PY_MINOR_VERSION);
    PyOS_snprintf(rtversion, 4, "%s", Py_GetVersion());
    if (ctversion[0] != rtversion[0] || ctversion[2] != rtversion[2]) {
        char message[200];
        PyOS_snprintf(message, sizeof(message),
                      "compiletime version %s of module '%.100s' "
                      "does not match runtime version %s",
                      ctversion, __Pyx_MODULE_NAME, rtversion);
        #if PY_VERSION_HEX < 0x02050000
        return PyErr_Warn(NULL, message);
        #else
        return PyErr_WarnEx(NULL, message, 1);
        #endif
    }
    return 0;
}

static int __pyx_bisect_code_objects(__Pyx_CodeObjectCacheEntry* entries, int count, int code_line) {
    int start = 0, mid = 0, end = count - 1;
    if (end >= 0 && code_line > entries[end].code_line) {
        return count;
    }
    while (start < end) {
        mid = (start + end) / 2;
        if (code_line < entries[mid].code_line) {
            end = mid;
        } else if (code_line > entries[mid].code_line) {
             start = mid + 1;
        } else {
            return mid;
        }
    }
    if (code_line <= entries[mid].code_line) {
        return mid;
    } else {
        return mid + 1;
    }
}
static PyCodeObject *__pyx_find_code_object(int code_line) {
    PyCodeObject* code_object;
    int pos;
    if (unlikely(!code_line) || unlikely(!__pyx_code_cache.entries)) {
        return NULL;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if (unlikely(pos >= __pyx_code_cache.count) || unlikely(__pyx_code_cache.entries[pos].code_line != code_line)) {
        return NULL;
    }
    code_object = __pyx_code_cache.entries[pos].code_object;
    Py_INCREF(code_object);
    return code_object;
}
static void __pyx_insert_code_object(int code_line, PyCodeObject* code_object) {
    int pos, i;
    __Pyx_CodeObjectCacheEntry* entries = __pyx_code_cache.entries;
    if (unlikely(!code_line)) {
        return;
    }
    if (unlikely(!entries)) {
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Malloc(64*sizeof(__Pyx_CodeObjectCacheEntry));
        if (likely(entries)) {
            __pyx_code_cache.entries = entries;
            __pyx_code_cache.max_count = 64;
            __pyx_code_cache.count = 1;
            entries[0].code_line = code_line;
            entries[0].code_object = code_object;
            Py_INCREF(code_object);
        }
        return;
    }
    pos = __pyx_bisect_code_objects(__pyx_code_cache.entries, __pyx_code_cache.count, code_line);
    if ((pos < __pyx_code_cache.count) && unlikely(__pyx_code_cache.entries[pos].code_line == code_line)) {
        PyCodeObject* tmp = entries[pos].code_object;
        entries[pos].code_object = code_object;
        Py_DECREF(tmp);
        return;
    }
    if (__pyx_code_cache.count == __pyx_code_cache.max_count) {
        int new_max = __pyx_code_cache.max_count + 64;
        entries = (__Pyx_CodeObjectCacheEntry*)PyMem_Realloc(
            __pyx_code_cache.entries, (size_t)new_max*sizeof(__Pyx_CodeObjectCacheEntry));
        if (unlikely(!entries)) {
            return;
        }
        __pyx_code_cache.entries = entries;
        __pyx_code_cache.max_count = new_max;
    }
    for (i=__pyx_code_cache.count; i>pos; i--) {
        entries[i] = entries[i-1];
    }
    entries[pos].code_line = code_line;
    entries[pos].code_object = code_object;
    __pyx_code_cache.count++;
    Py_INCREF(code_object);
}

#include "compile.h"
#include "frameobject.h"
#include "traceback.h"
static PyCodeObject* __Pyx_CreateCodeObjectForTraceback(
            const char *funcname, int c_line,
            int py_line, const char *filename) {
    PyCodeObject *py_code = 0;
    PyObject *py_srcfile = 0;
    PyObject *py_funcname = 0;
    #if PY_MAJOR_VERSION < 3
    py_srcfile = PyString_FromString(filename);
    #else
    py_srcfile = PyUnicode_FromString(filename);
    #endif
    if (!py_srcfile) goto bad;
    if (c_line) {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        #else
        py_funcname = PyUnicode_FromFormat( "%s (%s:%d)", funcname, __pyx_cfilenm, c_line);
        #endif
    }
    else {
        #if PY_MAJOR_VERSION < 3
        py_funcname = PyString_FromString(funcname);
        #else
        py_funcname = PyUnicode_FromString(funcname);
        #endif
    }
    if (!py_funcname) goto bad;
    py_code = __Pyx_PyCode_New(
        0,            /*int argcount,*/
        0,            /*int kwonlyargcount,*/
        0,            /*int nlocals,*/
        0,            /*int stacksize,*/
        0,            /*int flags,*/
        __pyx_empty_bytes, /*PyObject *code,*/
        __pyx_empty_tuple, /*PyObject *consts,*/
        __pyx_empty_tuple, /*PyObject *names,*/
        __pyx_empty_tuple, /*PyObject *varnames,*/
        __pyx_empty_tuple, /*PyObject *freevars,*/
        __pyx_empty_tuple, /*PyObject *cellvars,*/
        py_srcfile,   /*PyObject *filename,*/
        py_funcname,  /*PyObject *name,*/
        py_line,      /*int firstlineno,*/
        __pyx_empty_bytes  /*PyObject *lnotab*/
    );
    Py_DECREF(py_srcfile);
    Py_DECREF(py_funcname);
    return py_code;
bad:
    Py_XDECREF(py_srcfile);
    Py_XDECREF(py_funcname);
    return NULL;
}
static void __Pyx_AddTraceback(const char *funcname, int c_line,
                               int py_line, const char *filename) {
    PyCodeObject *py_code = 0;
    PyObject *py_globals = 0;
    PyFrameObject *py_frame = 0;
    py_code = __pyx_find_code_object(c_line ? c_line : py_line);
    if (!py_code) {
        py_code = __Pyx_CreateCodeObjectForTraceback(
            funcname, c_line, py_line, filename);
        if (!py_code) goto bad;
        __pyx_insert_code_object(c_line ? c_line : py_line, py_code);
    }
    py_globals = PyModule_GetDict(__pyx_m);
    if (!py_globals) goto bad;
    py_frame = PyFrame_New(
        PyThreadState_GET(), /*PyThreadState *tstate,*/
        py_code,             /*PyCodeObject *code,*/
        py_globals,          /*PyObject *globals,*/
        0                    /*PyObject *locals*/
    );
    if (!py_frame) goto bad;
    py_frame->f_lineno = py_line;
    PyTraceBack_Here(py_frame);
bad:
    Py_XDECREF(py_code);
    Py_XDECREF(py_frame);
}

static int __Pyx_InitStrings(__Pyx_StringTabEntry *t) {
    while (t->p) {
        #if PY_MAJOR_VERSION < 3
        if (t->is_unicode) {
            *t->p = PyUnicode_DecodeUTF8(t->s, t->n - 1, NULL);
        } else if (t->intern) {
            *t->p = PyString_InternFromString(t->s);
        } else {
            *t->p = PyString_FromStringAndSize(t->s, t->n - 1);
        }
        #else  /* Python 3+ has unicode identifiers */
        if (t->is_unicode | t->is_str) {
            if (t->intern) {
                *t->p = PyUnicode_InternFromString(t->s);
            } else if (t->encoding) {
                *t->p = PyUnicode_Decode(t->s, t->n - 1, t->encoding, NULL);
            } else {
                *t->p = PyUnicode_FromStringAndSize(t->s, t->n - 1);
            }
        } else {
            *t->p = PyBytes_FromStringAndSize(t->s, t->n - 1);
        }
        #endif
        if (!*t->p)
            return -1;
        ++t;
    }
    return 0;
}

static CYTHON_INLINE PyObject* __Pyx_PyUnicode_FromString(const char* c_str) {
    return __Pyx_PyUnicode_FromStringAndSize(c_str, (Py_ssize_t)strlen(c_str));
}
static CYTHON_INLINE char* __Pyx_PyObject_AsString(PyObject* o) {
    Py_ssize_t ignore;
    return __Pyx_PyObject_AsStringAndSize(o, &ignore);
}
static CYTHON_INLINE char* __Pyx_PyObject_AsStringAndSize(PyObject* o, Py_ssize_t *length) {
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT
    if (
#if PY_MAJOR_VERSION < 3 && __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
            __Pyx_sys_getdefaultencoding_not_ascii &&
#endif
            PyUnicode_Check(o)) {
#if PY_VERSION_HEX < 0x03030000
        char* defenc_c;
        PyObject* defenc = _PyUnicode_AsDefaultEncodedString(o, NULL);
        if (!defenc) return NULL;
        defenc_c = PyBytes_AS_STRING(defenc);
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
        {
            char* end = defenc_c + PyBytes_GET_SIZE(defenc);
            char* c;
            for (c = defenc_c; c < end; c++) {
                if ((unsigned char) (*c) >= 128) {
                    PyUnicode_AsASCIIString(o);
                    return NULL;
                }
            }
        }
#endif /*__PYX_DEFAULT_STRING_ENCODING_IS_ASCII*/
        *length = PyBytes_GET_SIZE(defenc);
        return defenc_c;
#else /* PY_VERSION_HEX < 0x03030000 */
        if (PyUnicode_READY(o) == -1) return NULL;
#if __PYX_DEFAULT_STRING_ENCODING_IS_ASCII
        if (PyUnicode_IS_ASCII(o)) {
            *length = PyUnicode_GET_LENGTH(o);
            return PyUnicode_AsUTF8(o);
        } else {
            PyUnicode_AsASCIIString(o);
            return NULL;
        }
#else /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */
        return PyUnicode_AsUTF8AndSize(o, length);
#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII */
#endif /* PY_VERSION_HEX < 0x03030000 */
    } else
#endif /* __PYX_DEFAULT_STRING_ENCODING_IS_ASCII  || __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT */
#if !CYTHON_COMPILING_IN_PYPY
#if PY_VERSION_HEX >= 0x02060000
    if (PyByteArray_Check(o)) {
        *length = PyByteArray_GET_SIZE(o);
        return PyByteArray_AS_STRING(o);
    } else
#endif
#endif
    {
        char* result;
        int r = PyBytes_AsStringAndSize(o, &result, length);
        if (unlikely(r < 0)) {
            return NULL;
        } else {
            return result;
        }
    }
}
static CYTHON_INLINE int __Pyx_PyObject_IsTrue(PyObject* x) {
   int is_true = x == Py_True;
   if (is_true | (x == Py_False) | (x == Py_None)) return is_true;
   else return PyObject_IsTrue(x);
}
static CYTHON_INLINE PyObject* __Pyx_PyNumber_Int(PyObject* x) {
  PyNumberMethods *m;
  const char *name = NULL;
  PyObject *res = NULL;
#if PY_MAJOR_VERSION < 3
  if (PyInt_Check(x) || PyLong_Check(x))
#else
  if (PyLong_Check(x))
#endif
    return Py_INCREF(x), x;
  m = Py_TYPE(x)->tp_as_number;
#if PY_MAJOR_VERSION < 3
  if (m && m->nb_int) {
    name = "int";
    res = PyNumber_Int(x);
  }
  else if (m && m->nb_long) {
    name = "long";
    res = PyNumber_Long(x);
  }
#else
  if (m && m->nb_int) {
    name = "int";
    res = PyNumber_Long(x);
  }
#endif
  if (res) {
#if PY_MAJOR_VERSION < 3
    if (!PyInt_Check(res) && !PyLong_Check(res)) {
#else
    if (!PyLong_Check(res)) {
#endif
      PyErr_Format(PyExc_TypeError,
                   "__%.4s__ returned non-%.4s (type %.200s)",
                   name, name, Py_TYPE(res)->tp_name);
      Py_DECREF(res);
      return NULL;
    }
  }
  else if (!PyErr_Occurred()) {
    PyErr_SetString(PyExc_TypeError,
                    "an integer is required");
  }
  return res;
}
#if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
 #if CYTHON_USE_PYLONG_INTERNALS
  #include "longintrepr.h"
 #endif
#endif
static CYTHON_INLINE Py_ssize_t __Pyx_PyIndex_AsSsize_t(PyObject* b) {
  Py_ssize_t ival;
  PyObject *x;
#if PY_MAJOR_VERSION < 3
  if (likely(PyInt_CheckExact(b)))
      return PyInt_AS_LONG(b);
#endif
  if (likely(PyLong_CheckExact(b))) {
    #if CYTHON_COMPILING_IN_CPYTHON && PY_MAJOR_VERSION >= 3
     #if CYTHON_USE_PYLONG_INTERNALS
       switch (Py_SIZE(b)) {
       case -1: return -(sdigit)((PyLongObject*)b)->ob_digit[0];
       case  0: return 0;
       case  1: return ((PyLongObject*)b)->ob_digit[0];
       }
     #endif
    #endif
  #if PY_VERSION_HEX < 0x02060000
    return PyInt_AsSsize_t(b);
  #else
    return PyLong_AsSsize_t(b);
  #endif
  }
  x = PyNumber_Index(b);
  if (!x) return -1;
  ival = PyInt_AsSsize_t(x);
  Py_DECREF(x);
  return ival;
}
static CYTHON_INLINE PyObject * __Pyx_PyInt_FromSize_t(size_t ival) {
#if PY_VERSION_HEX < 0x02050000
   if (ival <= LONG_MAX)
       return PyInt_FromLong((long)ival);
   else {
       unsigned char *bytes = (unsigned char *) &ival;
       int one = 1; int little = (int)*(unsigned char*)&one;
       return _PyLong_FromByteArray(bytes, sizeof(size_t), little, 0);
   }
#else
   return PyInt_FromSize_t(ival);
#endif
}


#endif /* Py_PYTHON_H */
