/* ----------------------- BEGIN GENERATED CODE --------------------------- */ qc_socp * qc_quad_over_lin2socp() { /* * maps 'params' into the C socp data type * 'params' ought to contain: */ /* all local variables */ long i; /* loop index */ long *q_ptr; long *A_row_ptr, *A_col_ptr; long *G_row_ptr, *G_col_ptr; double *A_data_ptr, *G_data_ptr; long nnzA, nnzG; qc_matrix *G_csc; qc_matrix G_coo; /* allocate socp data structure */ qc_socp * data = (qc_socp *) calloc(1, sizeof(qc_socp)); if (!data) return qc_socp_free(data); /* allocate problem dimensions */ data->p = 0; data->m = 8; data->n = 4; /* allocate c vector */ data->c = (double *) calloc(data->n, sizeof(double)); if (!data->c) return qc_socp_free(data); /* allocate h vector */ data->h = (double *) calloc(data->m, sizeof(double)); if (!data->h) return qc_socp_free(data); /* allocate b vector */ data->b = NULL; /* allocate G matrix */ nnzG = + 8; data->Gx = (double *) malloc(nnzG * sizeof(double)); data->Gp = (long *) malloc(nnzG * sizeof(long)); data->Gi = (long *) malloc(nnzG * sizeof(long)); if ((!data->Gx) || (!data->Gp) || (!data->Gi)) return qc_socp_free(data); G_data_ptr = data->Gx; G_row_ptr = data->Gi; G_col_ptr = data->Gp; /* allocate A matrix */ nnzA = 0; data->Ax = NULL; data->Ap = NULL; data->Ai = NULL; A_data_ptr = data->Ax; A_row_ptr = data->Ai; A_col_ptr = data->Ap; /* allocate the cone sizes */ data->l = 3; data->nsoc = 1; data->q = (long *) malloc(data->nsoc * sizeof(long)); if(!data->q) return qc_socp_free(data); /* initialize the cone */ q_ptr = data->q; *q_ptr++ = 5; /* stuffing the objective vector */ for(i = 0; i < 1; ++i) data->c[i + 0] = 1; /* for the constraint -1*x <= 0 */ for(i = 0; i < 3; ++i) *G_row_ptr++ = i; for(i = 1; i < 4; ++i) *G_col_ptr++ = i; for(i = 0; i < 3; ++i) *G_data_ptr++ = -1; /* for the SOC constraint norm([1.0 + -1*_t0; 2.0*x]) <= 1.0 + _t0 */ for(i = 5; i < 8; ++i) *G_row_ptr++ = i; for(i = 1; i < 4; ++i) *G_col_ptr++ = i; for(i = 0; i < 3; ++i) *G_data_ptr++ = -2.0; for(i = 0; i < 1; ++i) data->h[i + 4] = 1.0; *G_row_ptr++ = 4; *G_col_ptr++ = 0; *G_data_ptr++ = 1; for(i = 0; i < 1; ++i) data->h[i + 3] = 1.0; *G_row_ptr++ = 3; *G_col_ptr++ = 0; *G_data_ptr++ = -1; /* convert G and A ptrs into a qc_matrix */ G_coo.m = data->m; G_coo.n = data->n; G_coo.nnz = nnzG; G_coo.i = data->Gi; G_coo.j = data->Gp; G_coo.v = data->Gx; /* convert the matrices to column compressed form */ G_csc = qc_compress(&G_coo); if (!G_csc) return qc_socp_free(data); /* free memory used for COO matrix, so it can be reassigned later */ free(data->Gi); free(data->Gp); free(data->Gx); /* reassign into data, pointer now owned by data */ data->Gi = G_csc->i; data->Gp = G_csc->j; data->Gx = G_csc->v; /* only free temp CSC pointer, but not its data */ free(G_csc); return data; }
/* ----------------------- BEGIN GENERATED CODE --------------------------- */ qc_socp * qc_sqrt2socp(const sqrt_params * params, const sqrt_dims * dims) { /* * maps 'params' into the C socp data type * 'params' ought to contain: */ /* all local variables */ long i; /* loop index */ long *q_ptr; long *A_row_ptr, *A_col_ptr; long *G_row_ptr, *G_col_ptr; double *A_data_ptr, *G_data_ptr; long nnzA, nnzG; qc_matrix *G_csc, *A_csc; /* possibly un-used */ qc_matrix G_coo, A_coo; /* possibly un-used */ /* allocate socp data structure */ qc_socp * data = (qc_socp *) calloc(1, sizeof(qc_socp)); if (!data) return qc_socp_free(data); /* allocate problem dimensions */ data->p = 0; data->m = 4; data->n = 2; /* allocate c vector */ data->c = (double *) calloc(data->n, sizeof(double)); if (!data->c) return qc_socp_free(data); /* allocate h vector */ data->h = (double *) calloc(data->m, sizeof(double)); if (!data->h) return qc_socp_free(data); /* allocate b vector */ data->b = NULL; /* allocate G matrix */ nnzG = + 4; data->Gx = (double *) malloc(nnzG * sizeof(double)); data->Gp = (long *) malloc(nnzG * sizeof(long)); data->Gi = (long *) malloc(nnzG * sizeof(long)); if ((!data->Gx) || (!data->Gp) || (!data->Gi)) return qc_socp_free(data); G_data_ptr = data->Gx; G_row_ptr = data->Gi; G_col_ptr = data->Gp; /* allocate A matrix */ nnzA = 0; data->Ax = NULL; data->Ap = NULL; data->Ai = NULL; A_data_ptr = data->Ax; A_row_ptr = data->Ai; A_col_ptr = data->Ap; /* allocate the cone sizes */ data->l = 1; data->nsoc = 1; data->q = (long *) malloc(data->nsoc * sizeof(long)); if(!data->q) return qc_socp_free(data); /* initialize the cone */ q_ptr = data->q; *q_ptr++ = 3; /* stuffing the objective vector */ for(i = 0; i < 1; ++i) data->c[i + 0] = -1; /* for the constraint 0 + -1*x <= 0 */ for(i = 0; i < 1; ++i) data->h[i + 0] = 0; *G_row_ptr++ = 0; *G_col_ptr++ = 1; *G_data_ptr++ = -1; /* for the SOC product constraint norm(1 + -1*x, 2.0*_t0) <= x + 1 */ *G_row_ptr++ = 3; *G_col_ptr++ = 0; *G_data_ptr++ = -2.0; for(i = 0; i < 1; ++i) data->h[3 * i + 2] = 1; *G_row_ptr++ = 2; *G_col_ptr++ = 1; *G_data_ptr++ = 1; for(i = 0; i < 1; ++i) data->h[3 * i + 1] = 1; *G_row_ptr++ = 1; *G_col_ptr++ = 1; *G_data_ptr++ = -1; /* convert G and A ptrs into a qc_matrix */ G_coo.m = data->m; G_coo.n = data->n; G_coo.nnz = nnzG; G_coo.i = data->Gi; G_coo.j = data->Gp; G_coo.v = data->Gx; /* convert the matrices to column compressed form */ G_csc = qc_compress(&G_coo); if (!G_csc) return qc_socp_free(data); /* reassign into data, pointer now owned by data */ data->Gi = G_csc->i; data->Gp = G_csc->j; data->Gx = G_csc->v; return data; }