Пример #1
0
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;
}
Пример #2
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;
}