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;
}
예제 #2
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;

}