int main(int argc, char **argv) { int num_iters; #if (NUMTESTS > 0) int i; double time; double time_per; #endif set_defaults(); setup_indexing(); load_default_data(); /* Solve problem instance for the record. */ settings.verbose = 1; num_iters = solve(); #ifndef ZERO_LIBRARY_MODE #if (NUMTESTS > 0) /* Now solve multiple problem instances for timing purposes. */ settings.verbose = 0; tic(); for (i = 0; i < NUMTESTS; i++) { solve(); } time = tocq(); printf("Timed %d solves over %.3f seconds.\n", NUMTESTS, time); time_per = time / NUMTESTS; if (time_per > 1) { printf("Actual time taken per solve: %.3g s.\n", time_per); } else if (time_per > 1e-3) { printf("Actual time taken per solve: %.3g ms.\n", 1e3*time_per); } else { printf("Actual time taken per solve: %.3g us.\n", 1e6*time_per); } #endif #endif return 0; }
JNIEXPORT jdoubleArray JNICALL Java_CVXGENController_controlSignalCVXGEN (JNIEnv * env, jobject thisObj, jdoubleArray inJNIArray){ int num_iters; #if (NUMTESTS > 0) int i; double time; double time_per; #endif set_defaults(); setup_indexing(); load_default_data(); /* Solve problem instance for the record. */ settings.verbose = 1; //Convert the Array from JNI data type to C data type jdouble *inCArray = (*env)->GetDoubleArrayElements(env, inJNIArray, NULL); if (NULL == inCArray) return NULL; jsize length = (*env)->GetArrayLength(env, inJNIArray); params.xe_0[0] = inCArray[0]; params.xe_0[1] = inCArray[1]; params.xe_0[2] = 0; params.xe_0[3] = 0; params.xe_0[4] = inCArray[4]; params.xe_0[5] = inCArray[5]; params.r[0] = inCArray[6]; params.r[1] = inCArray[7]; //printf("%f\n", inCArray[4]); TODO remove maybe //printf("%f\n", inCArray[5]); TODO remove maybe //Solve the QP num_iters = solve(); //gettting the data after solving the QP //jdouble x = *vars.x[1]; //jdouble x1 = *vars.x[2]; //jdouble u0 = *vars.u_0; //jdouble u1 = *(vars.u_0+1); jdouble u1 = vars.u_0[0]; jdouble u2= vars.u_0[1]; jdouble controlArray[] ={u1 ,u2}; //printf("%f\n", x); //printf("Hello"); /* #ifndef ZERO_LIBRARY_MODE #if (NUMTESTS > 0) /* Now solve multiple problem instances for timing purposes. */ /* settings.verbose = 0; tic(); for (i = 0; i < NUMTESTS; i++) { solve(); } time = tocq(); printf("Timed %d solves over %.3f seconds.\n", NUMTESTS, time); time_per = time / NUMTESTS; if (time_per > 1) { printf("Actual time taken per solve: %.3g s.\n", time_per); } else if (time_per > 1e-3) { printf("Actual time taken per solve: %.3g ms.\n", 1e3*time_per); } else { printf("Actual time taken per solve: %.3g us.\n", 1e6*time_per); } #endif #endif */ jdoubleArray outJNIArray = (*env)->NewDoubleArray(env, 2); // allocate if (NULL == outJNIArray) return NULL; (*env)->SetDoubleArrayRegion(env, outJNIArray, 0 , 2, controlArray); // copy return outJNIArray; }