Beispiel #1
0
JNIEXPORT jdouble JNICALL Java_com_starlab_component_processor_jni_JNIdissimilarity_nativeDissimilarity
  (JNIEnv *env, jobject obj, jdoubleArray samples1, jdoubleArray samples2)
{
	jboolean isCopy1;
	jboolean isCopy2;
	jdouble ret;
	jdouble * inputSamples1; 
	jdouble * inputSamples2; 
	jsize len;

	inputSamples1 = (*env)->GetDoubleArrayElements(env, samples1, &isCopy1);
	inputSamples2 = (*env)->GetDoubleArrayElements(env, samples2, &isCopy2);
	len = (*env)->GetArrayLength(env, samples1);

	ret = Dissimilarity(inputSamples1, inputSamples2, len);

	if (isCopy1 == JNI_TRUE)
	{
		(*env)->ReleaseDoubleArrayElements(env, samples1, inputSamples1, JNI_ABORT); // free without copy
	}
	if (isCopy2 == JNI_TRUE)
	{
		(*env)->ReleaseDoubleArrayElements(env, samples2, inputSamples2, JNI_ABORT); // free without copy
	}
	return ret;
}
Beispiel #2
0
/*
__declspec(dllexport) void Dissim2(double *x1, double *x2, double *res, long *nrow, long *ncol1, long *ncol2, long *coef) {
*/
void Dissim2(double *x1, double *x2, double *res, int *nrow, int *ncol1, int *ncol2, int *coef) {
   int i, j;
   int nn1, nn2;
   for (i=0;i<*ncol1;i++) {
      nn1 = i * (*nrow);
      for (j=0;j<*ncol2;j++) {
         nn2 = j * (*nrow);
         res[i + (j * *ncol1) ] = Dissimilarity(x1+nn1, x2+nn2, *nrow, *coef);
      }
   }
}
Beispiel #3
0
void Dissim(double *x, double *res, int *nrow, int *ncol, int *coef) {
   int i, j;
   int nn, nnn;
   for (i=0;i<*ncol;i++) {
      nn = i * (*nrow);
      for (j=i+1;j<*ncol;j++) {
         nnn = j * (*nrow);
         res[(i * *ncol) + j] = res[(j * *ncol) + i] = Dissimilarity(x+nn, x+nnn, *nrow, *coef);
      }
   }
}