static KKTObject* LPX_kktint(LPXObject *self) { KKTObject *kkt = KKT_New(); if (!kkt) return NULL; lpx_check_int(LP, &(kkt->kkt)); return kkt; }
static KKTObject* LPX_kkt(LPXObject *self, PyObject *args) { // Cannot get for undefined primal or dual. if (glp_get_prim_stat(LP)==GLP_UNDEF || glp_get_dual_stat(LP)==GLP_UNDEF) { PyErr_SetString(PyExc_RuntimeError, "cannot get KKT when primal or dual " "basic solution undefined"); return NULL; } // Check the Python arguments. int scaling = 0; PyObject *arg = NULL; if (!PyArg_ParseTuple(args, "|O", &arg)) return NULL; scaling = ((arg==NULL) ? 0 : PyObject_IsTrue(arg)); if (scaling == -1) return NULL; // OK, all done with those checks. Now get the KKT condition. KKTObject *kkt = KKT_New(); if (!kkt) return NULL; lpx_check_kkt(LP, scaling, &(kkt->kkt)); return kkt; }