-
Notifications
You must be signed in to change notification settings - Fork 16
Closed
Description
Description
- There is a logic error in the
termination_reason_tToStringandtermination_reason_to_stringfunctions. The case forTERMINATION_REASON_UNSPECIFIEDlacks a return statement or a break, causing it to fall through to the next case, which isFEAS_POLISH_SUCCESS. These two functions appear to be duplicated code.
Lines 198 to 218 in 4ff479e
| const char *termination_reason_to_string(termination_reason_t reason) | |
| { | |
| switch (reason) | |
| { | |
| case TERMINATION_REASON_OPTIMAL: | |
| return "OPTIMAL"; | |
| case TERMINATION_REASON_PRIMAL_INFEASIBLE: | |
| return "PRIMAL_INFEASIBLE"; | |
| case TERMINATION_REASON_DUAL_INFEASIBLE: | |
| return "DUAL_INFEASIBLE"; | |
| case TERMINATION_REASON_TIME_LIMIT: | |
| return "TIME_LIMIT"; | |
| case TERMINATION_REASON_ITERATION_LIMIT: | |
| return "ITERATION_LIMIT"; | |
| case TERMINATION_REASON_UNSPECIFIED: | |
| case TERMINATION_REASON_FEAS_POLISH_SUCCESS: | |
| return "FEAS_POLISH_SUCCESS"; | |
| default: | |
| return "UNSPECIFIED"; | |
| } | |
| } |
Lines 29 to 49 in 4ff479e
| const char *termination_reason_tToString(termination_reason_t reason) | |
| { | |
| switch (reason) | |
| { | |
| case TERMINATION_REASON_OPTIMAL: | |
| return "OPTIMAL"; | |
| case TERMINATION_REASON_PRIMAL_INFEASIBLE: | |
| return "PRIMAL_INFEASIBLE"; | |
| case TERMINATION_REASON_DUAL_INFEASIBLE: | |
| return "DUAL_INFEASIBLE"; | |
| case TERMINATION_REASON_TIME_LIMIT: | |
| return "TIME_LIMIT"; | |
| case TERMINATION_REASON_ITERATION_LIMIT: | |
| return "ITERATION_LIMIT"; | |
| case TERMINATION_REASON_UNSPECIFIED: | |
| case TERMINATION_REASON_FEAS_POLISH_SUCCESS: | |
| return "FEAS_POLISH_SUCCESS"; | |
| default: | |
| return "UNSPECIFIED"; | |
| } | |
| } |
- Missing Case in Python Bindings: The Python binding implementation is missing the case for
FEAS_POLISH_SUCCESS.
cuPDLPx/python_bindings/_core_bindings.cpp
Lines 163 to 181 in 4ff479e
static const char *status_to_str(termination_reason_t r) { switch (r) { case TERMINATION_REASON_OPTIMAL: return "OPTIMAL"; case TERMINATION_REASON_PRIMAL_INFEASIBLE: return "PRIMAL_INFEASIBLE"; case TERMINATION_REASON_DUAL_INFEASIBLE: return "DUAL_INFEASIBLE"; case TERMINATION_REASON_TIME_LIMIT: return "TIME_LIMIT"; case TERMINATION_REASON_ITERATION_LIMIT: return "ITERATION_LIMIT"; case TERMINATION_REASON_UNSPECIFIED: default: return "UNSPECIFIED"; } }
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels