int main(int argc, char **argv) { FILE * fp; Cone * k; Data * d; Work * w; Sol * sol; Info info = { 0 }; scs_int i; if (openFile(argc, argv, 1, DEMO_PATH, &fp) < 0) return -1; k = scs_calloc(1, sizeof(Cone)); d = scs_calloc(1, sizeof(Data)); sol = scs_calloc(1, sizeof(Sol)); if (readInData(fp, d, k) == -1) { printf("Error reading in data, aborting.\n"); return -1; } fclose(fp); scs_printf("solve once using scs\n"); scs(d, k, sol, &info); if (TEST_WARM_START) { scs_printf("solve %i times with warm-start and (if applicable) factorization caching.\n", NUM_TRIALS); /* warm starts stored in Sol */ w = scs_init(d, k, &info); if (w) { for (i = 0; i < NUM_TRIALS; i++) { /* perturb b and c */ perturbVector(d->b, d->m); perturbVector(d->c, d->n); d->stgs->warm_start = 1; d->stgs->cg_rate = 4; scs_solve(w, d, k, sol, &info); d->stgs->warm_start = 0; d->stgs->cg_rate = 2; scs_solve(w, d, k, sol, &info); } } scs_printf("finished\n"); scs_finish(w); } freeData(d, k); freeSol(sol); return 0; }
// inserts data into file // // args: offset in this file to start inserting data at // size of data to insert into this file // file descriptor of file to insert data from // returns: size of data inserted from input file // ERROR_RETURN if error u32 GenericFile::insertData(u32 insertOffset, u32 insertSize, FILE* in_fd) { // make sure file is open if(!isOpen()) return ERROR_RETURN; // move existing data to create a space for adding new data into if(!moveData(insertOffset, insertSize)) return ERROR_RETURN; // insert data at insert offset if(readInData(insertOffset, insertSize, in_fd) != insertSize) return ERROR_RETURN; return insertSize; }