33 double * bl,
double * bu,
34 double beta,
double * c){
36 int nnz = *(A->colptr + A->ncols);
37 int * acol = Wrk->
acol;
45 find_topk(w, A->ncols, gk_min(ctrl->
k, kk), w, &topk);
48 if (*A_colval == NULL){
49 *A_colval = gk_malloc(
sizeof(
float)*nnz,
"malloc *A_colval");
50 memcpy((
void *)*A_colval, (
void *)A->colval,
sizeof(
float)*nnz);
54 gk_fset(nnz, 0, A->colval);
56 gk_iset(A->ncols, 0, acol);
58 for (
int i = 0; i < topk; i ++){
62 int nj = A->colptr[j+1] - A->colptr[j];
63 for (
int k = 0; k < nj; k ++){
65 *(A->colptr[j] + k + A->colval) = *(A->colptr[j] + k + *A_colval);
70 gk_dset(A->ncols, 0, w);
71 bcsol(ctrl, A, b, w, Wrk, bl, bu, beta, c);
75 memcpy((
void *)A->colval, (
void *)*A_colval,
sizeof(
float)*nnz);
77 gk_iset(A->ncols, 1, acol);